こんにちは。
この記事は、ラクス Advent Calendar 2024 18日目の記事です。
例年はオフショア開発について書いているのですが、今回はChrome flagsに踊らされた話をします。
Chrome flagsとは
ブラウザ内で実験的な機能や設定を有効にするための隠しオプションです。
例えばPiPの検証やjava scriptの有効・無効を切り替えたりなど、通常の設定メニューには含まれない開発者が動作確認等で使うための機能です。
この機能を使ったことで、インシデント発生未遂事件は発生しました…。
ことの経緯
弊社製品内ではjsイベントであるunloadイベントを利用していました。
簡単に説明すると画面が閉じるときに発火するイベントです。
製品内には画面を閉じるときに親画面をリロードしたり、値を反映したりなどでかなりの量のunloadが仕込まれておりました。
さて、なぜこの話をしたかと言うと、Googleから「chromeでunloadを使えなくするやで~」といつの間にか発表されていたのです。
たまたま別件で見ていた時に気づいたメンバーがいたことで事なきを得てなんとか修正はリリースできました。
(検知する仕組みないんかいというのは置いておいて)
こちらのテストをする際に、Chrome flagsにて、unloadを無効にする設定をしたのです。
「unloadの廃止を有効にする」って言いまわしなんなんでしょうね。
unloadを使えないようにするためにunloadの廃止を有効にしました。分かりにくい。
直感的にはdisabled
にするのかなと思うんですが、enabled
にするとunloadが発火しません。
ずっと同じことを言っているだけです。
ただ、この対応を巡って騒ぎが起きたのです。
リリース前のとある日…
社内チャットにて、顔面蒼白の私が一人騒いでいました。
unloadが直されていないバージョンですでにunloadイベントが発火していない!
= インシデントだ…(死)(予想より早く無効にされた怒り)
騒ぐ前におかしな点がないかは十分確認したつもりでした。
- 発見したメンバーと自身のChrome flagsを確認
- 設定値は
default
になっているため、chromeのデフォルト(unloadはまだ有効)に従っているはず- この二人は開発時のテストで一度unloadを
enabled
に変更した
- この二人は開発時のテストで一度unloadを
- 設定値は
- 修正を加えたバージョンで再現するか
- 再現しない。なぜならもうunloadはないから
- どの設定値にしても発生した
- これは嘘。よくよく見たら
disabled
では発生していなかった
- これは嘘。よくよく見たら
まだ猶予があると思って修正の加わったバージョンはリリースしていない。
とんでもない事態かも…
ただ、顧客からの問い合わせは一切ない様子。
あれ、インシデントじゃない…?
でも、defaultなのに発火しない(ユーザーは設定値変えてることもないだろうしdefaultのままのはず)
なんで…と思い、他の同僚数人に確認してもらいました。
なんと、他の同僚は設定値default
なのに再現しません。
ついでにenabled
にしてunloadが発火しなくなったのを確認して、default
に戻してもらいました。
再現しません。
結論、全くインシデントじゃなかった。
本当になんで???????
推測
Chrome flagsのdefault
の定義って、どっかのタイミングで書き換わってる…?
もしかしてだけど、enabled
のままchromeアプデされたとか何らかのトリガーで、enabled
がdefault
になってる…?
弊社のテックブログに書かずにアドカレで書いた理由がここに詰まっているのですが、結論として明確な根拠は見つけられていません。
なのでずっとふわふわした内容になっています。
教訓
Google公式ではないですがtourboxの記事で以下のように記載されていました。
しかしこれらの機能は開発中であり、安定性が保証されていないため、注意が必要です。
インターネット数十年、エンジニア数年やっているのに「ベータ版とかって想定外の不具合とかはあるものの、リリースはしてるしなんだかんだ何不自由なく使えるでしょw保険でしょw」みたいな舐めたことを考えながら過ごしていた今までの自分に喝を入れます。安定性が保証されてないんよ。
あとはdefault
という言葉、これに対する疑念の気持ちを強く持つこと、これ大事です。
有効・無効・初期設定みたいな選択肢あるなら明確に有効・無効を選ぶのが正しい。
とはいえ顧客はdefault
になってるだろうしと思うとがんじがらめではある…
締めもふわふわしたまま終わります。