Chrome のバリエーションの概要

Chrome バリエーション(Chrome フィールド テスト、Chrome Finch という内部コードネームでも知られています)について聞いたことがあるかもしれません。

これらはすべて同じものを指しています。つまり、Chrome ブラウザや ChromeOS(Chromebook で実行される Chrome オペレーティング システム)の新機能や変更をテストするメカニズムのことです。

Chrome のバリエーションとは

Chrome バリエーションを使用すると、Chrome で一部のユーザーに対して新機能を有効にしたり、機能を無効にしたり、機能の変更を試したりできます。

Chrome のすべての機能が Chrome バリエーションを使用して導入されるわけではありません。ただし、Chrome チームは必要に応じて Chrome バリエーションを使用できます。Chrome のバリエーションは、次の目的で使用できます。

  • Chrome エンジニアが特定の変更を行う際に特に注意を払えるようにします。ブラウザのパフォーマンスにリスクがある、またはその他の懸念がある可能性があります。
  • 変更または更新に関する仮説を検証します。たとえば、Chrome バリエーション グループのユーザーの割合に対して、QUIC ネットワーキング プロトコルのパラメータを変更し、ユーザーの実際のネットワーク環境で Chrome を高速化しました。
  • オリジン トライアル機能の有効化を制御します。デフォルトでは、有効なトライアル トークンを提供するすべてのページでオリジン トライアルが有効になっています。ただし、有効なトライアル トークンを提供するページにアクセスしても、一部のユーザーは機能を利用できない場合があります。

Chrome のバリエーションの仕組み

デスクトップまたはモバイルで 30 分ごと、または Chrome を起動するたびに、ブラウザは Chrome バックエンドにリクエストを送信して、バリエーション シードと呼ばれる Chrome バリエーション構成ファイルを取得します。Chrome バリエーション シードを提供する専用サーバーがあります。Chrome はサーバーに HTTPS リクエストを送信し、サーバーは差分圧縮されたシードで応答します。

ブラウザとオペレーティング システムに関する情報は、Chrome バリエーションのバックエンドに送信されます。Chrome バリエーション シードは、ランダム化シードを持つブラウザに送信されます。

デバイスの Chrome がシードファイルをリクエストすると、Chrome はバージョン番号と実行中のオペレーティング システムを提供します。Chrome のバリエーション バックエンドから返されたファイルは、機能をオンまたはオフにしたり、機能のバリエーションを指定したりするために使用されます。

Chrome は、シードファイル内のデータとローカルに保存されたランダム化シードを使用して、ブラウザをバリエーション グループにランダムに割り当てます。デバイスのブラウザは、どのバリエーション グループに属しているかを追跡します。

機能のロールアウトと Chrome チャンネル

Chrome のバリエーションの最も重要な用途の 1 つは、Chrome クライアントの一定の割合に対して変更や新機能を段階的に導入することです。これは、何十億ものユーザーがいて、複数のプラットフォームで何千もの種類のデバイスを使用し、何百万ものさまざまなアプリやウェブサイトで何十もの異なる言語を使用している Chrome のような複雑なアプリケーションにとって非常に重要です。

Chrome では、Chrome Canary、Dev、Beta での使用状況とテストから貴重なフィードバックを得ています。Chrome バリエーションを使用すると、これらのリリース チャンネルのいずれかで機能を有効または無効にできます。ただし、これらのチャネルは主にデベロッパーやその他の専門家が使用します。

Chrome Stable ユーザーは Chrome の利用方法が異なり、その数もはるかに多いため、常に Stable チャンネルで検証する必要があります。これにより、通常のブラウザの使用で発生した問題に対処できます。Chrome のエンジニアは、実際のユーザーが変更や新機能にどのように反応するかを大規模に予測することはできません。

Chrome バリエーションを使用すると、Chrome 安定版の使用状況と指標を確認できます。Chrome 安定版での変更の影響を測定することで、複雑なトレードオフがある場合でも、可能な限り最高の機能をリリースし、より優れたブラウザを構築できます。

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://flags ページから設定できるフラグに対応しています。または、コマンドラインから Chrome を実行する場合は、--enable-features フラグと --disable-features フラグを使用して Chrome バリエーションを構成できます。

--reset-variation-state フラグは、現在のクライアントの Chrome バリエーションの状態を強制的にリセットします。つまり、クライアントは別の Chrome バリエーション グループに移動する可能性があります。

企業向け Chrome バリエーション

企業のお客様向けに、Chrome には Chrome バリエーションを管理するための Chrome バリエーション ポリシーも用意されています。Chrome が重要なセキュリティ修正を迅速に提供できるように、Chrome バリエーションを有効にしておくことをおすすめします。

関連リソース