RUM データと CrUX でウェブに関する主な指標の数値が異なる理由について説明します。
Chrome ユーザー エクスペリエンス レポート(CrUX)は、Chrome ユーザーがウェブ上の人気ページに実際にアクセスしたときのユーザー エクスペリエンスを指標化したものです。このデータは、オプトインしたユーザーから Chrome によって自動的に収集され、CrUX の利用条件に基づいて利用可能になります。
そのため、CrUX データは数百万ものウェブサイトで利用できます。多くのサイト所有者はこれまでフィールドデータにアクセスできませんでしたが、CrUX により、多くのサイトが初めてその価値を確認できるようになりました。CrUX は公開データセットであるため、競合分析やユーザー エクスペリエンス指標のベンチマークにも使用できます。
実際のユーザー モニタリング(RUM)は CrUX と似ていますが、Chrome がユーザー エクスペリエンス指標を自動的に収集する代わりに、収集用のコードがウェブサイトに含まれています。そのデータは RUM プロバイダや分析ソリューションにフィードされ、詳しく分析されます。
どちらのソリューションでもユーザー エクスペリエンス指標を測定する場合、両者は同等であるべきだと考えるのは自然なことです。違いがあると混乱することがあります。このガイドでは、その理由と、数字が一致しない場合に取るべき対応について説明します。
RUM ソリューションで CrUX を補完するメリット
CrUX は、サイト全体で一貫したビューを実現するための優れたツールです。また、Core Web Vitals プログラムの公式データセットであるため、サイトでは CrUX の表示内容を常に確認しておく必要があります。CrUX の目的は、数百万ものウェブサイトの統計的に関連性の高い概要を提供し、相互比較できるようにすることです。
ただし、データに表示されている数値の理由を詳しく調査するには、CrUX を補完する完全な RUM ソリューションに投資することをおすすめします。これにより、一般公開されているクエリ可能なデータセットで利用できるよりも詳細な情報を入手できます。このレポートは、さまざまな方法で指標について説明し、改善するのに役立ちます。
問題を調査するための詳細な分析
CrUX は、サイトに問題があるかどうかを示すのによく使用されますが、必ずしもサイトのどこに問題があるか、またはなぜ問題があるとは限りません。RUM ソリューションは、web-vitals ライブラリなどの自社開発ソリューションや、数多くの商用プロダクトのいずれかを使用して、このギャップを埋めることができます。
RUM ソリューションを使用すると、すべてのページとすべてのブラウザで、よりきめ細かいデータにアクセスできます。また、CrUX ではできない方法でこのデータをセグメント化して分析できるため、サイトの問題のある部分をドリルダウンして調査できます。特定のユーザー セグメントに影響しているのか?特定のアクションを行ったユーザーはどうか?問題が発生したのはいつごろですか?こうした質問は、RUM ツールが提供する追加データがあれば、はるかに簡単に回答できます。
他のビジネス指標と関連付ける
また、RUM では、ウェブ パフォーマンス指標をビジネス指標と直接比較して、パフォーマンスへの投資の価値や、優先すべきその他のパフォーマンス作業を確認できます。Google は、Farfetch や The Economic Times など、この相関分析を行っている企業の事例紹介が多数存在します。
その他のパフォーマンス データを収集する
RUM ソリューションを使用すると、特定のビジネスに直接関連する他のカスタム指標を収集できます。よく知られている例として、Twitter の「Time to first Tweet」指標があります。これらのサイト固有の測定値は、Core Web Vitals の改善とビジネス指標と関連付けることができます。
2 セットのフィールド データの違い
時計を持っている男性は、何時かを知っている。2 つの時計を持っている男性は、確信が持てない。
Segal の法則
2 つのデータソースがある場合、その違いが原因で混乱やイライラが生じることがあります。ラボとフィールドの指標の違いを理解することが重要であるのと同様に、フィールド データの 2 つのソースにも違いがあります。理想的には同じデータになるはずですが、データが異なる理由はたくさんあります。
ラボデータとフィールド データ
まず、ラボ(合成)指標とフィールド(RUM)指標のどちらを確認しているかを確認します。RUM プロダクトはフィールドデータのみを参照すると想定されますが、多くのプロダクトにはラボ コンポーネントも用意されています。
ラボデータは一定の条件下で測定されるため、非常に役立ちます。フィールドの値が変化するノイズを排除して、本番環境で想定外の変更や回帰をモニタリングできます。ただし、ラボのデータは実際のユーザー エクスペリエンスを代表するものではないため、フィールド指標の結果は大きく異なる場合があります。
人口
CrUX と RUM のソリューションで使用されるデータセットは異なる場合があります。これは、比較するブラウザ、ユーザー、サイト、デバイスによって、ページ訪問数が測定される方法が異なるためです。
対応ブラウザ
Chrome ユーザー エクスペリエンス レポートは、その名前が示すように Chrome 専用です。コア コードベースを共有しているため、Chrome と同じ指標をサポートする Chromium ベースのブラウザは多数ありますが(Edge、Opera、Brave など)、CrUX にデータをフィードするのは Chrome ユーザーのみです。また、iOS 版 Chrome ユーザーは、基盤となる WebKit ブラウザ エンジンを使用しているため、対象外となります。Android WebView も「Chrome」としてカウントされないため、これらのユーザーのデータは含まれません(Chrome Custom Tab は含まれます)。
Chrome は世界で最も人気のあるブラウザの 1 つであり、ほとんどの場合、サイトのパフォーマンスを広範に反映している可能性がありますが、そのブラウザのみを測定することは、決してすべてのユーザーを測定しているわけではありません。このことから、RUM と CrUX の主な違いを 1 つ説明できます。これは、Chrome でのみ利用可能な API や画像形式に依存するパフォーマンス手法に特に当てはまります。
iOS のデータが不足している場合も、バイアスが生じる可能性があります。たとえば、iOS ユーザーは通常、パフォーマンスの高いデバイスを使用しているため、またはネットワーク インフラストラクチャが優れた国からアクセスしているため、iOS ユーザーを含めると、全体的なパフォーマンス指標が高くなる可能性があります。一方、CrUX のようにこうしたユーザーを除外すると、サイト訪問者の下位層に偏ったデータになる可能性があります(ケーススタディの例)。Android ユーザーは通常、デバイス、デバイスの機能、市場の範囲が広くなります。
RUM ソリューションでは、Chrome 以外のブラウザ、特に同じ指標(Core Web Vitals など)が組み込まれていることが多い Chromium ベースのブラウザからのデータを取得できます。Chromium 以外のブラウザも RUM ソリューションで測定されますが、指標のセットが限定される場合があります。たとえば、Cumulative Layout Shift(CLS)と Interaction to Next Paint(INP) は、Chromium ベースのブラウザでのみ使用できます。First Contentful Paint(FCP)などの他の指標は、測定方法が大きく異なります(後述)。
オプトインしたユーザー
CrUX は Chrome ユーザーに限定されるだけでなく、ブラウザのインストール時に CrUX データの共有を有効にしたChrome ユーザーのサブセットのみを測定するように制限されています。
また、RUM プロバイダは通常、Cookie バナー プロンプト(RUM データ収集へのオプトインを求めるメッセージ)やトラッキング ブロッカーが原因で、ユーザーのサブセットのみを対象とします。サイトアセットの一部が前のページからキャッシュされた状態で 2 ページ目以降のページまで確認を行わないと、最初のページの読み込みに悪影響が及ぶ可能性があります。これが頻繁に発生すると、十分な数のケースで遅い最初のページ読み込みが除外された場合、RUM では指標が実際よりも良好に見える可能性があります。
対象となるサイト
CrUX は公開ウェブサイトでのレポートのみを目的としているため、他の利用条件によってデータが CrUX に記録されない場合があります。これらの基準の中で最も重要なのは、ウェブサイトが一般に公開されており、有意な結論を導くための最小サンプルサイズを確保できるほど十分に人気があることです。ほとんどの場合、CrUX でデータが利用できなくなります。これは、利用可能なデータが異なる場合と比べて混乱を招く可能性は低いですが、その理由を説明します。
ただし、サイトの特定のページがインデックス登録可能としてマークされていて、他のページがマークされていない場合、CrUX には URL のサブセットのみが表示されることがあります。オリジンが一般公開されている場合、そのオリジン内のすべてのページビューがオリジン レベルのデータに含まれますが、URL レベルのデータは利用できない場合があります。
デバイス
CrUX では、モバイル、パソコン、タブレット別にデータが分割されますが、多くのツールではモバイルとパソコンに重点が置かれ、タブレットのデータが公開されないか、モバイルまたはパソコンに含まれる場合があります。モバイルとパソコンでは、配信されるコンテンツと、コンテンツを表示するデバイスの機能の両面で、パフォーマンス特性が大きく異なる場合があります。
RUM データでもトラフィックを同様にセグメント化できますが、多くの場合、デフォルトで統合データが表示されます。RUM では、デバイスタイプ(モバイルなど)またはブラウザ(Chrome など)でのみセグメント化できる場合があります。両方でセグメント化して、モバイル Chrome トラフィックのみを確認することはできません。CrUX データと比較する場合は、デバイスタイプと Chrome ブラウザでフィルタして、同等のデータを比較してください。
サンプリング
RUM ソリューションでは通常、データを収集するオプトイン ユーザーのサンプリング レートを調整できます。これにより、分析に必要なデータ量を減らし、商用 RUM サービスの費用を削減できます。サンプルサイズが小さすぎて、より広範な母集団を代表していない場合、得られる指標も同様に偏ります。サイトの適切なサンプリング サイズについては、RUM の提供元と相談してください。
データの集計
フィールド データには、その性質上、ラボデータと比較して同じ指標のデータポイントが多数あり、単一の値になります。このデータをレポートで集計する方法が異なる場合は、CrUX と RUM で別の原因が発生する可能性があります。
期間
CrUX データは 28 日間のトラフィック スライディング ウィンドウに基づいており、この期間を変更することはできません。ただし、CrUX BigQuery データは月ごとに保存されるため、過去の月を確認できます。また、CrUX History API では、週単位の過去のデータも確認できます。どちらも、28 日間のスライディング ウィンドウに基づくデータを提供します。
RUM データは通常、より粒度が高いため、変更の影響をより迅速に確認できます。期間を短くすると、ウェブサイトのトラフィックや訪問者の変動によって RUM データが過度に影響を受ける可能性があります。RUM データと CrUX データを比較する場合は、必ず 28 日間のパフォーマンスを確認してください。データが類似していることを確認したら、他の期間を調べて RUM データを詳しく確認できます。
統計情報の集計
CrUX 指標は 75 パーセンタイルで測定されます。つまり、ページビューの 75% が達成した値が対象となります。現場データに極端な差が生じ、最悪の 25% のエクスペリエンスが排除されることになります。これは、大部分の訪問者が達成すると合理的に期待できる価値を提供することを目的としています。
RUM プロダクトでは、75 パーセンタイル、中央値、その他のパーセンタイルなど、指標の集計方法がより幅広く用意されています。RUM 値を CrUX データと比較する場合は、同値の比較に使用する 75 パーセンタイル データを確認する必要があります。
CrUX のヒストグラム データには、75 パーセンタイルだけでなく、利用可能なすべてのデータが含まれ、各評価のページビュー数が表示されます。ただし、集計スコアは 75 パーセンタイルに基いています。この CrUX データは、PageSpeed Insights などのツールに表示されます。
指標の違い
ウェブ パフォーマンスの測定に使用される指標は多数あるため、2 つの異なるデータセットを比較する場合は、測定されている指標と、それらの指標がどのように使用されているかを理解することが重要です。
測定される指標
CrUX データは Core Web Vitals イニシアチブの公式データセットであり、主に以下の指標(LCP、CLS、INP)を測定します。また、これらの指標を補完するいくつかの追加指標も測定します。
RUM ツールには通常、これらの Core Web Vitals が含まれていますが、多くの場合、他の指標も含まれています。RUM プロバイダによっては、これらすべての指標を独自に組み合わせてユーザー エクスペリエンスを測定し、「幸福度指数」などを提供する場合もあります。RUM データを CrUX と比較する際は、ほぼ同等に比較するようにしてください。
ウェブに関する主な指標の合格 / 不合格ステータスを評価するツールでは、すべてのウェブに関する主な指標の 75 パーセンタイルにおける推奨目標を満たしているページを合格と見なす必要があります。インタラクションのないページに INP がない場合、LCP と CLS のみが合格する必要があります。
ブラウザ間での指標の違い
CrUX で測定されるのは Chrome ブラウザでのみです。各バージョンの Chrome での変更点については、ウェブに関する指標の変更履歴をご覧ください。
一方、RUM ソリューションは、より幅広いブラウザを測定します。Chromium ベースのブラウザ(Edge、Opera など)は、変更履歴に記載されている新しい変更が Chrome に実装されている場合を除き、Chrome と類似している可能性があります。
Chromium 以外のブラウザでは、この差異がより顕著になる可能性があります。たとえば、First Contentful Paint(FCP)は Safari と Firefox で利用できますが、測定方法が異なります。これにより、報告される時間に大きなばらつきが生じる可能性があります。前述のとおり、RUM と CrUX を比較する場合は、Chrome ユーザーのみをフィルタして、同等の比較を行うことをおすすめします。
指標のタイミング
ウェブに関する主な指標はウェブブラウザ API によって提供されますが、それらを使用して報告される値に差異が生じる可能性がないわけではありません。指標の測定がいつ行われるか(ページの読み込み時か、ページのライフサイクル全体を通してか)によって、差異が生じる可能性があります。RUM ツールでは、データの取得に同じ名前や同じブラウザ API を使用している場合でも、常に同じ方法で指標を測定するとは限らず、混乱を招く可能性があります。
Largest Contentful Paint(LCP)はページ読み込みの指標です。最初のレンダリング後に大きな要素が読み込まれると、Web API によって複数の LCP 要素がレポートされる場合があります。最後の LCP 要素は、ページの読み込みが完了したとき、またはユーザーがページを操作したときです。したがって、LCP 要素がこれらの 2 つのイベントより前に報告された場合、差異が生じる可能性があります。
また、フィールドデータでは、ページの読み込み方法によって LCP 要素が異なる場合があります。ページ上部のコンテンツを表示するデフォルトのページ読み込みの場合、LCP 要素は主に画面サイズによって異なります。ただし、ドキュメントのさらに下のアンカーリンクでページを開いたり、同様にシングルページ アプリ(SPA)へのディープリンクでページを開いたりした場合(詳細は後述します)、LCP 要素が異なる場合があります。
CrUX または RUM で提供される LCP タイミングが、ラボツールと同じ要素に基づいているとは限りません。CrUX ではページまたはオリジンごとの LCP の全体的な値が得られますが、RUM ではさらに細かく分割して、個々の LCP の問題セッションを特定できます。
Cumulative Layout Shift(CLS)はページの全期間にわたって測定されるため、ページの読み込み直後の CLS は、ページの読み込み後にユーザーが操作した後に発生する大きなシフトを反映していない可能性があります。そのため、多くの RUM サービスと同様に、ページの読み込み後にのみ CLS 値を取得すると、ユーザーがページでそのページを終了した後に CLS 値を取得する結果とは異なる結果が得られます。
Interaction to Next Paint(INP)の応答性指標では、入力を測定する必要があります。また、CLS と同様に、ページ全体を通してすべてのクリック、タップ、キーボードの操作が測定されるため、ユーザーがページで何度か操作を行った後に測定された場合、INP のレポート値は大きく異なる場合があります。
CrUX は、Core Web Vitals のドキュメントに沿って、ページの全期間にわたって測定します。RUM プロバイダの多くは、ページの読み込み後やその他のタイミング(主要な行動を促すフレーズがクリックされたときなど)に、さまざまな理由からこれらの指標を測定しています。
2 つのデータソース間で説明できない差異がある場合は、ウェブに関する主な指標がいつ測定されるかを RUM プロバイダに確認することが重要です。
シングルページ アプリケーション
シングルページ アプリケーション(SPA)は、ブラウザレベルで実際のページ ナビゲーションを実行するのではなく、現在のページのコンテンツを更新するという形で動作します。つまり、ユーザーがページ移動として認識している場合でも、ブラウザはページ移動として認識しません。ブラウザが提供するウェブに関する主な指標の API ではこれらの要素は考慮されません。そのため、CrUX ではこれらのページ ナビゲーションはサポートされていません。この問題の解決に向けて現在取り組んでおります。詳しくは、ソフト ナビゲーションの測定に関するテストの投稿をご覧ください。
一部の RUM プロバイダは SPA の「ソフト ナビゲーション」を検出しようとしますが、Core Web Vitals の指標をこうした「ソフト ナビゲーション」に関連付けると、基盤となる API が多くの指標をサポートしていないため、CrUX との違いが生じます。
CrUX と Web API の違い
測定されるページビューと測定対象のページビューの違いだけでなく、CrUX と RUM のデータに差異をもたらす可能性がある、より複雑なシナリオもいくつかあります。その一部は、指標の測定に使用するウェブ API の制限によるものです。また、特定のシナリオでは、API から返される結果を別の方法で処理する必要があります。Core Web Vitals のドキュメントでは、LCP と CLS の違いについて説明していますが、主な違いは次のセクションでも説明しています。
バックフォワード キャッシュ
CrUX では、バックフォワード キャッシュ(bfcache)の復元は、従来のページ読み込みにつながらないにもかかわらず、ページ ナビゲーションと見なされます。Web API ではこれらのページがページ読み込みとして扱われないため、RUM ソリューションで CrUX と一致させるには、これらのページをカウントするために追加の手順を踏む必要があります。これらのページは読み込みが非常に速く、サイトの全体的なパフォーマンスの向上につながる可能性があります。そのため、これらのページを含めないと、ページの全体的なパフォーマンス指標が低下する可能性があります。RUM ソリューションが bfcache から復元されたページを処理するかどうかを確認します。
iframe
セキュリティおよびプライバシー上の理由から、最上位レベルのページは iframe 内のコンテンツにアクセスできません(同一オリジンの iframe であってもアクセスできません)。つまり、iframe 内のコンテンツのパフォーマンス指標は、iframe 自体でのみ測定でき、フレームページの Web API では測定できません。iframe コンテンツに LCP 要素や、ユーザーが経験する CLS や INP に影響するコンテンツが含まれている場合、RUM ソリューション(Google ウェブバイタル JavaScript ライブラリを含む)では使用できません。
一方、CrUX はページ上の JavaScript ではなく Chrome ブラウザ自体によって測定されるため、このような制限はなく、Core Web Vitals のレポート時に iframe 内の指標も測定されます。これにより、ユーザーが実際に体験する内容をより正確に反映できますが、iframe を使用するサイトでは、このことが差異を生む原因となる可能性があります。
これが CrUX と RUM の LCP データの差異につながる具体的な例として、埋め込み <video>
があります。playsinline 自動再生 <video>
要素の最初のペイントされたフレームは LCP の候補としてカウントされますが、一般的な動画ストリーミング サービスの埋め込みでは、これらの要素が <iframe>
に配置される場合があります。CrUX は <iframe>
コンテンツにアクセスできるため、この点を考慮できますが、RUM ソリューションは考慮できません。
クロスオリジン リソース
タイミング攻撃を軽減するためのブラウザのセキュリティ制限により、他のドメインから配信される LCP メディアは、Timing-Allow-Origin ヘッダー(TAO)が指定されていない限り、PerformanceObserver API でレンダリング時間が提供されません。これはリソースの読み込み時間にフォールバックしますが、コンテンツが実際にペイントされたときとは大きく異なる場合があります。
これにより、ウェブ API によって LCP が FCP より早い時間として報告されるという、ありえないと思われる状況が発生する可能性があります。実際にはそうではありませんが、このセキュリティ制限によりそう見えるだけです。
繰り返しになりますが、CrUX は Core Web Vitals のレンダリング時間データをレポートします。Core Web Vitals の指標に影響するクロスオリジン コンテンツを制限するとともに、より正確に測定したい場合は、可能であれば TAO を有効にすることをおすすめします。他のクロスオリジン リソースにも同様の制限が適用される場合があります。
バックグラウンド タブ
ページがバックグラウンド タブで開かれていない場合でも、Web API を使用して指標が送信されます。ただし、これらのイベントはユーザー エクスペリエンスと一致しないタイミングを示すため、CrUX では報告されません。RUM ソリューションでは、これらのページビューを無視することも、少なくともこれらのページビューがどのように処理されるかを説明することも検討する必要があります。
では、どうすればよいでしょうか?
CrUX データと RUM データに差異が生じる理由として、それぞれの手法の違いや、どのユーザーとページビューが含まれるか、除外されるかについて説明しました。理想的には、どちらのデータセットもサイトのパフォーマンスを代表するものであり、有用なものである必要がありますが、その理由として、両方のデータセットでまったく同じ数値が得られる可能性は非常に低いことを説明する必要があります。
差異が小さい場合(LCP が 2.0 秒と 2.2 秒と報告される場合など)は、どちらのデータセットも有用であり、通常はほぼ同期していると見なすことができます。
大きな差異がデータの精度に疑問を抱かせる場合は、その差異を理解する必要があります。RUM データをフィルタして CrUX に近づけて(パソコンまたはモバイルの Chrome ユーザーのみに着目し、28 日間で 75 パーセンタイルの値にする)ことで、これらの違いを減らすことはできるでしょうか?
データの差異が小さくなるよう調整できたとしても、全体的なデータに差異が生じている理由とその意味を尋ねる必要があります。Chrome 以外のユーザーによる指標の歪みは、プラスまたはマイナスのどちらに偏っているでしょうか。優先度を判断できるパフォーマンスの問題がどこにあるかについて、より多くの分析情報を得ることができますか?
Chrome を使用していないユーザーでも異なる結果が得られる場合は、RUM から得た貴重な分析情報を活用して、別の方法で最適化できます。たとえば、一部の API は特定のブラウザでは使用できませんが、サポートされていないブラウザの代替機能を検討して、エクスペリエンスを改善することもできます。また、制約のあるデバイスやネットワークのユーザーには、パフォーマンスは低いものの、別のエクスペリエンスを提供することもできます。CrUX は Chrome のデータに限定されますが、改善の優先順位を決める際は、サイト訪問者のすべてのエクスペリエンスを考慮する必要があります。RUM データは、そのギャップを埋めることができます。
差異の理由を把握したら、どちらのツールもウェブサイトのユーザー エクスペリエンスを把握し、数値が同じでなくても改善に役立てることができます。RUM データは CrUX データを補完するものです。トラフィックをセグメント化することで、CrUX が示す大まかな傾向を詳しく調べ、サイトやユーザーベースの特定の領域に注意を払う必要があるかどうかを特定できます。
2 つのデータソースの間で各数値が完全に一致しているかどうかよりも、改善が期待されるプラスの効果が得られているかどうかをトレンドで確認することが重要です。前述のように、RUM ではさまざまな期間を調べて、28 日間の CrUX スコアを確認できます。ただし、期間が短すぎるとノイズの多いデータになる可能性があるため、CrUX では 28 日間を使用しています。
これらの指標には「正しい」答えや「間違った」答えはありません。ユーザーとユーザーのサイト利用状況をさまざまな角度から把握するための指標にすぎません。こうした違いが生じる理由と、意思決定にどのように影響するかを理解していれば、サイト訪問者により良いサービスを提供するために必要なことです。
謝辞
Steven Lelham によるサムネイル画像(Unsplash より)