Core Web Vitals:Webパフォーマンスの測定と改善
高速なウェブサイトを構築したのに、ユーザーからはまだ遅いという苦情が寄せられる。あるいは、Googleのアップデート後にSEOの順位が下がったかもしれない。原因はCore Web Vitalsかもしれません。これはGoogleがユーザーエクスペリエンスを測る指標です。このガイドでは、Core Web Vitalsとは何か、正確に測定する方法、そしてそれぞれを改善するための実践的な手順を学びます。
Core Web Vitalsとは?
Core Web Vitalsは、ユーザーエクスペリエンスの重要な側面を数値化する3つの特定の指標です。
- Largest Contentful Paint (LCP): 読み込みパフォーマンスを測定します。最大のコンテンツ要素(画像、動画、テキストブロック)が表示されるまでの時間を示します。LCPは2.5秒未満を目指しましょう。
- First Input Delay (FID): インタラクティブ性を測定します。ユーザーが最初に操作(リンクのクリックなど)してからブラウザが応答するまでの時間を記録します。FIDは100ミリ秒未満を目指しましょう。
- Cumulative Layout Shift (CLS): 視覚的な安定性を測定します。読み込み中に発生する予期しないレイアウトシフトを数値化します。CLSは0.1未満を目指しましょう。
これらの指標はGoogleのページエクスペリエンスシグナルの一部であり、SEOに直接影響します。しかしそれ以上に、遅い読み込み、反応しないクリック、コンテンツの飛び出しといった実際のユーザーのフラストレーションを反映しています。
Core Web Vitalsの測定方法
測定しなければ改善はできません。主なアプローチは2つあります。ラボデータ(合成テスト)とフィールドデータ(実際のユーザーモニタリング)です。完全な全体像を得るには両方を使いましょう。
ラボツール
- Lighthouse: Chrome DevToolsに組み込まれています(F12 → Lighthouseタブ)。パフォーマンスを監査し、LCP、FID(TBTとして)、CLSのスコアを提供します。拡張機能が結果を歪めないよう、シークレットモードで実行してください。
- WebPageTest: 詳細なウォーターフォール分析と複数の場所からのテストを行うための高度なツールです。
- PageSpeed Insights: ラボデータとフィールドデータを組み合わせます。利用可能な場合は実際のCrUXデータを表示します。
フィールドツール
- Chrome User Experience Report (CrUX): 数百万のサイトの実際のユーザー指標の公開データセットです。PageSpeed InsightsまたはBigQuery経由でアクセスできます。
- Google Search Console: Core Web Vitalsレポートは、フィールドデータに基づいて注意が必要なURLグループを表示します。
- web-vitals JavaScriptライブラリ: サイトに追加して独自のフィールドデータを収集し、アナリティクスに送信できます。
// 例:web-vitalsライブラリの使用
import {onLCP, onFID, onCLS} from 'web-vitals';
function sendToAnalytics(metric) {
// あなたのアナリティクスエンドポイントに置き換えてください
console.log(metric.name, metric.value);
}
onLCP(sendToAnalytics);
onFID(sendToAnalytics);
onCLS(sendToAnalytics);
Largest Contentful Paint (LCP)の改善
LCPはしばしば最も困難な指標です。サーバーの応答時間、リソースの読み込み、クライアントサイドレンダリングの影響を受けます。次の手順に従ってください。
- サーバー応答を最適化する: キャッシュ(CDN、サーバーサイドキャッシュ)を使用し、ホスティングをアップグレードし、バックエンド処理時間を短縮します。
- 重要なリソースを優先する: LCP画像やフォントをプリロードします。主要なアセットには
<link rel="preload">を使用します。 - 画像を圧縮する: モダンなフォーマット(WebP、AVIF)で配信し、品質を損なわずに画像を圧縮します。Image Compressorのようなツールが役立ちます。
- レンダリングをブロックするリソースを排除する: 重要でないCSSとJavaScriptを遅延させます。クリティカルCSSをインライン化します。
- CDNを使用する: コンテンツをグローバルに配信してレイテンシを減らします。
First Input Delay (FID)の改善
FIDは応答性を測定します。FIDが高いということは、ユーザーが操作しようとしたときにメインスレッドがビジー状態であることを意味します。改善するには:
- 長いタスクを分割する:
setTimeoutやrequestIdleCallbackを使用してJavaScriptを小さなチャンクに分割します。 - メインスレッドの作業を最小化する: 未使用のJavaScriptを削除し、重要でないスクリプトを遅延させ、コード分割を使用します。
- イベントハンドラを最適化する: イベントリスナー内で重い同期処理を避けます。
- Web Workersを使用する: 高コストな計算をワーカースレッドにオフロードします。
注:FIDは2024年3月にInteraction to Next Paint (INP)に置き換えられます。原則は同様です — メインスレッドを空けておきましょう。
Cumulative Layout Shift (CLS)の改善
CLSは予期しないレイアウトシフトを測定します。一般的な原因には、サイズ指定のない画像、広告、埋め込み、Webフォントなどがあります。次のように修正します。
- 画像と動画には常にwidthとheight属性を設定する: これによりスペースが確保され、シフトが防止されます。
- 広告や埋め込み用のスペースを確保する: CSSの
aspect-ratioまたは固定サイズのコンテナを使用します。 - 既存のコンテンツの上にコンテンツを挿入しない: ユーザーの操作に応答する場合を除きます。
font-display: swapとフォントのプリロードを使用する: フォントスワップによるシフトを最小化します。
継続的なモニタリングのためのツールとワークフロー
パフォーマンスは一度きりの修正ではありません。リグレッションを捉えるためにモニタリングを設定しましょう。
- web-vitalsライブラリを追加して、指標をアナリティクスプラットフォームに送信します。
- パイプラインでLighthouse CIを使用し、スコアがしきい値を下回った場合にビルドを失敗させます。
- Search ConsoleのCore Web Vitalsレポートを定期的に確認します。
開発中の簡単なチェックには、Chrome DevToolsのLighthouseタブを使用します。より深い分析にはWebPageTestを試してください。
FAQ
良いLCPスコアとは?
良いLCPは2.5秒以下です。2.5秒から4秒の間は改善が必要で、4秒を超えると不良です。
Core Web Vitalsはどのくらいの頻度で測定すべきですか?
大きな変更後と、フィールドデータを通じて継続的に測定します。ラボテストはデバッグに最適で、フィールドデータは実際のユーザーエクスペリエンスを反映します。
Core Web Vitalsの改善は本当にSEOに影響しますか?
はい、Googleはページエクスペリエンスをランキングシグナルとして使用していますが、コンテンツの関連性が依然として最重要です。良いCore Web Vitalsはユーザーエンゲージメントとコンバージョンも改善します。
より良いLCPのために画像を最適化する準備はできましたか?品質を犠牲にせずファイルサイズを削減する無料のImage Compressorをお試しください。