Core Web Vitals改善の実務|LCP・CLS・INPの計測から対策までの進め方

「サイトが遅い気がする」という曖昧な相談を、具体的な改善タスクに落とすための共通言語がCore Web Vitalsです。Googleが定義するユーザー体験の指標で、検索順位への影響もあるため、フロントエンドの運用では避けて通れません。

本記事では、LCP・CLS・INPの3指標について、それぞれの意味と計測方法、現場でよく効く改善手段を整理します。「どの指標が悪いのか」を特定してから手を打つ、という順序が何より重要です。

目次

3つの指標が示すもの

Core Web Vitalsは現在、次の3指標で構成されています。それぞれ「良好」とされる目安の閾値があります。

  • LCP(Largest Contentful Paint): 最大の要素が表示されるまでの時間。2.5秒以内が良好。体感的な「表示の速さ」に相当します
  • CLS(Cumulative Layout Shift): 表示中のレイアウトのずれの累積量。0.1以下が良好。「押そうとしたボタンがずれた」という体験の指標です
  • INP(Interaction to Next Paint): 操作してから画面が反応するまでの時間。200ミリ秒以内が良好。旧FIDの後継指標です

ユーザーからのクレームは「遅い」の一言でも、実際にはこの3つのどれが悪いかで打ち手がまったく変わります。まず切り分けることが最初の仕事です。

計測方法|LighthouseとCrUXの使い分け

計測には大きく2種類あります。ラボデータ(合成環境での計測)とフィールドデータ(実ユーザーの計測値)です。

  • Lighthouse: Chrome DevToolsから実行できるラボ計測。再現性が高く、改善前後の比較や原因調査に向きます。ただしINPは操作が必要なためラボでは直接計測できません
  • CrUX(Chrome UX Report): 実際のChromeユーザーから収集されたフィールドデータ。PageSpeed InsightsやSearch Consoleで確認でき、検索評価に使われるのはこちらです

現場でありがちなのが「Lighthouseのスコアは良いのにCrUXが悪い」というケースです。開発機の高速な環境と、実ユーザーの低速回線・低スペック端末の差が原因であることが多く、最終的な判断は必ずフィールドデータで行います。

LCPの改善|読み込みの最短経路を作る

LCPの対象は多くの場合、ファーストビューのメイン画像かヒーローテキストです。改善の基本は「LCP要素をブラウザにいかに早く発見・取得させるか」です。

  • LCP画像には loading="lazy" を付けない(遅延させるとその分LCPが悪化します)
  • fetchpriority="high"<link rel="preload"> で優先読み込みを指示する
  • 画像はWebP/AVIFで軽量化し、CDNから配信する
  • サーバー応答(TTFB)が遅い場合はキャッシュ戦略から見直す
<!-- ヒーロー画像を優先的に取得させる -->
<img src="hero.webp" fetchpriority="high" width="1200" height="600" alt="...">

CLSとINPの改善

CLS: 領域を先に確保する

CLSの原因の大半は「後から読み込まれるものが場所を押し広げる」ことです。画像には width/height 属性を必ず指定し、広告や埋め込みには min-height で枠を確保します。Webフォントによる文字のずれは font-display: swap と代替フォントのメトリクス調整で緩和できます。

INP: メインスレッドを塞がない

INPの悪化は、クリック時に走る重いJavaScript処理が原因です。長いタスクを分割する、状態更新を必要最小限にする、サードパーティスクリプトの読み込みを遅延させる、といった対策が基本です。Chrome DevToolsのPerformanceパネルで「Long Task」を特定するところから始めます。

まとめ

Core Web Vitals改善は「計測して悪い指標を特定する→指標ごとの定石を打つ→フィールドデータで効果を確認する」というサイクルの繰り返しです。LCPは読み込みの優先度、CLSは領域の事前確保、INPはメインスレッドの負荷、とそれぞれ見る場所が異なります。闇雲な最適化ではなく、まずPageSpeed InsightsでCrUXデータを確認するところから始めてみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

クラウド・バックエンドエンジニア。AWSを中心に設計・構築から運用までを担当しています。主要言語は Java・JavaScript・Python。運用の現場で拾った知見を、再現できる手順に落として残すのがこのブログのテーマです。

目次