Web開発14分で読める

Webサイト高速化の基本 - Core Web Vitalsを改善する方法

Googleが重視するCore Web Vitalsの指標と、サイトを高速化するための具体的な方法を解説します。

Core Web Vitalsとは

Core Web Vitalsは、Googleが定義するWebページのユーザー体験を測る指標です。2021年からGoogle検索のランキング要因に含まれており、SEOに直接影響します。

パフォーマンスがビジネスに与える影響:

  • ページ読み込みが1秒遅れると、コンバージョン率が7%低下(Amazon調査)
  • モバイルでは3秒以上かかると53%のユーザーが離脱(Google調査)
  • 表示速度が0.1秒改善すると、コンバージョンが8%向上(Walmart調査)

各指標の詳細と目標値

3つの主要指標

🎨

LCP

Largest Contentful Paint - メインコンテンツの表示速度

👆

INP

Interaction to Next Paint - 操作への応答速度

📐

CLS

Cumulative Layout Shift - レイアウトの安定性

目標値と評価基準

指標良好改善が必要不良
LCP2.5秒以下2.5〜4.0秒4.0秒超
INP200ms以下200〜500ms500ms超
CLS0.1以下0.1〜0.250.25超

LCP(Largest Contentful Paint)

ビューポート内で最も大きなコンテンツ(画像、動画、テキストブロック)が表示されるまでの時間です。

🖼️ ヒーロー画像やメインビジュアルの表示速度が重要
📝 大きなテキストブロックも対象になる

INP(Interaction to Next Paint)

ユーザーがクリックやタップをしてから、画面が更新されるまでの時間です。2024年3月にFIDに代わって採用されました。

CLS(Cumulative Layout Shift)

ページ読み込み中に要素が予期せずずれる量を測定します。広告や画像の遅延読み込みでずれが発生しやすいです。

最適化テクニック

1. 画像の最適化(LCP改善)

1
次世代フォーマットを使用

WebPはJPEGより25-35%軽量。AVIFはさらに20%軽量

2
適切なサイズにリサイズ

表示サイズの2倍(Retina対応)を上限に

3
遅延読み込み(Lazy Loading)

ファーストビュー外の画像は後から読み込む

4
重要な画像はプリロード

LCPに関わる画像は優先的に読み込む

2. JavaScriptの最適化(INP改善)

テクニック効果実装方法
コード分割初期読み込み量を削減dynamic import()を使用
遅延読み込みメインスレッドのブロックを回避defer/async属性を使用
ツリーシェイキング未使用コードを除去ES Modulesを使用
長いタスクの分割UIのブロックを回避setTimeout/requestIdleCallback

3. CSSの最適化

クリティカルCSSをインライン化(ファーストビュー用)
🗑️ 未使用のCSSを削除(PurgeCSSなどを使用)
📦 CSSを圧縮(minify)

4. レイアウトシフトの防止(CLS改善)

CLSの主な原因:

  • サイズ未指定の画像や動画
  • 動的に挿入されるコンテンツ
  • 遅延読み込みされる広告
  • Webフォントの読み込み

5. サーバー・インフラ最適化

🌐

CDNの活用

ユーザーに近いサーバーから配信

💾

キャッシュ設定

静的ファイルを長期キャッシュ

🔗

HTTP/2・HTTP/3

多重化で並列ダウンロード

🗜️

Gzip/Brotli圧縮

転送サイズを70%削減

実装コード例

画像の遅延読み込み

HTML
<!-- ファーストビューの画像(プリロード) -->
<link rel="preload" as="image" href="hero.webp">
<img src="hero.webp" alt="ヒーロー画像" fetchpriority="high">

<!-- ファーストビュー外の画像(遅延読み込み) -->
<img src="photo.webp" alt="写真" loading="lazy">

CLSを防ぐ画像の指定

HTML
<!-- 必ずwidth/heightを指定 -->
<img
  src="photo.webp"
  alt="写真"
  width="800"
  height="600"
  style="aspect-ratio: 800/600; width: 100%; height: auto;"
>

JavaScriptの遅延読み込み

HTML
<!-- 重要なスクリプトは同期読み込み -->
<script src="critical.js"></script>

<!-- 解析系は遅延読み込み -->
<script src="analytics.js" defer></script>

<!-- 独立したスクリプトは非同期 -->
<script src="widget.js" async></script>

Reactでのコード分割

React (JavaScript)
import { lazy, Suspense } from 'react';

// 動的インポートでコード分割
const HeavyComponent = lazy(() =>
  import('./HeavyComponent')
);

function App() {
  return (
    <Suspense fallback={<Loading />}>
      <HeavyComponent />
    </Suspense>
  );
}

測定ツール

ツール特徴用途
PageSpeed Insights実際のユーザーデータ(CrUX)を表示本番サイトの評価
Lighthouse詳細な改善提案を表示開発中の診断
Chrome DevToolsリアルタイムで計測可能デバッグ・検証
Web Vitals Extensionブラウザで常時表示日常的なモニタリング
Search Consoleサイト全体のレポート長期的な傾向分析

改善の優先順位

1

現状を測定

PageSpeed Insightsで各指標を確認

2

最も悪い指標から改善

「不良」の指標を優先的に対処

3

効果を検証

変更後に再度測定して効果を確認

まとめ

サイトの高速化はSEOとユーザー体験の両方に効果があります。まずはPageSpeed Insightsで現状を把握し、「不良」の指標から改善していきましょう。

当サイトもCore Web Vitalsの最適化を行っています。画像のWebP変換、遅延読み込み、コード分割など、この記事で紹介したテクニックを実践しています。

H
honualohak編集部

テクノロジーで人々の日常をより便利に。AI、プログラミング、Web開発に関する情報を発信しています。