elkurin’s blog

銀英伝はいいぞ

えるくりん月報 2024年4月号

えるくりん月報 2024年4月号

4月号です。

今月も仕事と私事についてランダムに書きます。

 

Window state の configure-sync がようやく終わった

2月号に引き続き3月号に引き続き今月まで取り組んでいたconfigure syncがようやく完了した。3回revertされ4度目の正直で離陸成功。いつの間にか影響範囲の大きい変更になってしまったが、世に放たれてから2週間経って未だbug reportはこないのでセーフ。

Reland "wayland: Support window state and insets in configure-sync model"

 

revertされた原因のテストを再現するのがかなり大変だった。最初の2回のrevertは、westonを立ち上げて外部から走らせれば落ちないもののwarning messageが出たので確認ができた。

しかし、3回目のrevertはかなりタフで、1. westonの中のターミナルからテストを実行する(外からWAYLAND_DISPLAYを指定するんじゃダメ(なんで???)), 2. DCHECKをオフにする の2条件が必要だった。どちらもバラバラでは試したんだが、この組み合わせにたどり着くまでに2日くらいかかった。

ところでwestonの中のターミナルに入力するのは至難の業で、押しても反応しないこともあれば1回押したら10文字分一気に打ち込まれたりするし、クリップボードも共有されていないので、テスト名を正しく打ち込むのが至難の業だった。

 

この問題を解決するためにやった副産物リスト

  1. そもそも既存のコードが間違っており、しかし大量のテストが壊れた挙動に準拠しているので、壊れた挙動を維持しないといけなかった。その結果ForceApplyWindowStateDoNotUse というクソが生まれた。
    なお大量のテストを治すためには既存のコードを大掃除する必要があり、それもongoing  (bug link)。
  2. frame insets がWidgetの初期化時パラメータに追加されていたが、これも嘘。そもそもX11では実装されていなくて壊れてそうだし、初期化パラメータとして登録してもウィンドウを最大化したときなどにinsetsが更新されると初期値が失われていてバグった実装だった。しかし、各特殊実装ではこのinsetsの値を自由に決めたいらしいのでGetCustomInsetsInDIP()というAPIを追加し、その中でカスタマイズする計算式をいれてもらうデザインにした。
  3. Window stateだけでなくfullscreen typeも同期しないといけなかった。やることは作業ゲーだが、テストの落ち方が意味不明で下人を突き止めるのが大変だった。
  4. 同じwindow stateが2度以上リクエストされたときに無視するという謎ハックが埋め込まれていたことで、サーバーからのリクエストといい感じ(悪い感じ)にすれ違うと壊れるバグもあった。謎ハックは今回の自分の変更で治ったので消した。
  5. Deprecatedなはずだが消すとテストが壊れるせいで残ってたコードを消した。テスト中、Popupを開くけどShowしないで走っている間違ったテストがあったので、それを直したらOKだった。
  6. スケールが変わるたびにGeometryをセットするハックを消した。これはInsetが正しく同期できてなかったから必要だったコードパーツ。
  7. GetPlatformWindowStateのAPIを全WaylandWindowでサポートした。挙動自体は変わってないが、以前はフォールバック先の関数はhard codeだったので、マシになったかな?

いろいろあったね。

Window ManagerのVersion skewテストをしたい

Lacrosの導入により、ChromeOSでもブラウザとOS(語弊あり)の間にバージョン違いが発生するようになった。今も一部のテストはバージョン違い環境で走っているが、Window Managerに関するテストは走っていない。既存のフレームワークだとできないので、新しいのをデザイン中。

今は手元でおもちゃ作成中。

外のチームを含め色んな人と議論・交渉しないといけないプロジェクトなので頑張るぞい。

Gesture Event Handleの相互干渉を解決した

3本指でスクロールするイベントのバグについて3月号でも言及したが、調査を進めるとちょっとややこしい問題が埋まっていた。

EventHandlerやEventTargeterとは、クリックなどのイベントが来たときに誰がどのようにそのイベントを解釈するか決めるシステム。このとき、イベントの処理ルールが一意に定まっていればいいが、そうでない場合はEventHandlerの登録順で決まる。ところで、スクロールのようなイベントは長いスクロールをひとつのイベントとするのではなく、短い距離のバラバラのイベントとして扱われる。つまり、ひとつの長いスクロールでも一瞬方向が変わって水平スクロール・垂直スクロールが切り替わったりすると、違うEventHandlerに吸われちゃったりする。

ベストなのはスクロールイベントをグループとして扱えるようにすることかもしれない。

今回はCaptureという、イベントをこのWindow・Widgetで回収しますと宣言する機能を使うことで、一連のスクロールを処理することができた。

Reland "TabScrubber: Set capture on scrubbing to stop overview"

その他

  • Lacros起動ロジック周りを//chromeから独立させるためにコード整理を進めている。各コンポーネンツをどこに移すかについて各所で議論が勃発する。(bug link)
  • EXPECT_CALLというテスト用メソッドは、とある関数が(何回)呼ばれるかをチェックしさらにその返り値を偽装できるやつで、Verifyしてあげるタイミングでこのチェックを完了する機能。もしVerifyしないと、想定と違うタイミングや違う理由により走ったせいで壊れていることに気づかなずテストが通るケースが生まれてしまう。しかし、このVerifyが別スレッドで走るタスクでは走っていなかったことに気づいたので直した。(bug link)
  • Policyの初期化についていっぱい調べものした。結果、Policyのコードは難しいということがわかった。ぴえん
  • スキマ時間にメモリリークをいくつか直した。
  • ほげほげほげ、ほげほげほげ(オープンソースでない仕事のためフィルター)。
  • 新卒が入ってきて、廊下ですれ違ったときにおしゃべりする人が増えて嬉しい。

マーダーミステリー自作

これが最近の人生の多くを占めている。はやめに仕事を切り上げて夜な夜なマダミス制作をしていて仕事の進捗がない。困った。

 

ちなみに今テストプレイ可能なものが2.5個くらいあって、対面でもオンラインでも出来るので、興味のある方やテストしてやってもいいぜって方は声掛けてください🙇‍♀️

今用意があるのは

  • マフィアもの。5人プレイ。
    俺が最初に作るとなったらこういうテーマになるよね。ちょうど人狼TLPTという劇団がMISSIONという犯罪者設定の公演をやっていたのにひきずられました。
  • ドラクエRPG世界観。4人プレイ。
    ドラクエとフリーレンに引きずられた。だいぶ気に入っている。
  • 合コンマダミス。6人プレイ。
    ギャグシナリオです…。シナリオ書いてるの俺だからお上品だよ。イラスト・デザイン担当の方との共同制作。

テストプレイでウケがそれなりに良かったら公開します。

T1がMSIに出場!

良かった〜〜〜〜〜〜〜〜〜〜

HLEに0-3でボコされて泣いてたら、次の週には4-0で勝った。やはり土壇場のT1。ありがとうT1。

LCK決勝もかなり内容良かったし、近年稀に見る素晴らしいBO5だった。

第二シードではあるけど,Play-inからいっぱい試合見れるわけだしもはやご褒美。T1もだんだん調子上げていくチームだから、Play-inで場数踏めるのはむしろラッキー。

 

T1 파이팅! 

祖母の家に泊まった

ばあちゃん氏、何歳になっても元気。ChromebookYoutube開いてレシピ調べて振る舞ってくれたり、麻雀の動画見たりしてる。

これはばあちゃんの新作かばん。

かあちゃんは絵も料理も上手いし、とうちゃんは精密な手術してるのに、おいらの手はどうしてこんなぶきっちょに

 

これはきれいな公園。


f:id:elkurin:20240430214634j:image

 

CHICAGOを観てきた

ミュージカル「CHICAGO」を観てきた。ロキシー天晴れ!


f:id:elkurin:20240430214502j:image

会社帰りにシアターオーブに行くのQOL高いのでオススメ。

 

いい喫茶店を発見

無限におすすめのお茶が出てくる素敵な紅茶屋さんを発見した。

maps.app.goo.gl

10分に1回のスパンで新しい紅茶がでてくるフリーフローのサービスをしている面白いお店。また行きたい。

こんな感じで、説明文と一緒に10分に一度違う紅茶がサーブされる

体調を崩した

ちょっとだけね。ぴえん。

今月のelkurin-daily-notes

今月は就業後の時間をマダミス制作に費やしていたので、daily notesサボりがちです。

今月のおもしろノート→

hackmd.io

ノート一覧

  1. Ash Test Base - HackMD

  2. Policy Update - HackMD

  3. Tab Scrubber - HackMD

  4. Policy Invalidate / Refresh - HackMD

  5. ptr* get() const { return ptr_; } - HackMD

  6. WM Gesture Handler - HackMD

  7. Multi Versioning - HackMD

  8. Test Chrome Part - HackMD

  9. WaylandTest - HackMD

  10. Security Delegate - HackMD

  11. Exo wayland server - HackMD

  12. このブログ

 

総括

  • Week1: T1が大変なことに
  • Week2: 主人公T1の帰還
  • Week3: マダミス作る面白さに気づいてしまった
  • Week4: 体調崩したけど復活した

 

今月もオツカレ!

えるくりん月報 2024年3月号

3月号です。

今年度も終わりらしい。

今月も仕事やその他のことについてランダムに書きます。

 

Damage Calculationを見直してパフォーマンスを改善した

改善、というか半年くらい前に自分が導入したシステムの副作用で悪化したPerformance Regressionをようやく直した話。

フレームの一部を切り落とすための clipping という概念がある。フレームは必ずしもウィンドウの中に収まってるとは限らず、例えばスクロール中のYoutube動画はフルの画面がひとつのフレームだが上のほうがウィンドウの上になって隠れていることがある。この時、画像全体を生成するがその一部を形に合わせて"clip"している。

この clipping をサーバー側で一括して処理したいが、root surfaceの外側にあるものはサーバー側で扱えなかったので当時クライアント側で適宜clipしてから渡していた。これを直すために、サーバー側でroot surface外のフレームをサポートできるよう、外側のフレームが起点となるように座標変換をする変更を昔行った(Out-Of-Window clip delegation、例えばCL1, CL2, CL3 のあたりがメインの変更)。

パフォーマンス改善が見られた箇所があった一方で、特定のシナリオではこの変更がJank フレームを10倍くらい増やしていた。理由は、外側にある関係のないエリアが既存のロジックでうまくサポートされておらず、毎回full damage認定になっていたこと及び、rootとサイズが違うことでSurface IDの更新+opacityが更新されていたことなどにより過負荷がかかってdropped frameが増えていた。

なので、実際に影響する範囲のみを考慮する変更を加えて修正した。→CL: Exo: Calculate output and damage rect only from effective area

なお、root surfaceの外側にフレームを表示したいこともあり、必ずしもroot surfaceの外側がclipされるわけではないので、ただ全部clipするだけでは駄目。

 

Window State と Insets を configure-sync しよう

2月号に引き続き取り組んでいる。

すでに2回landしてrevertされているが、ようやく全てを直す変更のreviewが終わったところ。

wayland: Support window state and insets in configure-sync model

  1. Insetsを直すためにwindow stateのsyncを正しくするCLを出したら、Insetsを直したCLと同じ理由でrevertされた。両方同時に存在しないと既存のテストが壊れる(既存の実装がすでに壊れているが、それをキャッチするテストはなく偶然動いている)。同時にランドする必要があり、CLがでかくなった。
  2. Insetsをsetする方法が自明ではなく4つくらいのプロトタイプを用意してどれがいいか考えた。InsetsはWindow stateが変わったことをトリガーに変わるが、Stateのリクエスト中にOnWindowStateChangedが呼ばれてそのまま新しいInsetsに対応するStateをリクエストするとre-entrancyが発生し、vizのidの順番がインクリメンタルじゃなくなってしまう可能性があるのでなんとかする必要があった。セットしたいinsetsを持ち回って全てが終わったあとにセットする方法や、各ObserverからInsetsの変更値を集積して返り値として返したものをその場でセットする方法や、セットのためのCalbackを持ち回ってそれを呼んでもらうか、いろいろ考えたのち、Insetsを事前計算して事前セットすることにした。どれにするかの判断材料として、「コードをよく分かっていない人が間違ったInsetsの処理をするコードをlandしてしまわないようなデザイン」と「複雑度をあげないデザイン」で悩んだ。特に複数プラットフォーム(wayalnd, X11, テスト用ダミープラットフォーム)全てに対して良いデザインをするのが困難だったが、保全性と簡易性のちょうどいいバランスのデザインになったと思う。

Gardener

またChromeOSのビルドを監視する週間 ChromeOS Gardener の担当が回ってきた。2ヶ月に1回回ってくるの負担が大きすぎる気がするぞい。今回も圧倒的生産性でたくさんの問題をなぎ倒した。すごい。

今回は初めてshadowがついたので少し指導したが、その後は最初からしっかり仕事こなしててすごかった。

 

その他直したバグなど

  • ブラウザがterminateした時にrelaunchリクエストを投げても特定のタイミングだとリクエストが不当に破棄されているというrace conditionのロジックを発見。直した。Lacros有史以来ずっと生きながらえていたバグっぽい
  • HitTestMaskの座標計算ミスを直したやつが再発した。と思ったが、再発ではなく昔のバージョンのOSでは壊れっぱなしなだけだった。しかし、壊れているOSでは機能をdisableしないといけなかったことを忘れていた。直した。こういうversion skew問題をちゃんと検出できるテストフレームワークを導入したい。考え中。
  • X11 platformでinsetsをセットする関数の中で勝手に値を上書きしていたので直した。が、window stateがminimizeのときを考え忘れていてrevertされた。ちゃんとtree host側でminimizeのinsetsを正しくセットするように修正した。
  • ポリシーの設定部分にバグがあることを発見した。とある機能をenableするためのpolicyが能動的にセットされていないっぽくて、他のpolicyの設定をする際に巻き込みでセットされていただけだったため、ほかの部分をいじったら壊れた。一旦直したけど、根本的な原因は要調査。
  • BrowserManager周りのtest coverageを増やしたり、Chromeへの依存を消したりなどの整理活動を引き続き行っている。Technical deptを許さない。
  • Flakyテストと出会ったらdisableするな!直せ!Part1。ShelfWebAppBrowserTestはRunUntilIdleで全てのタスクが終わるまで待つという方法でBlockしていたが、Postしていたタスクが終わってからそのコールバックが次のTaskを投げる間に一瞬のIdle時間が発生する。このときにRunUntilIdleが正しく待ってくれない。多くの場合は、Chromeに存在するいろいろなTaskが走りっぱなしでIdle状態にならないためFlakyになっていた。RunUntilIdleではなく真に待ちたいタスクへDoneコールバックを渡し呼んでもらうことで解決。
  • Flakyテストと出会ったらdisableするな!直せ!Part2。ProxyManagerTestはUnretainedのdanglingチェックによりflakyになっていた。どうやらmojoの中のどこかに、base::Unretainedで呼び先ポインタを受け渡しているコールバックが呼び終わってないらしいので、とりあえずTearDownでRunUntilIleを呼び出して直した。が、mojoの中のunretainedを探したほうがいいね。
  • 上記のパフォーマンス向上の変更の際、副作用でCrashを引き起こしてしまった。シンプルにDCHECKをCHECKにしたらたまにCrashするようになったので戻した
  • 3本指のタッチイベントの処理がおかしいバグ。一回のタッチでは一種類の挙動をしてほしいが、overviewに入るのとtabを移動するのが同時に起きてしまうことが稀にあるらしい。普通はeventのpropagationは実際にeventを消費したときに止まるべきだがそうなっていなかった。Ash側はTab移動終了時のイベントを止めることで解決。一方でLacrosについては少しrefactoringが必要。tab移動のイベントはcrosapiを通じているのでAsh側が実際にLacrosがイベントを始めたか判断するすべが現状ない。なので、本当にイベントを消費するべきときのみIPCを送るようにロジックを組み替える必要がある。WIP.

いろんなイベントで喋った

Google x UTokyoや高校向けのイベントで、キャリアトークをしたりp5jsでプログラミング指導みたいなのをやった。

いろいろな次世代アプローチ系の機会に携われるのが弊社のいいところ。

他にも社内ポスターセッションで、なぜかポスターほぼなしで弊チームプロダクトについて2時間喋り続けた。色んな人が興味持ってくれて嬉しかった。ポスターがしょぼすぎたことが逆に聞きに来てもらうきっかけになってたっぽい。ナイス。

 

教授の最終講義に行った

良かった。学生時代に聞いた講義と同じ流派のやつで懐かしかった。最終講義と言いながら教授はまだまだ元気でやる気満々だった。来年度からも他の大学に就任されるそう。いつまでも現役な歳のとり方をしたいと思った。

懇親会は懐かしい人や学生時代お世話になった方々とお話できて良かった。

 

Slay the spireのボドゲ版が面白すぎる

ずっと待っていたクラウドファンディングのやつ、アナログ版Slay the spireがついに届いた。面白すぎる。

ゲーム版をうまく再現した上でうまくリアルカードに落とし込んでいる。普通にカードゲームとしてアナログ版のほうが面白いまである。特に協力プレイがかなり面白そう。

ソロプレイでもめっちゃ満足。お家に帰ったら毎日やってる。今は一通り全キャラで安定して心臓まで倒せるようになったので、アセンションを登り始めたところ。

 

一般発売も始まったみたい。

kenbill.com

 

ファイアーエムブレムエンゲージの指輪縛りルナクラを完走した

だいぶ大変だった。詳しくはこちら

elkurin.hatenablog.com

 

マーダーミステリーにハマっている

同僚と6人対面マダミス会を開催してめっちゃ楽しい。(まだまだストックがあるので興味がある方は声かけてください)

厨二設定を全力でやれるマーダーミステリーは楽しいね。

今月通過したやつ

最近はこっそりシナリオ書いています。

 

人狼TLPTに行った

今月も人狼TLPTの公演を観に行った。人狼でマーダーミステリーをしているみたいなもんなので、マダミスや脱出ゲームが好きな人は観て損はないはず。

elkurin.hatenablog.com

また4月に犯罪者集団設定の公演があるのでみんなもレッツゴー。

oracleknights.co.jp

 

Rustの練習帳をクリアした。

www.oreilly.co.jp

あとコンパイラの構成と最適化を読んでいる。

 

今月の elkurin-daily-notes

知っておくと良さそうなTech Note→

hackmd.io

 

一覧

  1. 指輪禁止ファイアーエムブレムエンゲージ - elkurin’s blog
  2. base::OwnedRef - HackMD
  3. base::HeapArray - HackMD
  4. HaTS in Chrome - HackMD
  5. Cloud Policy - HackMD
  6. UserType and Profile - HackMD
  7. Important File Writer - HackMD
  8. Mock Time in TaskEnvironment - HackMD
  9. Unretained Dangling Pointers - HackMD
  10. String Pattern - HackMD
  11. ARC Policy - HackMD
  12. WindowShowState - HackMD
  13. Strong Alias - HackMD
  14. Mock Method - HackMD

 

総括

  • Week1: 確定申告とイベントSpeaker
  • Week2: Gardener忙しい
  • Week3: 生産性アップ
  • Week4: おやすみ週

 

 

今月もオツカレ!

指輪禁止ファイアーエムブレムエンゲージ

こんにちは。

ファイアーエムブレムは今作のエンゲージが初プレイの新米エムブレマーです。

 

今回のテーマは

ダウンロードコンテンツで遊びたい!

 

以前ルナクラでクリアした時はまだDLCが来ていなかった時で、せっかくDLCを購入したのに遊べていませんでした。

すでに指輪のみでクリアしているゲームを、有料コンテンツでより簡単にしてクリアしてもな…ということで、2周目は逆に指輪禁止でDLC腕輪のみというレギュレーションでやりました。

 


このブログはその縛りプレイの記録です。

 

レギュレーション

ルール1:紋章士の指輪禁止

DLCの腕輪だけで頑張るレギュレーションです。具体的には以下。

  1. 紋章士の指輪装備禁止(ストーリー上装備している章はエンゲージ・スキル使用禁止)
  2. 指輪紋章士由来の武器の刻印禁止
  3. 指輪紋章士のスキル継承禁止
  4. 指輪紋章士の外伝禁止
  5. その章で使用可能な指輪の数を超える腕輪装備の禁止

なお、指輪紋章士由来の指輪ガチャのみOK。

 

ルール2:1周目ルナクラで使用したキャラの使用制限

1周目と似通った戦術・キャラだと面白くないと思ったので縛りを追加。基本的には、同キャラの同じ運用を禁止、一部活躍しすぎたキャラはどんな運用でも禁止としました。例えばパネトネ・カゲツ・オルテンシアは使用禁止になっています。

詳しくはおまけに書きます。

 

 

注意:以下ネタバレを含みます。

 

最終出撃パーティ

以下、スタメンを発表します。

 

まずは2大キャリー、スタルーク・シトリニカのブロディア組(ラピスさん…)。敵をぶち殺すのが仕事。

スタルーク

役割:双璧の片翼

技%で防御力を半減する「月光」が強かった。確率発動を信用していなかったので力の高いエーティエを1周目では採用したが、最終的に技が50とかまであがるし速さもあって勇者の弓込みで4回殴れるし、技を上げる都合上クリティカルも出やすいので、かなりダメージ期待値は高かった。大体「勇者の弓」を持ち、たまに長弓、そして反撃するときは鋼の弓を持っていた。

射程を1伸ばすクロードの指輪「風神」で反撃を受けずに一方的に雑殴りできるようになり、ランダムダメージとさらに相性が良く最強になった男。

この周で1番好きになったキャラ(物語的には全然好きじゃない)。

シトリニカ

役割:双璧の片翼

サンダーを2連撃する指輪「ダイムサンダ」で無双。魔力は当然高く、技がいい感じに伸びてくれたので、命中不安もあまりなくアーマーやベルセルクなら一撃で吹っ飛ばしてくれた。常に「サンダー」を打っている。

ほとんどの章はシトリニカかスタルークがMVPを取っていた。そういや2人とも腕輪持ちじゃないんですね。

キャラとしてはエーティエと並んで最も好き。攻撃力至上主義の筆者としても大喜びな性能。

 

 

ここから双璧を支える準キャリー四天王、ジャン・ルイ・アンナ・モーヴ。ダメージも出すし、それ以外の仕事もある過労組。

ジャン

役割:中程度のダメージ・魔法タンク・杖S・守備-3

魔力お化けシトリニカに食らいついているさすがのジャンくん。個としてはセイジの方が強いがオルテンシアが居ないため杖S要員としてハイプリーストにした。25章でドロー・リザーブがかなり活きたのでハイプリーストにした悔いはない。

セネリオのエンゲージ中はレクスカリバーで、通常時はエルファイアーで順当に戦った硬派なキャラ。「理の真髄」での守備-3が地味に効くシーンが多く、改めて「竜呪」のヤバさを再認識した。

初期は囮指名も兼ねていて過労死していたが、クロエに業務委託したことで生き生きとし始めた。割とお気に入りのユニット。セネリオは腕輪の中で一番好き。

ルイ

役割:物理タンク・反撃で大ダメージばらまき

ヘクトルの「切り返し」と最も相性のいい男。タンクのくせに「囮指名」を付けることで殲滅役を果たしていたのでキャリーに名を連ねている。だいたいスレンドスピアを握ってダメージをばら撒いて、次のターンに削られた敵をみんなで刈り取っていく。

ジェネラルではなくグレートナイトとして運用。理由は単純、シグルドが封じられている今回の縛りでは足が遅いのは致命的。実際、ジェネラルとして運用した1周目では、ルイは後半ちょいお荷物になっていた。また、ジェネラルだと守備が高すぎて敵に無視されるので、グレートナイトくらいが良かった。魔防がまあまあ上がるのでトロンなら耐えれるのもポイントが高い。

アンナ

役割:魔法弓大ダメージ・応援団長・金稼ぎ

我がパーティ最高の体格を持つ幼女アンナちゃん。刻印付きの光の弓を持っても攻速落ちしない。なんでやねん

基本的に「光の弓」を装備して魔法で殴り、連携時長弓に持ち替え、稀にショートアクス+5が光る。体格の良さとクロム指輪の速さも加わって追撃が結構出るので、カミラ刻印を付けることで必殺を上げ、ダメージの底上げをはかった。弓が倒したいドラゴンナイトグリフォンナイト相手に命中がちょっと足りないのが玉に瑕。

クロムとの相性はかなり良い。あがるステータスがいいし、エンゲージ中は魔力+10が乗るので見た目以上に火力が出る。エンゲージしていないときはちょっと火力不足を感じるが、暇なら「七色の叫び+」という仕事がある。というかその役目もあり過労死気味。ついでに「一攫千金」でまあまあ金を稼いでくれた。

1周目でセイジアンナを使用していたため、今回はウォーリアー運用。当たり前だが魔法職にした方が強い。

モーヴ

役割:魔法大ダメージ・両刀タンク・再行動・杖B

器用貧乏の鏡に見えるが、ヴェロニカを持てばなんとびっくり器用富豪になった。

守備・魔防が高く速さもあるのでタンクを兼ねることができ、いい感じに体力を削ったら「血讐+」でシトリニカを凌ぐ魔攻になる。瀕死の時はエンゲージ切って「フリズスキャルヴ」を振ればいいし、ちゃんと調整していれば終盤の邪竜もワンキルできる。「限界突破」でマップ内レベル+3も強く、ヴェロニカは攻撃力不足な器用貧乏につける最適な紋章士。

魔力のほうが高いので武器は「いかづちの剣」。「炎の槍」は重いし弱いので、剣素質を取ってでも剣グリフォンになったほうがいいと思う。

基本キャリー運用なので、「契約」や「英雄召喚」は割と死んでたが、緊急時に「契約」で再行動できたのは良かった(e.g. ドロー外したときにもう1回振らせる、月光下振れの際にもう一度行動)。

なお、杖天賦持ちなので飛んでる杖Bになれるというのも評価が高い。終盤加入ながら四天王の名に相応しい幅の広さ。

 

 

 

次にタンク三銃士、ルイ・ユナカ・ゴルドマリー。ルイはキャリー入りしてしまったのでそれ以外について書く。まさに縁の下の力持ち。

ユナカ

役割:回避盾・足止め

相棒カムイがいなくなっても、己の力で回避121を出す回避盾。

新相棒であるカミラはあがるステータスが良く、回避が上がる速さに、当たりやすい魔法を防ぐ魔防、そしてHPと回避盾にマッチしている。一方で、必殺と回避が上がる武器刻印が存在せず、また「殺しの技術」もなかなか発動できないので、どうしても必殺不足からのダメージ不足に陥っていた。さすがに回避が足りず下ブレ確率もそれなりにあり、「防陣」もないので地味に体力がしんどい。だいたいいつも開幕と同時にチキの復活の石を付与し、そのあとは単独で動いた。

カミラの黒煙で1人でかなり多くの敵を足止めでき、殲滅力はないが足止め役として大活躍した。

ゴルドマリー

役割:両刀タンク・復活の石・中ダメージ

回避盾もするしアーマーっぽくも動く有能キャラ。

異形兵が男ばかりなので「溜め息」がだいたい発動しており、実質回避+20。それなりに速くてそれなりに硬いので相当なことがない限り死なないし、チキで「竜化」状態の時は無双キャラにもなりうる。もちろん「助太刀」による連携ダメージは後半に行けば行くほど馬鹿にならない。ちなみにHP満タンでないと発動しない助太刀と「命玉の加護」の相性は良い。HP・幸運の継承スキルは加入直後にノリで付けてしまったが、普通に速さ・技付けた方が良かった。撃破数は少ないものの、こいつがいなければ崩壊していたことが何度もある。かわいくていいよ。

1周目ではチェインアタックの使い方が分からず連携を軽視していたが、今回の周でその強さを学んだ。

 

 

 

そしてサポーター組、セアダス・アイビー・主人公・クロエ。ダメージはほぼ出さないが明確な役割が与えられた欠かせないユニットたち。キャラ縛りしている都合上どうしても人材不足なので、微妙なキャラたちにいかにいい仕事を配分できるかが肝心。

セアダス

役割:最も強いキャラ

こいつ以外が最強なら、そのキャラを再行動させることができるセアダスが最強ということになる。そういうこと。

雑にまあまあ速いのも偉い。こいつに壁してもらって耐えたことも何度もある。

アイビー

役割:応援団長・杖B

こちらも飛んでいるので偉いと思い採用。杖Bはレスキューが使えるかのラインなのでとっても大事。25章はレスキューがないと進軍が間に合わない。

当初は魔法Sを評価してノヴァ役として採用していたが、技も幸運も低すぎて魔法が当たらないので一時はクビになったが、「七色の叫び+」を引っ提げてめでたくスタメンに滑り込み。だいたいいつも応援を行い、必要に応じて杖を振る。また浮いてるボルガノン+3で足りないもう一押しをしてくれることもある。射程3武器は持ってても命中50%とかなのでいらん。

主人公

役割:最強の置物

神竜の結束」がOPなのでいつもシトリニカかスタルークの横にいた。当初は「七色の叫び+」にしようと考えていたが、行動前のユニットの横に並ぶ応援と行動後のユニットの横に並びたい「神竜の結束」の相性が悪いと考え断念。

ウォーリアーがいいかなー。それとも気功でチェインガードしようかなー。いやいやブレイブヒーローがいいかなー。けど今からじゃレベル5間に合わないなー。とか考えてるうちにクリアしてしまったので、職業は適当。

ただし絆を繋和ぐもの以心絆・神竜破が超強いので、終盤は活躍した。問題は絆Aがスタルーク・シトリニカと指輪の効果をキャンセルされると困る奴しかいなかったので、Lv20エンゲージができなかったこと。ちゃんとプール遊びとかしとくべきだった。

クロエ

役割:囮指名専属要員

仕事が多すぎたセネリオジャンから仕事を引き継いだ。囮指名か回復のみを行うがちがちのサポーター。もともと成長が悪く(チキ付けてたのに…)、途中から囮指名ばかりしていたためレベルもかなり低いが、それでも十二分の仕事をした。クロエに任命したのは、シンプルに飛んでる杖だったこととルイとコンビで行動するのがキャラ設定的に良かったから。

ほとんどの時ルイと共にコンビを組んで飛び回り、必要に応じてモーヴやジャンなど魔防組に付け替えられるのも汎用性が高く、専属要員を作る価値のあるインチキスキルだった。

 

 

 

最後に、あんまりうまく活躍させてあげられなかったユニットたち。

ザフィーア

あんまり固くないしあんまり力もないしあんまり速くないしあんまり命中しないウォーリアー。

勝利への意思」が発動していると命中が十分になるが、モーヴとは違い守備が低いし追撃を受ける遅さで射程も1で動きたいので体力調整が難しい。勇者の斧キャリアーとして採用したはいいものの当たらんし反撃が痛すぎる。トマホークはもちろん当たらない。基本は長弓を持ってチェインアタックをしたり、エーデルガルトの計略で足止めしたりがメインの仕事。

ちなみにザフィーアがいるのは邪竜の章の名残。エーデルガルトと絆レベル20にしていたのでそのまま使用したがあんまり強くなかった。かといって、多くの物理職適性キャラが制限されていたためエーデルガルトの付け先がおらず浮いてしまった。

ヴェイル

ノヴァ使いとしてアイビーの代わりに採用し、唯一の命中アップ刻印をつけてみたものの火力不足を感じる微妙さ。

アーマー相手も追撃込みで倒せるくらいで、その場合スレンドスピア持ちにはぶっ殺される。同じ連撃マシーンのダイムサンダと比べると、反撃を食らう射程2と食らわない射程3の差が大きかった。

結局トロンでダメージ補助をするくらいのキャラに落ち着いた。悪くは無いが微妙。

 

 

 

その他一時は使おうとしたがスタメン落ちしてメンバー。

  • ベルセルクエーティエ:力が高いんならパネトネになろうと思い、キャラが好きなのもあって育成したが力がヘタれたため断念。だが、こいつがいなければチキ外伝のクリアはだいぶ遅れていただろう。
  • パンドロ:個人スキルも優秀だしステータスもいいし使いたかったが、ジャンとの熾烈なスタメン争いの末敗北。
  • ミスティラ:スタルークが強いなら同じく確率発動スキルのミスティラも強いんじゃね?と勘違いして育て始めたが間違いだった。体格が低すぎて槍だと連撃が出ないし、力・技を上げればいいスタルークと違い、力・守備・技と必要なステータスが分散する上射程1なため確率をはずすと反撃を受けるので月光とはわけが違う。
  • ディアマンド:カゲツの代わりにならないかと思ったが全然ならなかった。力はともかく技が低すぎて「太陽」は発動しないし、個人スキルが邪魔をして回避もできない。命中+15を見て勇者の斧キャリアーとしての道を考えたし実際ザフィーアよりは強かったと思うが、ちょっと考えたのが遅く育成が間に合わなかった。最後の方の章は戦場見学を連れてラストヒットを譲る余裕はない。
  • ソドマスクラン:ステータスみて強そうと思ったもののさすがに育成コストが高すぎて断念

 

大変だったポイント

命中しない

一番きつかったのは命中

命中を継承できる腕輪はなく、また武器刻印も命中をあがるものは1つしかないしそれも+10にとどまる。命中が確保できない斧キャラや技低めのキャラの存在感がかなり薄かった。

また必殺も同様に足りないので必殺ビルドはほぼ無理。出たらラッキーくらいに思うしかない。

継承スキルが、指輪は命中や回避などの計算後の値が20あがる系だったのに対し、腕輪は力・技+2のように素のステータスが上がる系なのが影響しているし、腕輪の刻印が軒並み威力アップばっかりなのがしょーもない。

 

回避盾がキツめ

カムイがいないのでシーフがきつかった。やはり霧・防陣がなく、ユナカの場合さらに「殺しの技術」が出ない分ダメージ期待値がだいぶ下がる。命中と同様回避を上げにくいこともあり、不安の残る耐久性だった。

なお、踏ん張りや待ち伏せがないので地雷も難しい。自分のターンに真面目に倒していくことになるので、進軍が結構大変だった。

 

育成できない

指輪外伝縛りのため育成フィールドがなく、かと言って腕輪外伝を後半まで残しておく余裕はなかったので、結果育成できるキャラが限られて後半加入組をそのまま採用せざるを得なかった。クランやディアマンドを育成出来なくて残念。

この縛りはなくても良かったかもしれない。

 

ボスを倒す火力が足りない

指輪の時はボスを倒すのはかなり楽で、ボスまでたどり着けばだいたいワンキルできていた。ベレトの4人再行動やカムイの竜呪、あとダメージ系のエンゲージスキルが多かったためである。腕輪軍はエーデルガルトとセネリオ以外ダメージエンゲージスキルがなく、ステータスダウンもセネリオの守備-3しかない。ダメージの通りが悪く、適当に進軍するとボスをワンキルできずに死ぬのが難易度を上げていた。

 

インチキがない

ベレトの女神の舞、ミカヤワープ、ルキナの絆盾、シグルドの再行動などのインチキがないので真面目にやっていくゲームになっていた。唯一の救いは囮指名。

筆者は割と適当にプレイして、やらかしたらエンゲージや杖でなんとかしがちで、流星群やワープライナのような遠いところを無理やり倒す技がなかったり(サンダーストームは命中がゴミすぎ)、シグルドで移動力爆上げしたり、絆盾で耐えたりすることが多かった。2周目の真面目なプレイもなかなか良かった。

 

おまけ

1周目エース禁止ルールの詳細

自分が1周目に使用した編成は以下。

  • 主人公+ベレト:職ベレト
  • パネトネ+アイク:職ウォーリアー
  • エーティエ+リン:職スナイパー
  • アンバー:職ハルバーディア
  • カゲツ+マルス:職ソードマスター
  • オルテンシア+ミカヤ:職スレイプニル
  • フォガート+エイリーク:職クピードー
  • アンナ+セリカ:職セイジ
  • ユナカ+カムイ:職シーフ
  • ルイ+シグルド:職ジェネラル
  • モーヴ:職グリフォンナイト
  • ヴェイル:職グリフォンナイト
  • ジャン+ルキナ:職マスターモンク
  • セアダス:職セアダス

 

基本的にここに書かれたキャラは制限をかけます。が、違う戦い方をしようというのが今回のゴールのため、同キャラでも全く違う運用ならOKとした。

例えば、セイジだったアンナをウォーリアーとして運用するのはOK。

ただし以下の活躍しすぎたキャラは禁止。

  • カゲツ:何をやっても強すぎ。ほぼすべての物理職の上位互換
  • パネトネ:カゲツに唯一勝てる部分がある物理職。幅は狭いがさすがに強すぎた。ラスボスを1人で1ターンキルするな。
  • オルテンシア:速くて飛んでる杖S魔法職はダメ。同格の強さのキャラは他いるものの唯一無二性能のため禁止。

注釈:カムイユナカは強すぎじゃないんかいと思うかもしれませんが、初心者エムブレマーである筆者は回避盾の強さが1周目では分からなかったので、カムイが居ないこのルールでは使用可能キャラになっています。


なお、セアダスだけは俺の甘えのため解禁しました。一応新しいアタッカーをより活躍させるためだからね…

 

25章攻略法

最難関25章を例にどんな感じで使ったか書きます。最終章は拍子抜けだからね…

 

25章は分断された状態で始まってボス前の中央広場で合流というステージ。今回はミカヤが禁止なためインチキワープで片方に集結はできません。真面目に戦力を分割して進軍していく。

 

左側

  • 大将 ユナカ
  • 副官 ゴルドマリー
  • エース シトリニカ
  • 応援団長 アイビー
  • ヒーラー ヴェイル
  • 邪竜隊長 主人公
  • サポート セアダス

セアダスがいるし邪竜特攻持ちの主人公指輪がある左の方が楽になりがち。こちらはシーフに追いつくスピードで進軍して、右側の扉が開く前にユナカを中央広場にワープさせることで中央の敵を右に流さないようにする。

邪竜は絆・神竜破2回で倒せる。2回絆バージョンが必要な場合はレスキューやワープで位置調整をしてあげると良い。

右側

  • 大将 ルイ
  • 副官 クロエ
  • エース スタルーク
  • 応援団長 アンナ
  • ヒーラー ジャン
  • 邪竜隊長 モーヴ
  • 足止め係 ザフィーア

こちらのほうがみんなの力で頑張る感じ。四天王が3人いるが一撃でベシベシ倒せる感じではない。右側の方が進軍が厳しいので左側に中央の敵は引き受けてもらおう。進軍が間に合わない場合はレスキューを使って連れてこよう。25章を突破すればあとは楽勝な26章しかないので杖はバンバンつかっていい。

スタルークは応援込みでボスに2回攻撃できる速さにしておくこと。順調に育っていれば多分素で足りるはず。

右側の関門であるドローマンはサイレスとドローを使って気合で止めた。なのでドローを唯一使えるジャンが右側におり、契約込みで2回外したらサイレスチャレンジをしよう。杖の射程が短く敵に身を晒すことになるので、危ない場合はここでもレスキュー。

ザフィーアの腕輪でエーデルガルトが出たタイミングでエンゲージを切り計略を固定して、炎上+柱で進軍を止めながら前から削っていく。無限増援のセイジはトロン使いなので追撃がなくルイなら1匹まで耐えれる。2匹攻撃圏内に入るときは、セイジのみ攻撃範囲にはいる形でモーヴを配置し囮指名すると良い。

 

 

最後、ユナカを殿にしながらエンゲージをバンバン切って前にいるやつを全部倒す。場所が狭いのでパズルが大変。ちゃんと全面攻撃をしかける前のターンから配置に気をつける。

次のターンに一気にボスを倒す。

まずジャンのディザスターで守備を-3しておくと良い。すると乱数なしでスタルーク一撃で1回落とせるので、レスキューとかでなんとかボスを攻撃できる場所まで移動させてから2回またはヴェロニカ込みで3回殴ればゴール。余った人員でシーフを倒してお宝も頂戴する。

えるくりん月報 2024年2月号

2月はカスでした。

Bubble Clippingと俺のストレス値大爆発

1月号でも書いたBubble Clippingのプロジェクトが"終わった"と共に関連で今まで溜まっていたストレスがついに爆発した。何を書いても攻撃的な発言になってしまいそうなので、何も言うまい。

よく頑張った。

 

Window State と Insets を configure-sync しよう

Configure-SyncとはChromium Wayland上でサーバーとクライアントの間でstateを頑張って同期するためのシステム。

Waylandでは、サーバー側が認識しているウィンドウサイズを"configure"メッセージで送り、それを元にクライアント側が新しいframeをつくって"acknowledge"することで両者間のサイズを同期している。Ack後に来る次のbufferは同期されたやつと保証される。

逆にクライアントからサイズをrequestすることもできる。この場合、クライアントがサーバーに要求する->その要求を元にサーバーから"configure"が送られてくる->クライアントが"acknowledge"するという流れになる。サーバー側がクライアントの要求を拒否して、異なるサイズを送り返してくることもあることに注意。

Lacrosではサイズだけでなくウィンドウの位置やスケール、ウィンドウの状態(= Window State)などについても同期したい。

ウィンドウの位置をsyncするパッチを出したらLinux Waylandでテストが落ちてrevertされた。Window Stateの同期を先にやらないと現状のコード的にだめだったので、今はWindow StateのConfigure syncからサポートするパッチをレビュー中。

 

Browser Manager

ほぼ趣味でやってるみたいなプロジェクト。

LacrosバイナリをロードするのがBrowserLoader、プロセスを起動するのがBrowserLauncherで、BrowserManagerはこれら込みで全体を管理している。このあたりが自分の管轄になりつつあるのでいろいろ遊んでる。

例えば、Lacrosのバイナリのロード部分で、違うバージョン・チャンネルを使いたいなどの理由によりリロードが入ることがあるが、これが以前のロード中に割り込んでくると地雷を踏むので、それを直している。がReviewerが忙しいようで一向にReviewが進まない。お疲れ様です。

他にも無駄なDevice Ownership待機を消したり、今まで必要になったタイミングでやっていたPolicyの準備を可能になった(Primary Profileができた)タイミングに動かしたり、プロセス起動に必要な各種処理を並列にしたりした。

P0を起こしまくっているLacrosの起動のTest Coverageを増やしたいと自分は昔から主張していて、インターンさんの貢献もあり、ようやくテストを書けるくらいに実装が良くなってきた。

 

その他直したバグ

  • HitTestMaskの座標が間違っていたため、Google DocsなどのデカいquadがWindowの外にいるとその分の座標変換に失敗しTargetがおかしくなっていた。座標変換を正しくするパッチを出したら今度は他のプロダクトが壊れたが、それは向こうが直してくれた。感謝。
  • タブレットモードから出たときに設定ページの上の方にある最大化とか閉じるとかのボタンが出てこないバグ。これはimmersive fullscreenをON/OFFするAPIが一部意図せず無視されていた。TestやPerformanceの目的のため、immersive fullscreenをON/OFFするAPIは現在の状態とON/OFFが同じなら無視しているが、それだと非同期処理に対応できない(e.g. ONにするAPIを呼ぶ->非同期的にONにする処理をやってる最中にOFFにするAPIを呼ぶ のときまだ現状はONになっていないので現在の状態と同じと判定され2個目の呼び出しが無視される)。それを直すために、直近のrequestの状態を記憶する変更を以前入れたんだが、これが一部の変なパスからのimmersive fullscreen requestをキャッシュしていなかったので壊れた。
  • 古いバージョンをサポートするために書いていた座標変換系の諸々を消した。もともいろんなものが絶対座標で送られていたが、親からの相対座乗を座標をLacrosから送る形式に変えた。

 

ストレスがヤバすぎて5kg太った

マジで困ってる。

 

アダム・ランバートのライブに行った

人生初ライブ。

世間的にはクイーンのライブと言われているが、アメリカン・アイドルをリアルタイムで見ていた世代である自分にとってはアダム・ランバートのライブ。さすがの歌唱力で圧巻だった。

遠すぎてなんも見えん

 

ダンガンロンパV3をクリアした

シリーズの中で一番好きだった。

賢いキャラ・議論回すのがうまいキャラが多くて、今までならお馬鹿な賑やかし枠になりそうなキャラもしっかり考えて議論に参加していて、裁判が超面白かった。

主人公も1,2,3の中で圧倒的に好き。サイコパス天才探偵。

最初から最後まで王馬を信じて戦い抜いた。一片の悔いなし。

2章の死体でたときはガチギレしてた。

 

クリアしてからはFEエンゲージ2周目を再開した。厳しい縛りでやっていて今25章なので、またクリアしたら記事を書こうかな。

 

マーダーミステリーが面白い

ハマりつつある。15人+GMとかいうてんやわんやのマダミスを最近やった。

シナリオ作る側にも興味ある。

 

良かった飯

美味しいスコーンと紅茶。昼はティーサロンで夜はバーらしい。おすすめ。

maps.app.goo.gl

BITTERS END CLUB

 

久々の銀英伝カフェ

久々にイゼルローンフォートレスカフェに着任した。その場のノリでヤンの肖像画買っちゃった。

偶像崇拝を嫌うヤンへのささやかな嫌がらせ。

 

確定申告

してない。まずい。

 

Rust練習帳をすすめてる。

CommandLine Toolをつくってる。

www.oreilly.co.jp

 

今月のT1

強い。

何が強いってFakerのレーンスタッツがエグい。Chovyを抜いてLCK最強のスタッツしてる。

T1全体としても低順位のチーム相手だと怪しいが、強いチーム相手にはビシッと勝つのでOK。GenGも絶好調だし来るGenG戦が楽しみ。

しかしDDoS攻撃によりLCKが妨げられていて悲しい。やめてけろ。

 

今月の elkurin-daily-notes

今月はちょいちょいストレスでサボった。そういうときもあるね。

今月のベスト役に立つノート→

hackmd.io

 

一覧:

  1. Protected Sequence Synchronizer - HackMD
  2. GPU同期 in Chrome - HackMD
  3. Layer / window correspondence in Chromium - HackMD
  4. ScopedPathOverride - HackMD
  5. Shadow on Linux Chrome - HackMD
  6. Barrier Closure - HackMD
  7. ScopedClearLastError in base - HackMD
  8. State transitions in base - HackMD
  9. base::Environment in base - HackMD
  10. std::optional の operator - HackMD
  11. Overview session in ChromeOS - HackMD
  12. WaylandFrame and WaylandFrameManager - HackMD
  13. When we produce new frame - HackMD
  14. このブログ

総括

今月はのんびり働いた。

  • Week 1:Bubble Clippingプロジェクトに全力
  • Week 2:ストレス爆発
  • Week 3:だんだん復活
  • Week 4:やりたい仕事を好きにやってる

 

今月もオツカレ!

えるくりん月報 2024年1月号

記念すべきえるくりん月報初号です。

仕事や私事についてランダムに書きます。

 

インターンホスト終了

ホストしていたインターン氏が期間を終了した。

ChromeOSのブラウザ(Lacros)のプロセス立ち上げのコードを直してもらった。難しいコードベースと厳しいReviewerの中とても頑張ってくれた。コード

base::CommandLine の API も追加してくれた。今までのAPIだとCommandLineオブジェクトにオプション列を追加することができず、一個一個Appendするしかなかったが、これからはCommandLine同士が合体できるようになった。

Bubble Clipping 躍進

Bubble View はWindowを構成するviewの一つで、例えばタブにマウスをhoverすると見えるPreviewとかがBubble Viewにあたる。

使っているOSによってはこのBubble Viewがウィンドウの外にあると切れちゃう。

omnibox popup が切れちゃってる (正確にはbubbleではない)

これを直したい。crbug.com/1280332 。片手で数え切れないシニアエンジニアを巻き込んだめっちゃ大変なプロジェクトだったが、ようやくゴールが見えてきた。とりあえず自分の方針が採用されたので手を動かし中。かなりクリーンなデザインになってきたと思う。プロトタイプ

Shipしたら記事をかいてもいいかも。

Pinned Fullscreen を Lacros wayland上 で統合

現在 Fullscreen モードの実装ががちゃがちゃでバグだらけだしTestを書けないので根本的に直している途中。

ChromeのFullscreenは pinned, trusted pinned, immersive, plain の4種類あって、他のWindow state (e.g. maximized, snapped, minimized) とは別に、特殊な処理として書かれている。他のWindow stateと同じ感じに統合したいよね。

Fullscreenのタイプの一つ Pinned Fullscreen を PlatformWindowState で他のWindow stateと同じように統合したところ。コード

Immersive Fullscreenは現在進行中

Gardener

ChromeOSのビルドを監視する週間 ChromeOS Gardener の担当が回ってきた。ChromeOS Gardener のお仕事は Chrome側で使われるChromeOSのバージョンとChromeOSと一緒にShipされるAshLacrosのバージョンをdailyで更新して、統合時にコンパイルやテストが壊れたり、その他インフラなど何らかの理由でうまく行かなかったら直すこと。

担当中に問題を20個以上解決した。偉い。

パイセンにも褒めてもらった。

 

その他直したバグ

  • 「Windowの最小化→もとに戻す」 をやると下に変な空白ができたり、Windowサイズが半分になったりするバグ。Windowの境界線1px分が最小化すると消える実装になっており、Layerのサイズは境界の有無によって変更されているが、contents自体は変わっていないためSurface id が更新されておらず、surface をUpdateしないレアケースを踏んでいた。
  • Google Docをめっちゃスクロールした状態だとタブをDragできないバグ。HitTestMaskの座標が間違っていたため、Google DocsなどのデカいquadがWindowの外にいるとその分の座標変換に失敗しTargetがおかしくなっていた。普通のEvent targettingはうまくいくが、Tabを取り外して違うWindowを作る際に座標空間が変わるので壊れた。
  • base::CommandLineにオプション列を追加するコードが先頭の値だけ無視されていたバグ。インターン氏のbase::CommandLine の API のおかげでなおった
  • いくつかのテストがtimeoutになって失敗しているバグ。結論ただtimeoutを延長した。
  • Locked Fullscreenになるとき何故かImmersive Fullscreenを経由してしまうバグ。上記のPined Fullscreen仕事でダイレクトに正しいstateへ飛べるようになったためなおった。
  • WIP: Tablet Modeに入る前のImemrsive状態がTablet Modeから出たときに復元されないバグ。シンプルにLacrosでは実装されていない。実装中。

 

仕事の年間評価をもらった

今年のテーマは影響力を上げていくこと。がんばるぞい

 

トマムに行ってスキーした

elkurin.hatenablog.com

 

ダンガンロンパ2をクリアした

面白かった。何を書いてもネタバレになるので何も書けない。

2章のクロを動機から全て的中した。5章が本当にすごい。ダンガンロンパという世界観をフルに活かしていて最高。

 

ダンガンロンパV3を進行中、2章までクリアしたけど個人的にはダンガンロンパ2以上に最高だと思う。

 

TFTでダイヤモンドに到達した

最初はジンクス・アニー・セナの低コス構成をやってて、プラチナでスタックしたときにエズリアル進行を極め、そのあとは比較的すんなりダイヤモンドまで来た。エズ・ケイト、ビッグショット4エズ、ディスコTF、センチネルアーリと4コス構成ばっかり使って、どうしても金がなさそうなときだけカントリーサミーラやEDMジャックスに行ってた。

 

組み合わせ論ゼミでクソ計算をやった

スキーから帰ってきてすぐGardener担当だったしゼミ担当だった。

今回は自然数の分割の組み合わせを母関数を使いながら解析する方法を学んだ。

 

Mind the Gap でお話した

弊社が度々行っている中高生へCSについて伝える会に登壇した。女子中高生と言わず全中高生にお話したいがどうしても女子向けイベントの方が圧倒的に多いがち。

events.google.com

 

友達のアカペラ全国大会に応援しに行った

歌っていいなあ。

 

葬送のフリーレン

好き。1級試験編始まってアガってる。

 

最近全然本読んでない

反省。今月はこのペースに戻したい。

elkurin.hatenablog.com

 

今月のT1

GenGに1-2で負けた以外はKT, HLEにも勝って順調。Faker vs BDDのレーン戦・小規模戦が見応えあった。ミッドを勝たせる動きがT1全体としてうまい。Zeusはほっといても最強。

優勝グッズももらってウキウキ。かばんにキーホルダーつけてる。

 

今月の elkurin-daily-notes

今月のベストノート→

hackmd.io

一覧:

  1. 2023年のまとめ - elkurin’s blog
  2. What is Viz? - HackMD
  3. buildされないheader fileをincludeしてもコンパイルが通るのはなぜ? - HackMD
  4. テンプレート勉強会Part2 - HackMD
  5. std::in_place_type - HackMD
  6. Various Bubble Views - HackMD
  7. PGO最適化 - HackMD
  8. Chromiumでtestをdisableする方法 - HackMD
  9. WebUI - HackMD
  10. Surface content rect - HackMD
  11. スキー旅行にいってきた話 - elkurin’s blog
  12. How to Build Property Tree - HackMD
  13. Common Ancestor Clip - HackMD
  14. Display size on viz - HackMD
  15. このブログ

 

総括

  • Week 1:正月休み
  • Week 2:インターン最終週
  • Week 3:スキー
  • Week 4:Gardener
  • Week 5:Bubble Clipping ソロ Hackathon

 

今月もオツカレ!

スキー旅行にいってきた話

スキーに行きたすぎる父と、運動しなさすぎる母と、旅行がめんどくさすぎる自分の3人で北海道のトマムにスキーしにいった3泊4日の旅行記

 

www.hoshinoresorts.com

 

1日目 14年ぶりのスキー

朝8時の飛行機に乗れと言われ「嫌すぎ」と抗議した結果朝9時の飛行機になったがそれでも7時家出と早すぎる初日。

 

そんな頑張っている僕を迎えてくれた機内食

イギリス帰りの飛行機とは格の違う美味しいごはんが出てきた。

 

のんびりご飯をたべていたらあっという間に千歳空港に着弾。

雪だー!

 

前日は飛行機が飛ばなかったレベルの大雪だったそうだが、僕が到着した日は快晴で気分の良い天気だった。

 

 

今回泊まるホテルは空港から電車で1時間ちょっと。

電車に乗ると車内放送で「イランカラプテ」と挨拶された。アイヌ語で「こんにちは」という意味だそう。JR北海道ではアイヌ語の車内放送を導入したらしい。なんかいいね。

 

最初は窓から雪景色を楽しんでいたが、数分もしたら爆睡し、またしてもあっという間に目的地へ到着。

 

これから4日間滞在する 星野リゾート リゾナーレトマム へ到着

hoshinoresorts.com

 

久々の家族旅行ということでウッキウキの父がスイートルームを予約してくれた。

 

 

 

到着して一息したい俺 vs 早速スキーしたい父

勝ったのは…

 

 

父でした!

ということで、初日から早速スキー場へ。

 

まずは初級者コースに挑戦。

実に14年ぶりのスキーは怖すぎた。なんで坂をすべるんや?という謎を解決できないまま1日を終えました。

 

坂を滑るのは怖いけど、景色はキレイ。

初日は遅入りだったので2時間ほど滑ったら帰宅した。

 

 

1日目の飯は鉄板焼。美味しかった。

 

 

2日目 スキーを思い出し飽きた

2日目はホテル朝食のビュッフェからスタート。

そして自分は仕事があったので午前中はWFH (Work From Hokkaido)。両親は朝から2人で滑ってた。元気だな。

 

自分は午後から参戦。時間があったので、今日は少し遠くのコースまで足を運んでみることに。

だんだんスキーの記憶を思い出してきてスイスイ滑れるようになってきた。

 

しかし、だんだん慣れてきて、夕方頃には「スキーって同じことの繰り返しでは?」という気持ちになってきた。

 

 

その日の夜はレストランを予約していなかったので、お楽しみエリアをうろうろすることに。

この日はいろいろ行って書くことがたくさんあるので、最後の番外編で詳しく書きます。

 

3日目 中級者コースに行ってみたら楽しかった

さて、初級者コースも飽きてきたので今日は早速中級者コースへチャレンジ。

トマムスキー場は初級・中級・上級の3段階。

 

さっそく中級者コースしかない山頂にのぼってみた。

たかいたかーい!

 

ここは霧氷が見れるエリア。

霧氷とは、氷点下の霧が枝にくっついてできる氷のこと。枝にくっついてる白いやつは雪が積もってるのではなくて氷。

氷をまとった木がとってもキレイ。

 

そして中級者コースは、さすがに傾斜が結構きつくなってて、特にきついコースはめっちゃ怖かった。ただ他に滑っている人が少ないのでかなり悠々と滑れて良かった。慣れてくるとむしろ人がいないぶん接触事故が起きず安心して滑れる側面もある。

 

家族3人でリフトに乗り、父と自分は中級者コースへ、母は初級者コースへ別れ、それぞれ楽しんできてまたリフトで合流するという感じで遊んだ。


午後になり晴れてきた頃には、中級者コースもだいぶ慣れてきて、そろそろ調子乗り出す危ない初心者くらいになってきた。

 

樹木の中を通るルートもある。

上級者はコースがないところを自由に滑っていいプランがあったが、さすがに無理すぎるので、初心者でも森の中の滑走を楽しめる整備されたコースに行った。

 

2日目飽きかけていたが、3日目は朝から夕方までずっと楽しく滑ってた。

 

 

最終日の夜ということで、この日は星野リゾートトマムイチオシの高級レストラン OTTO SETTE へ。

maps.app.goo.gl

評価の高さに違わぬ美味しさ。

 

 

メインに添えられていたキャベツは人生で食った野菜の中で一番うまかった。

 

他にもメニューが非常に凝っていて、特にペアリングがとても良かった。

ワインペアリングだけでなく、ノンアルペアリングという異色のサービスもあり、自分はそれを楽しんだ。ノンアルカクテルや、気の利いた紅茶、北海道の果物を使ったジュースに、白玉が浮いているデザートのようなものまで、いろんなものが出てきた。

ペアリングはスタッフのみなさんで一緒に考えているそうで、その中には2日目に行ったワインバーのマスターも参加していたそう。

デザートには、トマム牛乳のジェラートにいろんなソースをかけて楽しむというアクティビティもあった。映え〜

 

4日目 〜さよなら北海道〜

ついに最終日。

最終日の朝は絶景の窓際個室から和食ビュッフェ。

 

最終日は10時過ぎまでしかないということでひっきりなしに滑っていたら写真を取り忘れてなにもない。

 

そのかわりに、トマム旅行中お世話になったスキー滑走記録アプリ Slopes の画面。

スイスイスイ〜

 

一緒に滑ってる人とデータを紐付けることができ、どういうルートを同時にとっていたのかとかが地図上を動くアイコンと共に振り返られるので、楽しい。

スキーオタクのエンジニアが10年間個人で開発したアプリとのこと。

友達とスキーに行く予定のある人はぜひ。

play.google.com

 

スキー旅行はここまで。

ばいばい北海道ノ

 

番外編 2日目の夜

まず向かったのはいろんなお店が立ち並ぶホタルストリートへ。

 

 

北海道のグラスワインをちょっとずつ楽しめるワインバーが印象的だった。

日本のワインは製造数が少なくてとてもレア。

自分自身はワインを嗜まないが、バーに鎮座していた店員さんが熱くワインについて語ってくださったのは、紅茶好きとしてはかなりシンパシーを覚えた。

ワイン好きの両親は嬉しそうだったし、楽しい場所だった。

 

他にもお団子屋さんで和菓子を食べたり、全然暖かくないこたつに座ってみたりした。

 



 

 

ホタルストリートをあとにし、次の目的地へ

 

 

 

ついたのはアイスビレッジ

あたり見渡す限り氷。すべての建造物が氷でできていた。

 

 

氷のゲートに…

 

氷のシアターに…

 

 

氷の教会に…

 

氷のスーパー

 

 

もちろん屋台も氷

 

 

氷のバーでは…

 

氷の器にお酒やノンアルコールドリンクが出てきた。

ストレートのウイルキーを頼んだのに、これじゃあロックじゃないですか!

 

 

氷のラーメン屋も…

器は氷…と思いきや雪。メニューや机・椅子は氷。

 

 

ラーメンができるまでの待ち時間は氷の滑り台で遊んだ。

 

 

あとやっぱり寒いところでは焼きマシュマロ

 

 

すべての屋台を回ったあとは、氷の世界に少し後ろ髪を引かれながら、有名建築物・水の教会へ。

十字を発見

 

氷の教会と違って、水の教会はちゃんと中には入れます。

凍っていない時期だと、窓から見える水に十字架がうつって、面白い景色になるそうだが、ゆっきゆきのカッチカチなので何も見えない。でもライトアップしているだけでいい雰囲気。

 

 

お楽しみ時間はここまで。ばいばい!

 

 

2023年のまとめ

今年もオツカレ!

というわけで、2023年を月ごとに振り返っていきたいと思います。

各月に仕事と私事をひとつずつあげていきます。

1月

仕事:ChromeOSのTooltipをサーバーサイドに統合した

今月のCL数10。

2022年の終わりから取り組んでいたプロジェクトが完了した。初めての大きめな wayland / UI系のタスクだったので大変だったがちょっと一人前に近づいた気がする。

私事:ファイアーエムブレムという神ゲーに出会った

人の勧めでファイアーエムブレムの最新作エンゲージをやった。めっちゃ面白かった。

最初はハードクラシックでやり、その後ルナクラ、そして今は指輪縛りルナクラを走っていて邪竜の章で躓いてから3か月くらい経った。

相棒のエーティエちゃん

2月

仕事:仕事中に見つけたバグを自分で直すようになった

今月のCL数16。

いままで仕事中に見つけたバグや技術的負債は報告だけして誰か直してくれないかな~ってスタイルだったが、少し仕事に慣れて余裕が出てきたので自力でなんとかしていくことにした。しかし、サイドタスクとメインタスクの時間配分がむずかしくて、メインの仕事がなかなか進まない問題に悩むようになった。

私事:レイオフに備えLinkedInをまじめに始めた

そろそろ日本にレイオフの波がくるということで、今まで幽霊部員だったLinkedInのプロフィールなどを埋め空いてるポジションを眺めたりなど具体的なアクションの他に、レイオフされても問題ないように精神攻撃耐性をつけた。

最後の晩餐(仮)



3月

仕事:レイオフが日本に降臨

今月のCL数5。

自分はレイオフを食らわなかったものの何人か身近な方がレイオフを食らったり、同期がチームメイトのレイオフに悩んでいるのを見てどんよりしていた。

また、2月にレイオフされても問題ないようなメンタルに整えた結果、逆にレイオフされなくてあれ???ってなってしまい、マジで仕事しなかった。5CLのうちの3つは昔のCherry-pickなので、実質2CLしか submitしていない。

私事:仕事との向き合い方を見直した結果ピアノを弾き始めた

かなり会社に強い忠誠心をもって働いていたタイプだったが会社にも一部の同僚にも失望してしまい、このまま仕事一筋でいいのか?って考え始めた。

その結果、会社のためではなく、自分のために、そして信頼・尊敬している同僚のために頑張るということで落ち着いた。仕事全力なのは変わらないがモチベーションがちょっと変わったので、自分の勉強の時間を増やしたり、自分が得る知識が多そうなエリアの仕事を優先しようというマインドになった。

あと、自分の時間ってことでなんかピアノを再開した(けどしばらくしてやっぱりやめた)。

ピアノスタジオまでの道にあるライトアップ

4月

仕事:初めてのグラフィックス仕事で苦戦した

今月のCL数11。

難しい仕事をくれってTLにお願いしたらAnimationのグラフィックスのプロジェクトをもらったが難しくてわけわからんかった。5月まで含め2か月ほどずっとコード読んで実験しての繰り返しで何も生み出さなかった(CL数11はすべてサイドタスク)。シニアエンジニアにおんぶにだっこだったがなんとかinvestigationをやり切った。

Technovation Girlsという中高生向けの開発ハッカソンでボランティアとしてチーム付きTAをしていたが、めでたく担当していたチームが世界大会のセミファイナリストに選ばれた。

私事:紅茶アドバイザーになった

自分の勉強の時間を大事にしよう運動Part1。

いつも趣味で楽しんでいる紅茶について、一回基礎から勉強してみようと思い適当な資格を取ってみた。試験自体はかなり簡単だったが、その過程で本を何冊が読んで知見が広がった。

また普通救命講習を受けて救命技能認定証をもらったり、Courseraの機械学習のコースを受けたり(翌月修了)、毎朝10分ランニングを始めたり(翌月終了)した。

イベントとしては、母の誕生日にインターコンチに泊まってGUCCIという有名ブランドのレストランで誕生日ディナーをした。

GUCCIオステリア

5月

仕事:メインとサイドの仕事をいい感じにこなせるようになってきた

今月のCL数16。

メインのタスクは4月から引き続きAnimation。調べもの系の仕事なので、サブタスクとしてChromeバイナリのマウント付近のロジックを書き直したり、他のチームから助けを求められたUIのバグを直すなどした。

ほかにも、STEP教育コースのTAをしたり、Mind the Gapという中高生向けの講演会のスピーカーを担当したりと、趣味で教育関係の仕事を引き受けていた。

私事:elkurin-daily-notes を始めた

github.com

自分の勉強の時間を大事にしよう運動Part2。

毎日Chromiumのコードを読んだりC++などCS系のものを読んで、学んだことをノートにまとめるという1日1ブログ活動を始めた。今も続いており2023年の間に176日目まで到達した。書いているものはすべてその場で勉強したもので、すでに持っている知識を披露しているわけではないので、一部間違いが含まれていたりTODOを残しっぱなしだったりとTech blogとしては雑だが、自分の勉強という意味ではこれ以上ないほど役立っていると思う。実際 daily noteを始めてからかなり実力があがっている気がする。

またベテランエンジニアを巻き込んでChromiumのコードを読む会を発足した。ベテランはすごい。

 

MSIには触れません。

久々のTLPT観戦

6月

仕事:頑張って取り組んだプロトタイプが吹き飛んだ

今月のCL数28。

4月からメインで取り組んでいたAnimationの仕事がひと段落を迎える。プロトタイプまで用意したがなんやかんやで実際に直すCLはほかの人がやることになったので成果としてはほぼ無になった。(正直不満はあるが仕方ないのでこれ以上は書きません)

かなり勉強になったので良し。

私事:脱出ゲームと日本酒にはまった

あまり仕事での同僚とは外で遊ばないようにしていたが、別によくね?と思うようになり遊び始めた。その一環で脱出ゲームに誘われ見事にはまった。それ以後月1くらいで脱出ゲームに行っている。また日本酒についても仲のいい同僚と会社の近くで飲むようになり、それまでも好きだったが恵比寿で飲んだが美味すぎて日本酒にはまった。

また、電車の中で技術本を読むようになった。結構続いている。

紫八咫が美味い

7月

仕事:ちょっと一人立ちしてグラフィックスの仕事ができるようになった

今月のCL数28。

Animationの仕事が失踪した後また新たに難しいタスクをくれと頼んでもらった仕事を始めた。この3か月で培った知識のおかげでまともな仕事ができたと思う。

また、同僚にヘルプを求められることが増え積極的に取り組んでいたらPeer bonusをたくさんもらうようになった。お金よりrecognitionが嬉しい。

私事:FF16がやりたすぎて急遽帰省した

FF16の体験プレイの動画を見ていたらあまりに面白そうだったので、PS5がある実家に弾丸帰省した。4泊滞在しほぼずっとFF16をやっていた。面白かった。ついでに誕生日を家族に祝ってもらった。ラッキー。

誕生日当日は糖質制限中な自分を気遣ってもらい焼き肉ケーキを食べた。

エストサイドストーリーを最前列観劇

8月

仕事:ブラウザが起動しない緊急バグをとりあえずアサインされるようになった

今月のCL数16。

Chrome Binaryのローディング周りの仕事をしていた影響か、ブラウザ(Lacros)が起動しないという緊急度の高いバグが全部自分に飛んでくるようになった。エスパー力が鍛えられたし、同僚から信頼されるようになった気がしてうれしかった。

またインターンのco-hostが始まった。メインのホストは超ベテランなので私はおまけくらいの気持ちだったが、超ベテランすぎて忙しそうだったので自分もかなりコミットすることになった。教えるのは好きなので大歓迎。

私事:T1が復活した

Fakerが手の故障から復帰しT1が復活した。FakerがいないときのバラバラのT1は見ていて苦しかった分、王の帰還がめっちゃアガった。T1はここからやで~~

また、ホテル雅叙園に泊まってみた。テーマパークみたいでいいホテルだった。

原初火球という変な展覧会

9月

仕事:デカいプロジェクトBubble Clippingが始まった。

今月のCL数19。

未だに取り組んでいるBubble Clippingプロジェクトが始まった。話自体は8月から受けていたが、先月はプロジェクトのBlockerに取り組んでいたのでこの月から本格的に始める。しかしマジで原因を突き止めるのに時間がかかり、結局直し方が固まったのは11月のことになる。

私事:コロった

ついにコロナに感染した。熱も40度弱まであがり、のどが痛すぎて唾液を飲み込むことすら無理だった。入院するほどではなかったのでセーフだが、インターンさんにだいぶ迷惑をかけた。申し訳ない…

このタイミングで体調管理について考え、elkurin-daily-notes の頻度を毎日投稿から平日毎日投稿に下げた。

コロナでリスケしたアナスタシア

10月

仕事:自分でプロジェクトを生み出せるようになってきた

今月のCL数38。

まだ大したインパクトのものではないが、問題を見つけた時に根本的な解決策をパッと用意して提案し自分で直すというフローが確立されてきた。マネージャーからよく find the design opportunity と言われているやつ。daily noteをいっぱい書いているおかげかドキュメントを書くハードルがかなり下がっており、思いついたことをすぐに提案できるようになったことも大きいと思う。

また翌月にやってくるインターンのプロジェクトの構想を練るなどした。

私事:ジャックオランタンを作った

我が家では恒例行事となっているジャックオランタン作りを今年もやった。ハロウィンは毎年神戸に帰省している。


f:id:elkurin:20231231203022j:image

11月

仕事:2回目のインターンホストが始まった

今月のCL数19。

去年もインターンのホストをしたが、去年はco-hostにもらったプロジェクトでco-hostにおんぶにだっこながらのホストだったのに対し、今年は自分がバスの運転手だったのでドキドキ。まだ終わっていないが楽しいし結構いい感じだと思う。

また、技術的負債を返すのが趣味になってきた。

私事:T1がWCSで優勝した!

Yeahhhhhh!!!!

自分は2019年からのT1ファンで黄金時代は歴史としてしか知らないので、優勝する瞬間を目の当たりにできたことが感動。

2021年にDWGに2-3で負けて準決勝敗退したときは、もうこれ以上の好機はないだろうな…と内心思っていたが2022年最強になって帰ってき、WCSでJDGに勝った時は優勝きちゃーーーーと舞い上がってしまったら決勝で負けてしまい、それでも来年こそは勝てると応援したいたさなかの2023Summer。

Fakerが怪我でキャリア初となる休息をとり、その間の大崩れを前に今年は無理や…と思っていたら、Fakerの復活と共になぜかT1のほかのメンバーも復活し、それでもKTとGenGは強すぎるで…と思っていたらKT相手に2回の神BO5を経て準優勝をもぎ取り、不安定なところはあるけどT1のWCSまでの巻き返しを信じてWCSを楽しみにしていたら、期待に応えるかのようにBLGに圧勝。特に2ゲーム目は不利から集団戦とマクロで巻き返すという、今期のT1ができなかったことをいとも簡単にやってのけた。続くLNGはJDGとも互角な競技力がある強豪だったが、春の再来ダブルマークスマンを突然引っ張り出しなんと3-0と圧勝。さらにはおそらく多くの人が絶対王者だと予想していたJDGに対しても今年ベストバウトを繰り広げながら筋肉で勝ち俺大歓喜。特にGumayusiが今までの借りを返すぜと言わんばかりにGALA、Rulerを1v1で倒し勝ち上がってくれたのがめっちゃうれしかった。ウッキウキ。

迎える決勝を前に、去年の業を知っているT1ファンは世界各地でごみ拾い運動を行い、それを見ていたLoLのGODS=T1が微笑んでくれ我々に優勝をプレゼントしてくれた。最高。おめでとう!目指せ2連覇!

T1決勝戦前にお祈りしにいった

12月

仕事:もっとproactiveにリードして恐れずに意見を言おう

今月のCL数26。

1年の振り返りの意味もありシニアエンジニアになるのに足りていないことについてフィードバックを受けた。どうしても自信がないとだんまりになってしまうところを突かれ、もっと議論中リードしようといわれた。また、ミーティングをどんどん突っ込んで仕事相手と話そうと言われた。自分は1週間後くらいにミーティングをセットしてそれまでめちゃくちゃ準備したくなる傾向にあるが、それだと遅いってことで、恐れずにどんどん入れていくことにした。来年から意識して頑張っていこうと思う。

CL数についてはReviewerがいないのでSubmitはされていないが、作ったCLとしては+10くらいある。手は結構動くようになってきたと思う。

 

また半年間受けてきたプレゼン力・コミュニケーション力のコースを修了し、成果が良かったので最終スピーチに推薦された(が、家族とスキーのイベントにかぶってしまったため辞退)。

私事:ボドゲ・マダミス会の頻度があがった

自分の家やほかの人の家やオンラインでボドゲ・マダミスなどをやるようになった。楽しい。なお最近はTFTにハマって現在エメラルドまで来た。年末年始の間にもうちょっと上がりたい。

あと、クリスマスマーケットに行ったり箱根の温泉旅館に泊まったりした。楽しかった。

今年はちゃんと会社のパーティーにも参加した

 

今年の総括

かなり学んだ有意義な1年だったと思う。

技術方面の力もあがって仕事内容もかなり難化した。マルチタスクもこなせるようになり、いろんなものに手を出していたらCL数も激増した(2022年134CLs -> 2023年247CLs)。他にも紅茶や観劇、ゲームなど、このまとめブログでは書ききれない様々なコンテンツに真面目に向き合って満足感がある。

精神的な意味でもいろいろ成長があったと思う。仕事もプライベートもマインドセットが大きく変わった。

来年も全力で頑張っていきたい。