Core Web Vitals:Webパフォーマンスを測定・改善する方法

Web2026-11-09TryQuickToolBox

モダンなWebアプリを構築しても、ユーザーから「遅い」と感じられるとの声が上がるかもしれません。検索順位にも影響する可能性があります。Core Web Vitals(CWV)は、Googleがユーザー体験を測る指標です:Largest Contentful Paint(LCP)、Interaction to Next Paint(INP)、Cumulative Layout Shift(CLS)の3つです。このガイドでは、これらを正確に測定し、効果的に改善する方法を紹介します。

Core Web Vitalsとは?

Core Web Vitalsは、ユーザー体験の重要な側面を定量化する3つの指標です:

これらの指標は、フィールド測定(実際のユーザーから)とラボ測定(制御された環境で)の両方で行われます。どちらも重要です。

Core Web Vitalsの測定方法

問題を診断するには、フィールドデータとラボデータの両方が必要です。

フィールドデータ(リアルユーザーモニタリング)

フィールドデータは、デバイスやネットワーク全体での実際のユーザー体験を反映します。以下のソースを使用してください:

import {onLCP, onINP, onCLS} from 'web-vitals';

function sendToAnalytics(metric) {
  const body = JSON.stringify(metric);
  navigator.sendBeacon('/analytics', body);
}

onLCP(sendToAnalytics);
onINP(sendToAnalytics);
onCLS(sendToAnalytics);

ラボデータ(合成テスト)

ラボツールは制御された環境で読み込みをシミュレートするため、デバッグやCI統合に最適です。

ベストプラクティス:ラボデータで修正点を特定し、フィールドデータで効果を検証します。

Largest Contentful Paint(LCP)の改善

LCPは通常、ヒーロー画像や大きなテキストブロックが支配的です。これらを最適化しましょう:

  1. LCPリソースを最適化する:画像を圧縮し(WebP/AVIFを使用)、srcsetでレスポンシブサイズを提供し、LCP画像が重要な場合はプリロードします。
  2. レンダリングブロッキングリソースを排除する:クリティカルCSSをインライン化し、非クリティカルなCSSとJavaScriptを遅延させます。
  3. サーバー応答時間(TTFB)を改善する:CDNを使用し、キャッシュを有効にし、バックエンドクエリを最適化します。
  4. クライアントサイドレンダリングを減らす:SPAの場合、初期表示にサーバーサイドレンダリング(SSR)や静的生成を検討します。

例:LCP画像をプリロードする:

<link rel="preload" as="image" href="/hero.avif" imagesrcset="/hero-480.avif 480w, /hero-800.avif 800w" imagesizes="(max-width: 600px) 480px, 800px">

Interaction to Next Paint(INP)の改善

INPは、ユーザーのインタラクションから次のペイントまでの遅延を測定します。長いタスクと重いJavaScriptが一般的な原因です。

  1. 長いタスクを分割する:setTimeout、requestIdleCallback、またはスケジューラAPIを使用してメインスレッドに制御を譲ります。
  2. イベントハンドラを最適化する:コストの高いハンドラをデバウンスまたはスロットルし、レイアウトスラッシングを避けます。
  3. JavaScriptの実行時間を減らす:コード分割、ツリーシェイキング、非クリティカルスクリプトの遅延を行います。
  4. Web WorkersをCPU集約的な作業に使用します。

例:メインスレッドに制御を譲る:

async function yieldToMain() {
  if ('scheduler' in window && 'yield' in scheduler) {
    return scheduler.yield();
  }
  return new Promise(resolve => setTimeout(resolve, 0));
}

async function handleClick() {
  // ... 何らかの処理
  await yieldToMain();
  // ... 続行
}

Cumulative Layout Shift(CLS)の改善

CLSは、要素が予期せず移動したときに発生します。以下の方法で防ぎましょう:

例:広告用のスペースを確保する:

<div>
  <!-- ここに広告が読み込まれる -->
</div>

継続的改善のためのツールとワークフロー

パフォーマンスは一度きりの修正ではありません。測定をワークフローに統合しましょう:

簡単なチェックには、PageSpeed Insightsでページを実行してください。ラボデータとフィールドデータを組み合わせて表示します。

FAQ

Core Web Vitalsの現在のしきい値は?

LCP:良好≤2.5秒、改善が必要≤4秒、不良>4秒。INP:良好≤200ms、改善が必要≤500ms、不良>500ms。CLS:良好≤0.1、改善が必要≤0.25、不良>0.25。

CrUXデータはどのくらいの頻度で更新されますか?

CrUXデータは毎日更新されますが、データセットは過去28日間のローリングウィンドウを反映しています。Search Consoleは定期的に更新されます。

デザインを変更せずにCore Web Vitalsを改善できますか?

はい。多くの改善は技術的なものです:画像の最適化、スクリプトの遅延、動的コンテンツのスペース確保、メインスレッドの作業削減などです。

サイトのパフォーマンスを分析する準備はできましたか?Nginxログアナライザーを使用して、TTFBとLCPに影響する遅いサーバー応答を特定しましょう。