2026年6月27日
2026年6月27日
WordPressサイトのCrUX(Chrome UXレポート)データを取得・分析する方法
CrUX(Chrome UX Report)は、Chrome を使う実際の訪問者から集めた表示速度・操作性のデータを Google が公開しているものです。WordPress サイトの表示速度を調べるとき、Lighthouse のような「その場で1回測る」検査(ラボデータ)だけでは、実際の訪問者がどう感じているかは分かりません。CrUX はその実測値(フィールドデータ)を見るための情報源です。
この記事では、CrUX データの取り方を3通り(PageSpeed Insights、CrUX API、BigQuery)紹介し、WordPress サイトの改善にどうつなげるかを説明します。内容は2026年10月時点の Chrome for Developers の公式ドキュメントに基づいています。
CrUX で分かること
CrUX には主に次の指標が入っています。Core Web Vitals の3指標は、75パーセンタイル(訪問の75%がこの値以下)で評価します。
| 指標 | 意味 | 「良好」の目安(75パーセンタイル) |
|---|---|---|
| LCP(Largest Contentful Paint) | 画面内で最も大きい要素が表示されるまでの時間 | 2.5秒以下 |
| INP(Interaction to Next Paint) | クリックやタップへの反応の遅さ | 200ミリ秒以下 |
| CLS(Cumulative Layout Shift) | 表示中にレイアウトがずれる量 | 0.1以下 |
| FCP(First Contentful Paint) | 最初に何かが表示されるまでの時間 | 参考指標 |
| TTFB(Time to First Byte) | サーバーが最初の1バイトを返すまでの時間 | 参考指標 |
注意点として、CrUX は訪問数が十分にあるページ・サイトにしかデータがありません。新しいサイトや訪問の少ないページでは「データなし」になります。その場合は Lighthouse などのラボデータで代用します。
取得方法の使い分け
| 方法 | 単位 | 期間 | 向いている用途 |
|---|---|---|---|
| PageSpeed Insights | ページ・サイト全体 | 直近28日 | まず1ページを確認したいとき |
| Search Console の「ウェブに関する主な指標」 | 似たページのグループ | 過去3か月の推移 | サイト内のどのページ群が悪いかを探すとき |
| CrUX API | ページ・サイト全体(オリジン) | 直近28日(毎日更新) | 定期的に数値を記録したいとき |
| CrUX History API / CrUX Vis | ページ・オリジン | 週ごとの履歴 | 改善前後の推移を見たいとき |
| BigQuery | オリジン(サイト全体)のみ | 月ごと(2017年以降) | 競合サイトとの比較や長期の分析 |
WordPress サイトの改善が目的なら、まず PageSpeed Insights と Search Console で問題のあるページを見つけ、必要に応じて CrUX API で定点観測する、という順番が手間が少なく済みます。
方法1: PageSpeed Insights で確認する
- PageSpeed Insights を開きます。
- 調べたいページの URL を入力して「分析」を押します。
- 上部の「実際のユーザーの環境で評価する」欄が CrUX のデータです。「モバイル」「デスクトップ」のタブで切り替えられます。
- 「このURL」と「オリジン」の切り替えがあれば、ページ単位とサイト全体の両方を確認します。
下に表示される Lighthouse の診断(ラボデータ)は、その場で1回測った結果です。CrUX の値と食い違うことがあるのは、測定条件が違うためです。合否の判断は CrUX の値で行い、原因探しに Lighthouse の診断を使う、という使い分けをします。
方法2: CrUX API で数値を取得する
API キーを用意する
- Google Cloud コンソールでプロジェクトを作成(または既存のものを選択)します。
- 「API とサービス」で Chrome UX Report API を有効にします。
- 「認証情報」で API キーを作成します。キーは CrUX API だけに使えるよう制限をかけておくと安全です。
CrUX API は無料で、1つの Google Cloud プロジェクトにつき毎分150リクエストまで使えます(2026年10月時点)。
curl で取得する
curl -s -X POST \
"https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"origin": "https://example.com",
"formFactor": "PHONE",
"metrics": ["largest_contentful_paint", "interaction_to_next_paint", "cumulative_layout_shift"]
}'
originの代わりにurlを指定すると、特定のページのデータを取れます。formFactorはPHONE・DESKTOP・TABLETのいずれかです。省略すると全デバイスを合わせた値になります。metricsを省略すると、取得できるすべての指標が返ります。
応答の読み方
応答の JSON では、record.metrics.<指標名> の中に次の2つが入っています。
percentiles.p75: 75パーセンタイル値。LCP と INP はミリ秒、CLS は小数(文字列)です。histogram: 「良好」「要改善」「不良」の3区分それぞれの割合(density)。
record.collectionPeriod には集計期間(28日間)の開始日と終了日が入っています。データは毎日更新されますが、2日ほど遅れて反映されます。
WordPress から取得して記録する例
管理画面のダッシュボードなどで数値を見たい場合は、WordPress の HTTP API で取得し、Transients API で1日キャッシュしておくと、API を呼びすぎずに済みます。API キーは wp-config.php に定数として書き、コードに直接書かないようにします。
<?php
// wp-config.php に define( 'MY_CRUX_API_KEY', '...' ); を書いておく前提
function my_get_crux_p75( $origin, $form_factor = 'PHONE' ) {
$cache_key = 'my_crux_' . md5( $origin . $form_factor );
$cached = get_transient( $cache_key );
if ( false !== $cached ) {
return $cached;
}
if ( ! defined( 'MY_CRUX_API_KEY' ) ) {
return null;
}
$response = wp_remote_post(
'https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=' . MY_CRUX_API_KEY,
array(
'headers' => array( 'Content-Type' => 'application/json' ),
'body' => wp_json_encode(
array(
'origin' => $origin,
'formFactor' => $form_factor,
)
),
'timeout' => 15,
)
);
if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) {
// 404 はデータが無い(訪問数が足りない)ことを示す
return null;
}
$data = json_decode( wp_remote_retrieve_body( $response ), true );
$metrics = isset( $data['record']['metrics'] ) ? $data['record']['metrics'] : array();
$result = array();
foreach ( array( 'largest_contentful_paint', 'interaction_to_next_paint', 'cumulative_layout_shift' ) as $name ) {
$result[ $name ] = isset( $metrics[ $name ]['percentiles']['p75'] ) ? $metrics[ $name ]['percentiles']['p75'] : null;
}
set_transient( $cache_key, $result, DAY_IN_SECONDS );
return $result;
}
my_get_crux_p75( home_url() ) のように呼ぶと、3指標の75パーセンタイル値が配列で返ります。CrUX はデータが無い場合に HTTP 404 を返すため、その場合は null になります。
方法3: BigQuery で長期・競合比較をする
BigQuery には CrUX の公開データセットがあり、chrome-ux-report.all.YYYYMM(例: chrome-ux-report.all.202509)という月ごとのテーブルにオリジン単位のデータが入っています。国別のテーブル(例: chrome-ux-report.country_jp.YYYYMM)もあります。自分でデータを取り込む必要はなく、Google Cloud プロジェクトから直接クエリを実行できます。
次のクエリは、あるサイトの LCP が2.5秒未満だった訪問の割合をデバイス別に求めます。
SELECT
form_factor.name AS device,
ROUND(SUM(IF(lcp.start < 2500, lcp.density, 0)) / SUM(lcp.density), 4) AS good_lcp_ratio
FROM
`chrome-ux-report.all.202509`,
UNNEST(largest_contentful_paint.histogram.bin) AS lcp
WHERE
origin = 'https://example.com'
GROUP BY
device
ORDER BY
device;
originはhttps://から始まり、末尾にスラッシュを付けない形で指定します(wwwの有無も区別されます)。- BigQuery のデータはヒストグラムなので、75パーセンタイルは近似値になります。
- BigQuery は毎月1TB までのクエリが無料で、それを超えると料金がかかります(2026年10月時点)。
chrome-ux-report.all.*のように全月を対象にすると読み込み量が大きくなるので、月を絞って実行してください。
データを WordPress の改善につなげる
CrUX で「不良」や「要改善」になった指標ごとに、WordPress でよくある原因と確認先は次のとおりです。
| 指標 | よくある原因 | 確認・対策の例 |
|---|---|---|
| LCP が遅い | サーバー応答が遅い、ファーストビューの画像が大きい、レンダリングを止める CSS・JavaScript | ページキャッシュの導入、画像の圧縮と適切なサイズ指定、ファーストビューの画像を遅延読み込みの対象から外す |
| INP が悪い | 重い JavaScript(スライダー、広告、チャット、解析タグなど) | プラグインを1つずつ無効化して変化を見る、不要なスクリプトを読み込まないページを作る |
| CLS が大きい | サイズ指定の無い画像・広告・埋め込み、Web フォントの切り替わり | width・height 属性の付与、広告枠の高さを CSS で確保する |
| TTFB が遅い | キャッシュが効いていない、PHP やデータベースが遅い | ページキャッシュ、PHP のバージョン更新、遅いプラグインの特定 |
対策を入れた後は、CrUX が28日間の集計であることに注意してください。改善の効果が数値にすべて反映されるまで約4週間かかります。変更日をメモしておき、CrUX History API や CrUX Vis で週ごとの推移を確認すると、どの対策が効いたかを判断しやすくなります。