ユーザー エージェント文字列の変更、影響を軽減するために Chrome と Firefox が取っている戦略、およびユーザーの支援方法。
Chrome と Firefox は、数か月以内にバージョン 100 に到達します。ブラウザのバージョンの特定に依存してビジネス ロジックを実行するサイトでは、障害が発生する可能性があります。この投稿では、イベントのタイムライン、Chrome と Firefox が影響を軽減するためにとっている戦略、そして皆様が支援できることについて説明します。
ユーザー エージェント文字列
ユーザー エージェント(UA)は、サーバーがブラウザを識別できるように、ブラウザから HTTP ヘッダーで送信される文字列です。この文字列には、JavaScript で navigator.userAgent
を使用してアクセスすることもできます。通常は次のような形式です。
<browser_name>/<major_version>.<minor_version>
たとえば、この投稿を公開した時点でのブラウザの最新のリリース バージョンは次のとおりです。
- Chrome:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36
- Firefox:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:96.0) Gecko/20100101 Firefox/96.0
- Safari:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Safari/605.1.15
メジャー バージョン 100—3 桁のバージョン番号
メジャー バージョン 100 は、Chrome と Firefox にとって大きなマイルストーンです。また、バージョン番号が 2 桁から 3 桁のバージョン番号に移行することで、ウェブサイトで障害が発生する可能性があります。ウェブ デベロッパーは、カスタムコードからユーザー エージェント解析ライブラリの使用まで、さまざまな手法で文字列を解析します。解析ライブラリは、対応する処理ロジックの特定に使用できます。User-Agent やその他のバージョン レポート メカニズムでは、まもなく 3 桁のバージョン番号を報告します。
バージョン 100 のタイムライン
バージョン 100 ブラウザは、まず試験運用版(Chrome Canary、Firefox Nightly)でリリースされ、次にベータ版、そして最後に Stable チャンネルでリリースされます。
参照者 | タイムライン |
---|---|
Chrome(リリース スケジュール) | 2022 年 3 月 29 日 |
Firefox(リリース スケジュール) | 2022 年 5 月 3 日 |
3 桁のバージョン番号が問題となる理由
ブラウザが初めてバージョン 10 になったのが 12 年余り前の時点で、メジャー バージョン番号が 1 桁から 2 桁に変わったため、ユーザー エージェント解析ライブラリで多くの問題が発見されました。
単一の仕様に従わなければ、ユーザー エージェント文字列やサイト固有のユーザー エージェント解析は、ブラウザごとに形式が異なります。一部の解析ライブラリには、3 桁のメジャー バージョン番号を考慮しないハードコードされた仮定やバグが含まれている可能性があります。多くのライブラリでは、ブラウザが 2 桁のバージョン番号に移行した場合の解析ロジックが改善されているため、3 桁のマイルストーンを達成することで問題の発生は少なくなると予想されます。Chrome チームのエンジニアである Mike Taylor が、一般的な UA 解析ライブラリの調査を行いましたが、問題は発見されませんでした。現場で Chrome のテストを実施したところ、いくつかの問題が明らかになり、現在解決に取り組んでいます。
ブラウザはそれに対してどのような対策をしていますか?
Firefox と Chrome では、ウェブサイトの破損の可能性を検出するため、ブラウザの現行バージョンがメジャー バージョン 100 であると報告するテストを実施しています。これにより、報告された問題がいくつか発生していますが、そのいくつかはすでに修正されています。これらのテストは、バージョン 100 がリリースされるまで引き続き実行されます。
また、Stable チャンネルへのバージョン 100 のリリースがウェブサイトに想定以上の損害をもたらす場合に備えて、バックアップ緩和戦略も用意されています。
Chrome でのリスク軽減策
Chrome では、メジャー バージョンを 99 で固定するフラグを使用して、User-Agent 文字列のマイナー バージョン部分に実際のメジャー バージョン番号を報告します(コードはすでにリリースされています)。
ユーザー エージェント文字列で報告される Chrome のバージョンは、<major_version>.<minor_version>.<build_number>.<patch_number>
のパターンに従います。
バックアップ プランが使用されている場合、ユーザー エージェント文字列は次のようになります。
99.101.4988.0
また、Chrome ユーザー エージェント文字列のマイナー バージョンではかなり長い期間 0 が報告されたため、文字列のマイナー バージョン部分に 3 桁の値を報告しても破損しないようにするテストも実施しています。Chrome チームは、報告された問題の数と重大度に基づいて、バックアップ オプションを使用するかどうかを決定します。
Firefox の緩和策
Firefox では、障害の重要度によって戦略が異なります。Firefox にはサイト介入メカニズムがあります。Mozilla webcompat のチームは、このメカニズムを使用して Firefox の破損したウェブサイトをホットフィックスできます。Firefox の URL バーに「about:compat
」と入力すると、現在修正されている問題を確認できます。特定のドメインのメジャー バージョンが 100 でサイトが機能しない場合は、代わりにバージョン 99 を送信して修正できます。
互換性の問題が広範囲に及ぶ場合は、メジャー バージョン番号を固定できます。さまざまな戦略があり、それぞれに長所と短所があります。Mozilla では、実際のバージョン番号をマイナー バージョン番号として送信したり、文字列をそのまま固定したり、他のパラメータを使って実際のバージョン番号を送信したりできます。
ユーザー エージェント文字列を複雑にするどの戦略も、エコシステムに強い影響を与えます。これを避けるには協力しておきましょう
何かできることはないか?
Chrome と Firefox Nightly では、バージョンを今すぐ 100 として報告し、問題が発生したら報告するようにブラウザを設定できます。
メジャー バージョンを 100 として報告するように Chrome を設定する
chrome://flags/#force-major-version-to-100
に移動します。- オプションを
Enabled
に設定します。
メジャー バージョンを 100 としてレポートするように Firefox Nightly を設定する
- Firefox Nightly の [設定] メニューを開きます。
- 「Firefox 100」を検索して、[Firefox 100 User-Agent String] をオンにします。
テストとレポートの送信
- ウェブサイトの保守担当者は、Chrome と Firefox 100 を使用してウェブサイトをテストしてください。ユーザー エージェント解析コードとライブラリを確認し、3 桁のバージョン番号を処理できることを確認します。現在互換性が損なわれているパターンの一部をコンパイルしました。
- ユーザー エージェント解析ライブラリを開発する場合は、100 以上のバージョンを解析するテストを追加します。Google の初期テストでは、新しいバージョンのライブラリで正しく処理できることが示されています。ただし、ウェブには長い歴史があるため、古いバージョンの解析ライブラリがある場合は、問題を確認して最終的にアップグレードする必要があります。
- ウェブをブラウジングしているときに、メジャー バージョン 100 の問題に気付いたら、webcompat.com でレポートを提出してください。