
LCP(Largest Contentful Paint)は、ページの読み込み中に最も大きなテキストブロックまたは画像がレンダリングされるまでの時間を示す指標です。LCPが遅いと、ユーザーは「ページが遅い」と感じてしまい、離脱率が高まります。この記事では、LCPを劇的に改善するための7つの具体的な方法を解説します。
目次
目次
1. 画像の最適化と遅延読み込みの活用
画像はLCPに大きく影響します。特にメインビジュアルやヒーローイメージがLCP要素になることが多いため、次の対策が有効です。
- WebPやAVIFなどの次世代フォーマットを使用
<img>
タグにwidth
とheight
を明示的に指定loading="lazy"
を使用して、ファーストビュー外の画像を遅延読み込み- 画像CDN(例:Cloudinary、ImageKit)を導入し、即時配信
<img
src="/images/hero.webp"
width="1200"
height="800"
decoding="async"
fetchpriority="high"
alt="ヒーローイメージ"
/>
2. クリティカルCSSの抽出とインライン化
レンダリングをブロックするCSSを減らすことでLCPが改善します。最初に表示される領域(ファーストビュー)のCSSだけをインライン化するのが効果的です。
critical
やpenthouse
などのツールでクリティカルCSSを抽出- インラインでHTML内に埋め込む
<style>
/* クリティカルCSS */
.hero {
font-size: 2rem;
background: #000;
color: #fff;
}
</style>
3. フォントのプリロードと表示戦略の明示
Webフォントの読み込みはLCPに影響します。以下の対策が有効です。
rel="preload"
で主要フォントをプリロードfont-display: swap;
を指定して描画をブロックさせない
<link
rel="preload"
as="font"
type="font/woff2"
href="/fonts/roboto.woff2"
crossorigin="anonymous"
/>
@font-face {
font-family: 'Roboto';
src: url('/fonts/roboto.woff2') format('woff2');
font-display: swap;
}
4. JavaScriptの読み込みを最適化
JSが多すぎると、レンダリングが遅れます。次の対策が有効です。
- 不要なJSの削除(使っていないライブラリなど)
defer
を使用してJSの実行を遅延- 必要なスクリプトだけを分割読み込み(コードスプリッティング)
<script src="main.js" defer></script>
5. サーバー応答時間の短縮(TTFB改善)
LCPの前にあるTTFB(Time To First Byte)も重要です。以下の対策で改善できます。
- CDN導入(Cloudflare、Fastlyなど)
- サーバーサイドレンダリング(SSR)
- キャッシュの活用(HTML・APIキャッシュ)
6. リソースのプリロード・プリフェッチ
LCP要素を優先的に読み込むために、以下のHTMLタグが役立ちます。
<link rel="preload" href="/images/hero.webp" as="image" fetchpriority="high">
fetchpriority="high"
を使うとLCP要素の優先度を上げられる(Chrome対応)
7. Core Web Vitalsモニタリングと改善ループ
LCPの改善は一度きりではなく、継続的なモニタリングと改善が必要です。
- Google Lighthouse や PageSpeed Insights で分析
- Chrome UX Report や Web Vitals ライブラリで実測値を取得
web-vitals
パッケージでLCPを監視
import { getLCP } from 'web-vitals';
getLCP(console.log);
まとめ:LCP改善はUX向上の第一歩
LCPの改善は、ユーザー体験を向上させる最も効果的な手段のひとつです。特に画像・CSS・JSの最適化と、優先読み込みの設定をするだけでも、ページ表示速度は劇的に向上します。定期的な分析と最適化を繰り返し、快適なWeb体験を提供しましょう。
