ANTIGRAVITY LABEN
記事一覧/Tips & 活用術
Tips & 活用術/2026-07-08中級

Lighthouse は緑なのに Search Console の Core Web Vitals が赤いとき — 実ユーザー計測で遅い操作を名指しする運用メモ

Lighthouse は 90 点台なのにフィールドの Core Web Vitals が改善しない。ラボとフィールドの乖離を実ユーザー計測(RUM)で埋め、遅い INP の発生元を名指しして Antigravity で直すまでの運用手順をまとめました。

antigravity422core-web-vitalsINPRUMweb-performance

プレミアム記事

Lighthouse のスコアは 92 点でした。緑。何度走らせても緑。

それなのに Search Console の Core Web Vitals レポートは、INP が「改善が必要」のまま動きませんでした。実機で触っても、正直そこまで遅く感じない。

この食い違いに二週間ほど振り回されました。個人開発で小さなブログサイトを運営している私自身にとって、ラボの数字を上げることに費やした時間はそのまま損失でした。フィールドの数字は 1 ミリも動かなかった。

原因は単純でした。私はずっと、実ユーザーが触っていない画面を計測していたのです。この記事は、ラボとフィールドの乖離を実ユーザー計測で埋め、遅い操作を名指ししてから Antigravity で直したときの記録です。

ラボとフィールドは別物だと腹落ちさせる

まず、Lighthouse が測っているものを正確に理解し直しました。

Lighthouse は「ラボデータ」です。あなたのマシンで、1 回、決まった条件で読み込んだ結果にすぎません。とくに INP は、ラボでは操作をほとんど発生させないため、多くの場合ゼロに近い値が出ます。緑に見えて当然なのです。

一方、Search Console が表示するのは「フィールドデータ」、つまり Chrome ユーザーエクスペリエンスレポート(CrUX)による実ユーザーの p75 です。実際に人がボタンを押し、フォームに打ち込み、リストを絞り込んだ結果の分布です。

観点ラボ(Lighthouse)フィールド(CrUX / Search Console)
計測対象1 回の合成読み込み実ユーザーの 28 日分の分布
INP の扱い操作が少なく過小評価されがち実際の操作の p75 を反映
反映速度即時数日〜数週間の遅延
SEO 評価に使われるいいえはい

ランキングに効くのはフィールドです。だからラボが緑でもフィールドが赤いなら、信じるべきはフィールドの方でした。ここを腹落ちさせるまで、私はずっと間違った的を撃っていました。

実ユーザーの INP を自分で計測する

CrUX は便利ですが、粒度が粗く、遅延もあります。「どのページの、どの操作が遅いか」までは教えてくれません。そこで自分のサイトに実ユーザー計測(RUM)を仕込みました。

Google の web-vitals ライブラリには attribution 付きのビルドがあり、これが決定的でした。単に INP の値を返すだけでなく、その遅延を起こした具体的な要素とイベントまで教えてくれます。

// 実ユーザーの INP を発生元つきで収集する
import { onINP } from 'web-vitals/attribution';
 
onINP((metric) => {
  const attr = metric.attribution;
  const payload = {
    value: Math.round(metric.value),          // 実際の INP(ms)
    rating: metric.rating,                     // good / needs-improvement / poor
    target: attr.interactionTarget,            // 遅延を起こした DOM 要素のセレクタ
    type: attr.interactionType,                // pointer / keyboard
    // 内訳: 入力遅延・処理時間・描画遅延のどこで時間を食ったか
    inputDelay: Math.round(attr.inputDelay),
    processingDuration: Math.round(attr.processingDuration),
    presentationDelay: Math.round(attr.presentationDelay),
    path: location.pathname,
  };
  // ビーコンで軽量に送信(ページ離脱時も落とさない)
  navigator.sendBeacon('/api/rum', JSON.stringify(payload));
});

ここで送っている interactionTarget と 3 つの内訳が宝の地図でした。INP は「入力遅延(inputDelay)」「処理時間(processingDuration)」「描画遅延(presentationDelay)」の合計です。どこが太いかで、打つべき手がまるで変わります。

一週間ためて、pathtarget で集計しました。すると、Lighthouse で測っていたトップページではなく、記事一覧のタグ絞り込みで INP p75 が 410ms に達していたのです。実ユーザーの多くはそこを触っていました。私は人が来ない玄関ばかり磨いていたわけです。

計測を継続的な監視に載せる考え方は Antigravity で CLI 起動レイテンシを hyperfine で測る と同じで、まず数字の出どころを自分の手元に持つことが起点になります。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
ラボ(Lighthouse)とフィールド(CrUX/RUM)が乖離する理由と、どちらを信じるべきかの判断基準
web-vitals ライブラリの attribution から、遅い INP を起こした具体的な DOM 要素とイベントを特定する実装
名指しした 1 つの操作を Antigravity に渡して直し、フィールド p75 の改善を回帰テストで守るまでの流れ
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

Tips & 活用術2026-06-20
自動実行の再現性を守る — Antigravity CLI のバージョンを固定して挙動のブレを抑える
Go 製の Antigravity CLI が全ユーザーへ提供開始となり、更新も速いペースで続いています。自動運用に組み込んだ CLI が裏で上がると、ある朝のジョブだけ挙動が変わることがあります。バイナリのバージョンを固定し、各ランのログに素性を残し、更新は一本から慣らす——という再現性の守り方を、4サイトを夜間に自動運用している実作業からまとめます。
Tips & 活用術2026-06-17
Antigravityの生成コードが『正しいのに、よそよそしい』と感じたら試したい3つの指示
Antigravityの生成物が『動くのに自分のコードベースに馴染まない』と感じたときに見直したい、設計意図の渡し方。指示の文脈不足を埋める3つのパターンと、それでも噛み合わなかったケースを実体験から整理しました。
Tips & 活用術2026-06-16
Go 製 Antigravity CLI の応答性を実測して、夜間バッチの組み方を見直す
Antigravity CLI は Go で実装し直され、起動や初回応答の体感が変わりました。起動・初回応答・本処理の3つの時間を切り分けて実測し、その数字をもとに夜間バッチを直列から並列へ組み直すまでの手順をまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →