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 で確認する

  1. PageSpeed Insights を開きます。
  2. 調べたいページの URL を入力して「分析」を押します。
  3. 上部の「実際のユーザーの環境で評価する」欄が CrUX のデータです。「モバイル」「デスクトップ」のタブで切り替えられます。
  4. 「このURL」と「オリジン」の切り替えがあれば、ページ単位とサイト全体の両方を確認します。

下に表示される Lighthouse の診断(ラボデータ)は、その場で1回測った結果です。CrUX の値と食い違うことがあるのは、測定条件が違うためです。合否の判断は CrUX の値で行い、原因探しに Lighthouse の診断を使う、という使い分けをします。

方法2: CrUX API で数値を取得する

API キーを用意する

  1. Google Cloud コンソールでプロジェクトを作成(または既存のものを選択)します。
  2. 「API とサービス」で Chrome UX Report API を有効にします。
  3. 「認証情報」で 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 で週ごとの推移を確認すると、どの対策が効いたかを判断しやすくなります。

関連記事

お気軽にご相談ください

お見積りへ お問い合わせへ
▲