Chrome UX レポート(CrUX)の元データは、Google Cloud 上のデータベースである BigQuery で入手できます。BigQuery を使用するには、GCP プロジェクトと SQL の基本的な知識が必要です。
このガイドでは、BigQuery を使用して CrUX データセットに対するクエリを作成し、ウェブ上でのユーザー エクスペリエンスの状態に関する有益な結果を抽出する方法について学習します。
- データの整理方法を理解する
- オリジンのパフォーマンスを評価する基本的なクエリを作成する
- パフォーマンスの推移を追跡する高度なクエリを作成する
データ編成
基本的なクエリから見ていきましょう。
SELECT COUNT(DISTINCT origin) FROM `chrome-ux-report.all.202206`
クエリを実行するには、クエリエディタにクエリを入力し、[クエリを実行] ボタンをクリックします。
このクエリは 2 つの部分に分かれています。
SELECT COUNT(DISTINCT origin)
は、テーブル内のオリジンの数をクエリすることを意味します。大まかに言うと、スキーム、ホスト、ポートが同じ 2 つの URL は同じオリジンのものです。FROM chrome-ux-report.all.202206
には、次の 3 つの部分で構成されるソーステーブルのアドレスを指定します。- すべての CrUX データが整理される Cloud プロジェクト名
chrome-ux-report
- すべての国のデータを表すデータセット
all
- テーブル
202206
(YYYYMM 形式のデータの年と月)
- すべての CrUX データが整理される Cloud プロジェクト名
国ごとのデータセットもあります。たとえば、chrome-ux-report.country_ca.202206
はカナダから提供されるユーザー エクスペリエンス データのみを表します。
各データセット内には、2017 年以降の各月のテーブルがあります。10. 前月の新しいテーブルは定期的に公開されます。
データテーブルの構造(スキーマとも呼ばれます)には次のものが含まれます。
- オリジン(例:
origin = 'https://www.example.com'
は、そのウェブサイトのすべてのページのユーザー エクスペリエンスの分布を集計したものを表します) - ページ読み込み時の接続速度(例:
effective_connection_type.name = '4G'
) - デバイスタイプ(例:
form_factor.name = 'desktop'
) - UX 指標自体
- first_paint(FP)
- first_contentful_paint(FCP)
- dom_content_loading(DCL)
- onload(OL)
- Experimentsal.first_input_delay(FID)
各指標のデータは、オブジェクトの配列として編成されます。JSON 表記で、first_contentful_paint.histogram.bin
は次のようになります。
[
{"start": 0, "end": 100, "density": 0.1234},
{"start": 100, "end": 200, "density": 0.0123},
...
]
各ビンには、開始時刻と終了時刻(ミリ秒単位)と、その時間範囲内のユーザー エクスペリエンスの割合を表す密度が含まれています。言い換えると、この仮定のオリジン、接続速度、デバイスタイプでの FCP エクスペリエンスの 12.34% は 100 ミリ秒未満です。すべてのビン密度の合計は 100% です。
パフォーマンスを評価する
テーブル スキーマの知識を使用して、このパフォーマンス データを抽出するクエリを作成できます。
SELECT
fcp
FROM
`chrome-ux-report.all.202206`,
UNNEST(first_contentful_paint.histogram.bin) AS fcp
WHERE
origin = 'https://web.dev' AND
effective_connection_type.name = '4G' AND
form_factor.name = 'phone' AND
fcp.start = 0
結果は 0.01115
です。つまり、このオリジンのユーザー エクスペリエンスの 1.115% が、4G とスマートフォンでは 0 ~ 100 ms の間です。任意の接続とデバイスタイプにクエリを一般化する場合は、WHERE
句を省略し、SUM
アグリゲータ関数を使用してそれぞれのビン密度をすべて合計します。
SELECT
SUM(fcp.density)
FROM
`chrome-ux-report.all.202206`,
UNNEST(first_contentful_paint.histogram.bin) AS fcp
WHERE
origin = 'https://web.dev' AND
fcp.start = 0
結果は 0.05355
で、すべてのデバイスと接続タイプで 5.355% です。クエリを少し変更して、0 ~ 1,000 ミリ秒の「高速」FCP 範囲にあるすべてのビンの密度を合計できます。
SELECT
SUM(fcp.density) AS fast_fcp
FROM
`chrome-ux-report.all.202206`,
UNNEST(first_contentful_paint.histogram.bin) AS fcp
WHERE
origin = 'https://web.dev' AND
fcp.start < 1000
これにより、0.6977
が得られます。言い換えれば、web.dev での FCP のユーザー エクスペリエンスの 69.77% は、FCP の範囲の定義に照らして「高速」であると見なされています。
パフォーマンスのトラッキング
あるオリジンのパフォーマンス データを抽出したので、古いテーブルで利用可能な過去のデータと比較できます。そのためには、テーブル アドレスを以前の月に書き換えるか、ワイルドカード構文を使用してすべての月をクエリします。
SELECT
_TABLE_SUFFIX AS yyyymm,
SUM(fcp.density) AS fast_fcp
FROM
`chrome-ux-report.all.*`,
UNNEST(first_contentful_paint.histogram.bin) AS fcp
WHERE
origin = 'https://web.dev' AND
fcp.start < 1000
GROUP BY
yyyymm
ORDER BY
yyyymm DESC
ご覧のとおり、高速 FCP エクスペリエンスの割合は、毎月数ポイントずつ変化しています。
yyyymm | fast_fcp |
---|---|
202206 | 69.77% |
202205 | 70.71% |
202204 | 69.04% |
202203 | 69.82% |
202202 | 67.75% |
202201 | 58.96% |
202112 | 41.69% |
... | ... |
これらの手法を使用すると、オリジンのパフォーマンスを調べ、高速エクスペリエンスの割合を計算して、経時的にトラッキングできます。次のステップとして、2 つ以上のオリジンをクエリしてパフォーマンスを比較してみましょう。
よくある質問
CrUX BigQuery データセットに関するよくある質問をいくつかご紹介します。
他のツールではなく BigQuery を使用するのはどのような場合ですか?
BigQuery は、CrUX ダッシュボードや PageSpeed Insights などの他のツールから同じ情報を取得できない場合にのみ必要です。たとえば BigQuery では、意味のある方法でデータをスライスでき、HTTP Archive などの他の一般公開データセットと結合して、高度なデータ マイニングを行うことができます。
BigQuery の使用に制限はありますか?
はい。最も重要な制限は、デフォルトでは 1 か月あたり 1 TB 分のデータしかクエリできないことです。それ以降は、1 TB あたり 5 米ドルの標準料金が適用されます。
BigQuery の詳細はどこで確認できますか?
詳しくは、BigQuery のドキュメントをご覧ください。