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