Core Web Vitalsを劇的改善!Next.jsパフォーマンス最適化テクニック
GoogleのCore Web Vitals(LCP・FID・CLS)をNext.jsで改善する具体的な方法を解説。画像最適化、フォント読み込み、遅延ロードなど実践的なテクニックを紹介。
Core Web Vitalsを劇的改善!Next.jsパフォーマンス最適化テクニック
「PageSpeed Insightsのスコアが真っ赤…」
そんな悩みを抱えていませんか?2021年以降、GoogleはCore Web Vitalsをランキング要因に含めています。つまり、サイトが遅いと検索順位が下がる可能性があるということ。
この記事では、Next.jsでCore Web Vitalsを改善する具体的なテクニックを紹介します。
Core Web Vitalsとは?
Googleが定義する「ユーザー体験の品質指標」です。
| 指標 | 意味 | 目標値 |
|---|---|---|
| LCP (Largest Contentful Paint) | 最大コンテンツの表示時間 | 2.5秒以下 |
| INP (Interaction to Next Paint) | 応答性 | 200ms以下 |
| CLS (Cumulative Layout Shift) | レイアウトのずれ | 0.1以下 |
※FID(First Input Delay)は2024年3月にINPに置き換わりました。
1. LCP(最大コンテンツ表示)の改善
LCPは「ページ内で一番大きな要素が表示されるまでの時間」。多くの場合、ヒーロー画像がこれに該当します。
1-1. next/imageを正しく使う
ポイント:
priority属性で優先読み込みplaceholder="blur"で表示までの体験改善- サイズを明示してレイアウトシフト防止
1-2. 画像フォーマットの最適化
AVIFとWebPは従来のJPEG/PNGより30-50%小さい。Next.jsは自動で最適なフォーマットを配信します。
1-3. 外部画像の最適化
1-4. サーバーレスポンスの高速化
2. INP(応答性)の改善
INPは「ユーザー操作から次の描画までの時間」。JavaScriptの実行が重いと悪化します。
2-1. 重いコンポーネントの遅延読み込み
2-2. イベントハンドラの最適化
2-3. スクロールイベントのデバウンス
2-4. バンドルサイズの削減
大きなライブラリがあれば、軽量な代替を検討:
| 重いライブラリ | 軽量な代替 |
|---|---|
| moment.js (300KB) | date-fns (75KB) / dayjs (6KB) |
| lodash (70KB) | 必要な関数だけimport |
| chart.js | recharts / lightweight-charts |
3. CLS(レイアウトシフト)の改善
CLSは「読み込み中にレイアウトがずれる量」。画像やフォントが遅れて読み込まれると発生。
3-1. 画像のサイズを明示
3-2. フォントの最適化
display: 'swap'で、フォント読み込み中はシステムフォントを表示。レイアウトシフトを防ぎます。
3-3. 動的コンテンツのスペース確保
3-4. iframeのサイズ指定
4. その他の最適化
4-1. プリロードの活用
4-2. 不要なJavaScriptの削除
4-3. スクリプトの遅延読み込み
| strategy | タイミング |
|---|---|
beforeInteractive | ハイドレーション前 |
afterInteractive | ハイドレーション後(デフォルト) |
lazyOnload | ページ読み込み完了後 |
5. 測定方法
5-1. PageSpeed Insights
PageSpeed Insights で実際のユーザーデータを確認。
5-2. Chrome DevTools
- F12でDevToolsを開く
- Lighthouseタブ
- 「Analyze page load」をクリック
5-3. Web Vitals Extension
Web Vitals Chrome拡張でリアルタイム測定。
5-4. Next.jsのビルトイン分析
改善チェックリスト
LCP
- ヒーロー画像に
priorityを付けた - next/imageを使っている
- 画像フォーマットをAVIF/WebPに設定
- 静的生成を活用している
INP
- 重いコンポーネントを遅延読み込み
- バンドルサイズを確認
- 不要なライブラリを削除
CLS
- 全画像にサイズを指定
- フォントに
display: swapを設定 - 動的コンテンツにスケルトンを使用
まとめ
Core Web Vitalsの改善は、一度やれば継続的に効果を発揮します。
重要なポイント:
- 画像最適化が最優先 - next/imageを正しく使う
- フォントを最適化 - next/fontでCLS防止
- 重いコードは遅延読み込み - dynamic importを活用
- 定期的に測定 - PageSpeed Insightsで確認
これらを実践すれば、スコアは確実に改善します。焦らず一つずつ対応していきましょう。
質問があればX(@ADA_Lab_tech)までお気軽にどうぞ!