第 5 章
各種レンダリング戦略のパフォーマンス特性
Webアプリケーションのパフォーマンスは、「どのタイミングで、どこでHTMLを組み立ててブラウザに表示するか」 というレンダリング戦略に大きく依存します。それぞれの戦略には、表示速度、SEO(検索エンジン最適化)、開発コスト、データのリアルタイム性において異なるトレードオフが存在します。
第5章では、現代の主要な4つのレンダリング戦略(CSR, SSR, SSG, ISR)のパフォーマンス特性と選定基準について学びます。
1. 4つの主要なレンダリング戦略
Rendering diagram...
graph TD
A[レンダリング戦略] --> B[CSR <br> ブラウザでHTML生成]
A --> C[SSR <br> リクエスト時にサーバーで生成]
A --> D[SSG <br> ビルド時に事前に生成]
A --> E[ISR <br> バックグラウンドでオンデマンド再生成]
style B fill:#eff6ff,stroke:#3b82f6,stroke-width:1px
style C fill:#faf5ff,stroke:#a855f7,stroke-width:1px
style D fill:#f0fdf4,stroke:#22c55e,stroke-width:1px
style E fill:#fff7ed,stroke:#f97316,stroke-width:1px
CSR (Client-Side Rendering)
空のHTMLを受け取った後、ブラウザ上でJavaScriptを実行してDOMを組み立てて画面を描画します。
- メリット: ページ遷移がスムーズ(SPA)、サーバー側の負荷が極めて低い。
- デメリット: 初期表示(FCP/LCP)が遅い。JSの解析が終わるまで真っ白な画面が続く。
- 適したユースケース: 管理画面(ダッシュボード)、ログイン必須のマイページ。
SSR (Server-Side Rendering)
ユーザーがアクセスした瞬間に、サーバー上でデータベースからデータを取得してHTMLを組み立て、完成したHTMLをブラウザに返します。
- メリット: 初期表示が速い。クローラーがHTMLを直接読み込めるためSEOに有利。
- デメリット: アクセスが集中するとサーバー(CPU)の負荷が高まる。TTFB(最初の1バイトを受け取るまでの時間)が延びる。
- 適したユースケース: リアルタイムな株価やユーザー毎のタイムライン表示が必要なサイト。
SSG (Static Site Generation)
ビルド時にあらかじめ全ページのデータを収集し、静的なHTMLファイルをディスクに出力しておきます。アクセス時はCDN経由でファイルを高速返却するだけです。
- メリット: パフォーマンスが最高(LCPが極めて良好)。サーバー維持費が非常に安い。
- デメリット: データが変わるたびにサイト全体を再ビルドする必要がある。
- 適したユースケース: ブログ、製品紹介サイト、ドキュメントサイト。
ISR (Incremental Static Regeneration)
SSGのように静的ページを即座に返しつつ、指定した有効期限(Revalidate期間)が過ぎたあとのリクエストをトリガーに、バックグラウンドで特定のページだけをサーバーサイドで静的再生成します。
- メリット: ビルド時間が長くならず、古いデータが表示され続ける問題も解決できる。
- デメリット: 有効期限直後のユーザーには一世代古いキャッシュが表示される(裏で再生成は走る)。
- 適したユースケース: ECサイトの製品一覧、ニュースメディア。
2. パフォーマンス特性とトレードオフ
各戦略のパフォーマンス指標(Core Web Vitalsなど)に対する影響は以下の通りです。
| 指標/特性 | CSR | SSR | SSG | ISR |
|---|---|---|---|---|
| 初期表示速度 (LCP) | ⚠️ 遅い (JSロード待ち) | ◯ 速い | 🚀 最速 (CDN配信) | 🚀 最速 (CDN配信) |
| 応答開始時間 (TTFB) | 🚀 最速 (空HTML) | ⚠️ 遅い (サーバー処理) | 🚀 最速 (静的ファイル) | 🚀 最速 (静的ファイル) |
| SEOの強さ | ⚠️ 弱い (一部クローラー非対応) | 🚀 強い | 🚀 強い | 🚀 強い |
| リアルタイム性 | ◯ 高い | 🚀 非常に高い | ❌ 低い | ◯ 中程度 |
| サーバー負荷 | 🚀 極小 | ⚠️ 高い | 🚀 極小 | ◯ 低い |
一つのWebアプリにおいてどれか一つの戦略に絞る必要はありません。Next.jsなどのモダンフレームワークでは、ダッシュボードは CSR、静的な利用規約は SSG、頻繁に変わる商品詳細は ISR のように、ページ単位で最適なレンダリング戦略を選択・ブレンドする設計がベストプラクティスとされています。