Core Web Vitals が不合格?LCP・INP・CLS の直し方
結論: 「Core Web Vitals が不合格」とは、3つの指標のうち少なくとも1つが、実際の訪問者のデータで基準を満たしていないということです。LCP(読み込み)は2.5秒以内、INP(応答性)は200ミリ秒以内、CLS(視覚的な安定性)は0.1以下が基準で、いずれも75パーセンタイルで測ります。弱い指標は、ラボのスコアではなく、実際の訪問者のフィールドデータで探し、まずその1つを直します。Google は、ランキングシステムが Core Web Vitals を使っていると述べていますが、良い数値が上位表示を保証するわけではありません。
「Core Web Vitals が不合格」とはどういう意味か
Core Web Vitals は、Google の Web Vitals の取り組みのうち、すべてのウェブページに当てはまる部分です。web.dev は、体験の側面ごとに1つずつ、3つの指標を挙げています。
| 指標 | 測るもの | 良好な値 |
|---|---|---|
| LCP(Largest Contentful Paint) | 読み込み:表示領域内で最大の画像、テキストブロック、動画が表示されるタイミング | 2.5 秒以内 |
| INP(Interaction to Next Paint) | 応答性:クリック、タップ、キー入力に、ページが目に見えて反応するまでの速さ | 200 ミリ秒以内 |
| CLS(Cumulative Layout Shift) | 視覚的な安定性:ページを使っている間に、見えているコンテンツがどれだけ動き回るか | 0.1 以下 |
値は、ページ読み込みの75パーセンタイルで、モバイルとデスクトップを別々に評価します。平たく言えば、4回の訪問のうち3回で値が良好でなければならず、モバイルとデスクトップには、それぞれ別の判定が出ます。web.dev は、3つすべての指標で、75パーセンタイルの目標を満たしたページを、ツールが合格と数えるよう求めています。つまり、赤い指標が1つあれば、不合格になります。
基準線の細かい点があります。web.dev は、INP と CLS を「以下」と書いていますが、Google の検索のドキュメントは「200 ミリ秒未満」「0.1 未満」と書いています。基準線をはっきり下回ることを目指せば、この違いは問題になりません。
知っておくべき変更が1つあります。INP は、2024年3月に、Core Web Vitals として First Input Delay(FID)に代わりました。web.dev の告知にあるとおりです。FID をまだ挙げているガイドは、古くなっています。この記事で挙げたページは、すべて2026年11月4日に読みました。web.dev の概要ページの最終更新は、2024年10月31日です。
Core Web Vitals は Google の順位に影響するか
Google によれば影響しますが、重みは示していません。Google のページエクスペリエンスのページには、“Core Web Vitals are used by our ranking systems.”(Core Web Vitals は、当社のランキングシステムで使われている)とあります。Google は、検索で成功するために良い値を勧めており、ページエクスペリエンスには単一のシグナルはない、とも書いています。
同じページは、限界についても同じくらいはっきり書いています。Search Console の Core Web Vitals レポートやサードパーティのツールで良い結果が出ても、それは “doesn't guarantee that your pages will rank at the top of Google Search results”(ページが Google 検索結果の上位に表示されることを保証するものではない)とされています。SEO のためだけに満点を追い求めるのは、時間の使い方として最善ではないかもしれない、とも書かれています。ページエクスペリエンスが悪くても、Google は常に、最も関連性の高いコンテンツを表示しようとします。
Google が公開していないのは、指標の重みです。そのため、私たちも数値は挙げません。以下は私たちの解釈であって、Google の発言ではありません。基準値は、訪問者に対する品質のラインとして扱い、3つすべてを「良好」に入れてから、時間をコンテンツに戻しましょう。Google のコアランキングシステムは、一般にコンテンツをページ単位で評価します。そのため、重要なページの種類ごとに確認してください。
ラボデータとフィールドデータ:Core Web Vitals で重視されるのはどちらか
評価の基になるのは、実際の訪問を測ったフィールドデータです。Google の Chrome User Experience Report(CrUX)が、実際の Chrome ユーザーからそれを集めていて、PageSpeed Insights と Search Console の Core Web Vitals レポートがそれを表示します。web.dev によれば、CrUX のレポートは28日間を対象とします。
ラボデータは、管理された環境でページを1回読み込んで得られます。デバイス1台、ネットワーク1つ、場所1か所です。原因を見つけたり、公開前に修正をテストしたりするには最適ですが、LCP のガイドは、“lab tests alone may not be entirely representative”(ラボテストだけでは、完全に代表的とは限らない)と注意しています。両者が食い違うときは、まず実際のユーザーデータに集中するよう、LCP のガイドが述べています。食い違うのには、もっともな理由があります。
- LCP の要素が違うことがある。 ラボの実行では、いつも同じ要素が見つかります。実際の訪問では、画面サイズが違ったり、ログイン後のコンテンツがあったり、A/B テストがあったりします。
- INP には実際の人が必要。 Lighthouse などのラボツールは、誰もクリックしないままページを読み込むので、INP を測れません。ラボでの代わりは、Total Blocking Time(TBT)です。TBT を改善すると、INP も改善することがあります。
- CLS は読み込み後も数え続ける。 ラボの実行で見えるのは、ほとんど読み込みの途中だけです。実際の訪問では、訪問者のスクロール中に現れるコンテンツも、レイアウトをずらすことがあります。
- キャッシュは実際の訪問者を助ける。 ラボテストは、たいてい空のキャッシュから始まります。再訪した訪問者や、戻る・進むのキャッシュ(bfcache)では、ページがより速く読み込まれます。
数値を読む手順は、次の4つです。
- PageSpeed Insights でアドレスを実行する。 英語表示では、“Discover what your real users are experiencing” のセクションにフィールドデータが、“Diagnose performance issues” にラボの実行結果があります。
- 見ているものを確認する。 モバイルとデスクトップ、単一の URL とオリジン全体を切り替えます。ある URL のデータが少なすぎる場合、PageSpeed Insights は、代わりにオリジンのデータを表示します。
- 75パーセンタイルで基準線を超えている指標を見つける。 それが、不合格の指標です。訪問が少なすぎると、フィールドデータはありません。その場合は、ラボの値を使い、web.dev の小さな
web-vitalsライブラリで、自分の訪問者を測ります。 - その指標のラボ診断を開き、 原因を確かめて、まずその1点を直します。
LCP の直し方:最大の要素の表示が遅い
LCP は、表示領域内で最大の画像、テキストブロック、動画が描画されるタイミングを報告します。web.dev の LCP のガイドは、その時間を、合計が LCP になる4つの部分に分けています。サーバーの応答(TTFB)、ブラウザーが LCP のリソースの読み込みを始めるまでの遅延、そのリソースの読み込みにかかる時間、そして要素が描画されるまでの遅延です。何かを変える前に、最も大きい部分を見つけてください。1つの部分を縮めても、時間がほかの部分に移るだけのことがあるからです。圧縮した画像は、スクリプトが読み込まれるまで要素が隠れたままなら、役に立ちません。
Chrome チームの最も効果的な修正のリストには、次のものが含まれています。
- LCP の画像を見つけやすくし、優先度を与える。
srcまたはsrcsetを持つ通常の<img>を使い、JavaScript が必要なdata-srcは使いません。ページをブラウザー内だけで組み立てるより、サーバー側レンダリングを選びます。fetchpriority="high"を追加し、この1つの画像からloading="lazy"を外します。 - サーバーの応答を短くする。 コンテンツを訪問者の近くから配信し、キャッシュします。たいていは CDN を使います。
同じタグが LCP を扱い、サイズの指定を通じて CLS も扱います。
<!-- メイン画像:HTML 内に置き、優先度は高く、lazy にせず、サイズを指定する -->
<img src="/img/hero.webp" width="1200" height="630" alt="短い説明" fetchpriority="high">
<!-- ページの下のほうの画像:ここでは遅延読み込みで問題ない -->
<img src="/img/team.webp" width="600" height="400" alt="短い説明" loading="lazy">
INP の直し方:ページの反応が遅い
INP は、訪問中のすべてのクリック、タップ、キー入力を観測し、おおよそ最も遅いものを報告します(インタラクションが非常に多いページでは、外れ値は無視されます)。ホバーとスクロールは数えません。INP のガイドによれば、各インタラクションは3つの部分からなります。入力の遅延、イベントハンドラーが実行される時間、そして次のフレームが表示されるまでの遅延です。原因として多いのは、JavaScript がメインスレッドを占有していることです。Chrome チームの主な修正は、次のとおりです。
- 長いタスクを分割する。 50ミリ秒を超えるタスクは、メインスレッドをブロックします。制御をこまめに返します。ブラウザーが対応していれば
scheduler.yield()を、従来の方法としてはsetTimeoutを使います。 - 配信する JavaScript を減らす。 Chrome DevTools のカバレッジツールで未使用のコードを見つけ、最初は不要なコードを分割し、タグマネージャーの古いタグを整理します。
- 大きなレンダリングの更新を避ける。 DOM を小さく保ち、強制レイアウトを避け、画面外のコンテンツには CSS containment を使います。
CLS の直し方:レイアウトがずれる
CLS には単位がありません。見えているコンテンツがどれだけ動いたかと、どれだけ遠くへ動いたかを組み合わせた値です。実際の訪問では、訪問全体にわたって数えますが、ユーザーの操作から500ミリ秒以内に起きたずれは除外されます。web.dev の CLS のガイドは、よくある原因を挙げています。サイズを指定していない画像、広告、サイズを指定していない埋め込みや iframe、動的に挿入されるコンテンツ、そしてウェブフォントです。効果のある対策は、次のとおりです。
- スペースを確保する。 画像と動画に
widthとheightを指定するか、CSS のaspect-ratioプロパティを使います。サイズが分からないコンテンツには、初期値のゼロより、適切なmin-heightのほうが役に立ちます。 transformでアニメーションさせる。top、left、marginをアニメーションさせると、レイアウトがずれます。スライドして現れる Cookie バナーが、典型的な例です。- 戻る・進むのキャッシュを働かせる。 これは、描画が完了したページを復元します。よくある妨げは、
no-storeのキャッシュ指示と、unloadイベントのリスナーです。 - ウェブフォントを扱う。
font-display: optional、size-adjustで寸法を合わせた代替フォント、重要なフォントの先読みは、いずれもフォントに起因するずれを減らします。
SEOgrinder が Core Web Vitals をチェックする方法
SEOgrinder は私たちのツールで、私たちが開発しています。SEOgrinder に公開アドレスを入力すると、速度の数値は Google PageSpeed Insights から取得され、モバイルとデスクトップの両方が表示されます。「Core Web Vitals」カードは、LCP と CLS を Lighthouse のラボの実行から、INP を実際の訪問者から表示し、別のボックスには、過去28日間の実際のユーザーデータが表示されます。Google がそのページのデータを十分に持っていない場合、レポートは推測せずに、そのことを伝えます。「モバイルの実際の訪問者はコンテンツの表示まで … 待っています」のようなタスクは、指標、値、対処を示します。LCP に影響するサーバーの応答の遅さには、専用のタスク「サーバーの応答が遅いです」があります。
制限もあります。SEOgrinder は Google の数値を読み取るもので、自分自身での実ユーザーの計測の代わりにはなりません。順位は測りません。速度計測の Google の1日あたりの割り当てを使い切っている場合、レポートにはその部分が含まれません。
よくあるミス
- ラボのスコアだけを信用する。 ラボのスコアは INP を測れず、訪問者の体験とは違って見えることがあります。まず、実際の訪問者の値から始めましょう。
- デバイスを1つしか確認しない。 モバイルとデスクトップは、別々に評価されます。
- メイン画像を lazy 読み込みにする。 LCP の画像に
loading="lazy"を付けると、遅延が増えます。 - 画像のサイズを書かない。
widthとheightがないと、ブラウザーはスペースを確保できません。 - LCP の間違った部分を直す。 画像を圧縮するのは、内訳を見て読み込み時間が問題だと分かってからにします。
- すぐに結果が出ると期待する。 フィールドデータは28日間を対象とするので、変化は少しずつです。修正の直後はラボの実行結果を、そのあとの数週間は実際の訪問者の数値を確認しましょう。
よくある質問
Core Web Vitals で、良いスコアとはどのくらいですか?
単一のスコアはありません。75パーセンタイルで、LCP が 2.5 秒以内、INP が 200 ミリ秒以内、CLS が 0.1 以下なら、ページは合格です。Lighthouse でおなじみの0から100の数字は、ラボの値で、別のものです。
PageSpeed Insights に、自分のサイトの実際のユーザーデータが表示されないのはなぜですか?
たいていは、CrUX が報告するには訪問が少なすぎるためです。その場合、web.dev は、実際の訪問者の独自の計測を追加することを勧めています。それまでは、ラボの値をもとに作業してください。
満点は必要ですか?
いいえ。目標は、合格することです。Google 自身も、SEO のためだけに満点を追い求めるのは、時間の使い方として最善ではないかもしれないと述べています。
次のステップ
いちばん重要なページを SEOgrinder にかけ、「Core Web Vitals」カードを開いて、まず実際の訪問者の値を見てください。不合格になっている指標を1つ直し、「再チェック」を押して、ラボの値を読みます。全体像は、SEOチェックリストの記事にあります。