Chrome がブラウザの新機能をテストする仕組み
Chrome のバリエーションや Chrome フィールド トライアル、社内用コードネーム「Chrome Finch」をご存じかもしれません。
これらはすべて同じもの、つまり Chrome ブラウザの新機能や変更をテストするメカニズム、または ChromeOS(Chromebook で実行される Chrome オペレーティング システム)に対する名称です。
Chrome のバリエーションの用途
Chrome のバリエーションを使用すると、新機能を有効にしたり、機能を無効にしたり、一部のユーザーを対象に機能の変更を試したりできます。
Chrome のすべての機能が Chrome のバリエーションのメカニズムを使用して導入されているわけではありません。ただし、変更に特に注意する必要がある場合や、変更がパフォーマンスに予期しない影響を及ぼすリスクがある場合は、Chrome チームが Chrome のバリエーションを使用できます。「変更」とは、Chrome コードのパフォーマンスの向上、ブラウザの外観や機能の更新、場合によっては JavaScript API の変更を意味することがあります。
Chrome のバリエーションは、変更や更新に関する仮説の検証にも使用できます。たとえば、Chrome のバリエーション グループの一部のユーザーに対して、ユーザーの実際のネットワーク状況に対して Chrome を高速化するために QUIC ネットワーク プロトコル パラメータの調整を試みました。
Chrome のバリエーションに遭遇するもう 1 つの領域は、Chrome のオリジン トライアルを使用している場合です。デフォルトでは、有効なトライアル トークンを提供するすべてのページでオリジン トライアル機能が有効になっていますが、機能の有効化を制御するために Chrome のバリエーションが使用される場合もあります。つまり、有効なトライアル トークンを提供するページにアクセスしても、一部のユーザーはオリジン トライアル機能を使用できない場合があります。オリジン トライアル機能を有効にする対象となるユーザーの割合に関する情報は、各オリジン トライアルのドキュメントと最新情報に記載されています。
Chrome のバリエーションの仕組み
パソコンやモバイルでは 30 分ごと、または Chrome を起動するたびに、ブラウザは Chrome のバックエンドに対して、Chrome のバリエーション構成ファイルの取得をリクエストします。これはバリエーション シードと呼ばれます。つまり、Chrome のバリエーション シードを提供するための専用サーバーがあるということです。Chrome はサーバーに対して HTTPS リクエストを行い、サーバーはデルタ圧縮のシードで応答します。
デバイス上の Chrome が Chrome のバリエーション バックエンドにアクセスしてシードファイルを取得する際、Chrome のバージョンと実行されているオペレーティング システムに関する情報も提供されます。Chrome のバリエーションのバックエンドから返されたファイルは、機能の有効化、機能の無効化、機能のバリエーションの指定に使用されます。
Chrome では、シードファイルのデータとローカルに保存されているランダム化シードを使用して、ブラウザをパターン グループにランダムに割り当てます。つまり、ランダム化シードを Chrome のバリエーション バックエンドのシードファイルと組み合わせることで、一部のユーザーについてブラウザの機能を有効または無効にできます。各パターン グループは、デバイスのブラウザによって記録されます。
機能のロールアウトと Chrome チャンネル
Chrome のバリエーションの最も重要な用途の 1 つは、一定の割合の Chrome クライアントに対して段階的に変更や新機能を追加することです。これは、何十億ものユーザーがいて、複数のプラットフォームに何千種類ものデバイスがあり、何百万ものアプリやウェブサイトで何十もの言語を使用している Chrome のような複雑なアプリケーションにとって非常に重要です。
Chrome Canary、Dev、Beta での使用やテストから貴重なフィードバックを得ることができます。Chrome のバリエーションを使用すると、これらのリリース チャンネル内の機能を有効または無効にできます。ただし、これらのチャネルは主にデベロッパーやその他のスペシャリストによって使用されます。Chrome Stable ユーザーは Chrome の操作方法が異なり、操作もはるかに多いため、常に Stable チャンネルで検証する必要があります。これにより、通常のブラウザ使用で発生した問題をすべて解消できます。Chrome のエンジニアは、実際のユーザーが変更や新機能にどのように反応するか、大規模に常に予測できるわけではありません。
Chrome のバリエーションは、これをサポートする重要なメカニズムです。Chrome Stable の使用状況と指標を確認でき、機能の有効化または無効化ができます。Chrome Stable での変更の影響を測定することで、トレードオフが複雑な場合でも、可能な限り最良の機能を提供し、より優れたブラウザを構築できます。
Chrome のエンジニアが Chrome のバリエーションを使用する状況
Chrome で Chrome のバリエーションが必要になる主な理由は 3 つあります。
新機能を有効にする
Chrome のバリエーションを使用して新機能の有効化を制御する方法は、なんらかの方法でリスクが高い場合や、パフォーマンスに影響する可能性がある場合に特に便利です。
Chrome のバリエーションは、新機能を一部のユーザーに提供するためのものです。これにより、Chrome のエンジニアはパフォーマンスの違いを確認したり、バリエーション グループからの他の種類のフィードバックを確認したりできます。
機能を無効にする
Chrome のバリエーションは、機能を無効にする安全メカニズムとして使用できますが、このようなケースはめったに発生しません。
たとえば、新しいネットワーク機能がサービス拒否攻撃を受ける可能性があります。Chrome のバリエーションを使用すると、このような機能をすばやく無効にできます。Chrome のバリエーションの設定は 30 分ごとにダウンロードされ、Chrome を再起動するたびに有効になります。一方、Chrome を更新して新しいバージョンが数十億人のユーザーに適用されるまで待つと、かなり時間がかかります。
機能の変更を試す
最後に、Chrome のバリエーションを使用して、変更と更新を検証できます。たとえば、Chrome オフライン Dino ゲームの難易度を微調整すれば、やり取りがもっと楽しくなります。
Chrome のバリエーションは、新機能の長期的な影響を調べるためにも使用できます。これは、Chrome のバリエーション メカニズムを使用して、少数のユーザー(1% 以下)に対して機能の使用を抑制します。ホールドバック グループは、時間の経過とともにのみ見られる変更や副作用をチェックするのに役立ちます。
ホールドバック グループは、ユーザー インターフェースの変更で特に重要になります。ユーザーは、新機能のときは操作する可能性が高く、長期的には動作が変わる可能性があります。
たとえば、Chrome で写真選択ツールをリリースしましたが、結果を比較するためにこの機能を一部のユーザーが一時的に利用できなくなっていました。新しい Android 写真選択ツールを多くのユーザーにリリースしたところ、当初は、グループがウェブ上で共有する画像の数が大幅に増加しました。しかし、ホールドバックの変動があった 6 か月間では、使用量の増加が大幅に減少しました。これは、新しい写真選択ツールが利用可能になったことにより、ファイル入力要素に accept 属性を追加することが推奨され、すべてのユーザーのエクスペリエンスが向上したためでした。
Chrome のバリエーションは検証にどのように使用されますか?
Chrome の機能とパフォーマンスを改善するための設定が有効(chrome://settings/syncSetup?search=improve
)になっている場合、Chrome はユーザー指標分析(UMA)というメカニズムを使用して指標を自動的にモニタリングし、Chrome バックエンドに送信します。Chrome の匿名の使用統計情報の例は chromestatus.com/metrics で確認できます。たとえば、CSS プロパティ、HTML または JavaScript 機能を使用しているページ読み込みの割合などです。
Chrome のバリエーションは、あるユーザー グループから別のユーザー グループの統計情報を比較する場合に特に便利です。たとえば、あるユーザーに対しては有効にしてはならないユーザーを指定したり、Chrome でグループごとの指標を比較したりできます。これらの指標には、メモリ使用量、ページの読み込み時間、ブラウザ機能の使用状況などがあります。これにより、Chrome のエンジニアは、機能がオンになっているユーザー、機能がオフになっているユーザー、または機能のバリエーションが異なるユーザー間でパフォーマンスやその他の指標を比較できます。
Chrome のバリエーションのフィールド トライアル
特徴のバリエーションの各セットはスタディまたはフィールド トライアルと呼ばれ、それぞれに固定期間があります。機能の調査が終了すると、デフォルト以外の動作グループに含まれるユーザーには、その機能のデフォルトの Chrome 設定(有効または無効)が適用されます。
Chrome のバリエーションで制御できる機能のほとんどは、chrome://flags
ページから設定できるフラグに対応しています。または、コマンドラインから Chrome を実行する場合は、--enable-features
フラグと --disable-features
フラグを使用して Chrome のバリエーションを構成できます。
--reset-variation-state
フラグを指定すると、現在のクライアントの Chrome のバリエーションの状態が強制的にリセットされます。つまり、クライアントは別の Chrome のバリエーション グループに移動できる。
企業向け Chrome のバリエーション
企業のお客様向けに、Chrome には Chrome のバリエーションを管理するための ChromeVariations ポリシーも用意されています。もちろん、Chrome が重要なセキュリティ修正を迅速に適用できるように、Chrome のバリエーションは有効のままにしておくことをおすすめします。