2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ラクスAdvent Calendar 2024

Day 18

Chrome flagsに踊らされた

Last updated at Posted at 2024-12-17

こんにちは。
この記事は、ラクス Advent Calendar 2024 18日目の記事です。

例年はオフショア開発について書いているのですが、今回はChrome flagsに踊らされた話をします。

Chrome flagsとは

ブラウザ内で実験的な機能や設定を有効にするための隠しオプションです。
例えばPiPの検証やjava scriptの有効・無効を切り替えたりなど、通常の設定メニューには含まれない開発者が動作確認等で使うための機能です。

この機能を使ったことで、インシデント発生未遂事件は発生しました…。

ことの経緯

弊社製品内ではjsイベントであるunloadイベントを利用していました。
簡単に説明すると画面が閉じるときに発火するイベントです。

製品内には画面を閉じるときに親画面をリロードしたり、値を反映したりなどでかなりの量のunloadが仕込まれておりました。

さて、なぜこの話をしたかと言うと、Googleから「chromeでunloadを使えなくするやで~」といつの間にか発表されていたのです。

たまたま別件で見ていた時に気づいたメンバーがいたことで事なきを得てなんとか修正はリリースできました。
(検知する仕組みないんかいというのは置いておいて)

こちらのテストをする際に、Chrome flagsにて、unloadを無効にする設定をしたのです。

flags.png
「unloadの廃止を有効にする」って言いまわしなんなんでしょうね。
unloadを使えないようにするためにunloadの廃止を有効にしました。分かりにくい。
直感的にはdisabledにするのかなと思うんですが、enabledにするとunloadが発火しません。
ずっと同じことを言っているだけです。

ただ、この対応を巡って騒ぎが起きたのです。

リリース前のとある日…

社内チャットにて、顔面蒼白の私が一人騒いでいました。

インシデント未遂.png

unloadが直されていないバージョンですでにunloadイベントが発火していない!
= インシデントだ…(死)(予想より早く無効にされた怒り)

騒ぐ前におかしな点がないかは十分確認したつもりでした。

  • 発見したメンバーと自身のChrome flagsを確認
    • 設定値はdefaultになっているため、chromeのデフォルト(unloadはまだ有効)に従っているはず
      • この二人は開発時のテストで一度unloadをenabledに変更した
  • 修正を加えたバージョンで再現するか
    • 再現しない。なぜならもうunloadはないから
  • どの設定値にしても発生した
    • これは嘘。よくよく見たらdisabledでは発生していなかった

まだ猶予があると思って修正の加わったバージョンはリリースしていない。
とんでもない事態かも…

ただ、顧客からの問い合わせは一切ない様子。

あれ、インシデントじゃない…?

でも、defaultなのに発火しない(ユーザーは設定値変えてることもないだろうしdefaultのままのはず)
なんで…と思い、他の同僚数人に確認してもらいました。
なんと、他の同僚は設定値defaultなのに再現しません。
ついでにenabledにしてunloadが発火しなくなったのを確認して、defaultに戻してもらいました。
再現しません。
結論、全くインシデントじゃなかった。

本当になんで???????

推測

Chrome flagsのdefaultの定義って、どっかのタイミングで書き換わってる…?
もしかしてだけど、enabledのままchromeアプデされたとか何らかのトリガーで、enableddefaultになってる…?

弊社のテックブログに書かずにアドカレで書いた理由がここに詰まっているのですが、結論として明確な根拠は見つけられていません。
なのでずっとふわふわした内容になっています。

結末.png
チャットでもずっとふわふわしたまま連投してる。

教訓

Google公式ではないですがtourboxの記事で以下のように記載されていました。

しかしこれらの機能は開発中であり、安定性が保証されていないため、注意が必要です。

インターネット数十年、エンジニア数年やっているのに「ベータ版とかって想定外の不具合とかはあるものの、リリースはしてるしなんだかんだ何不自由なく使えるでしょw保険でしょw」みたいな舐めたことを考えながら過ごしていた今までの自分に喝を入れます。安定性が保証されてないんよ。

あとはdefaultという言葉、これに対する疑念の気持ちを強く持つこと、これ大事です。
有効・無効・初期設定みたいな選択肢あるなら明確に有効・無効を選ぶのが正しい。
とはいえ顧客はdefaultになってるだろうしと思うとがんじがらめではある…

締めもふわふわしたまま終わります。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?