CSR SSG SSR ISRの違い。レンダリング4方式。HTMLはいつ作るか

「もう迷わない!Next.jsのレンダリング4方式【SSG / SSR / CSR / ISR】」違いは「いつ・どこでHTMLを作るか」だけ

「CSR、SSR、SSG、ISR……アルファベット3文字が並びすぎて、結局どれを選べばいいの?」

Web開発を学んでいて、ここで手が止まってしまった経験はありませんか。

迷ったときは難しく考えず、たった1つの軸に戻りましょう。

違いはフレームワークの機能名ではなく、「HTMLをいつ・どこで作るか」です。

この記事では、Next.jsのレンダリング4方式(SSG / SSR / CSR / ISR)の基本構造と

実際の開発現場で迷わない「選び方の基準」、そしてSEOや表示速度との関係を分かりやすく解きほぐしていきます。

※読む時間の目安は約10分です。今回はあえて最新のApp Router特有の複雑な用語には踏み込まず、すべての土台となる「Pages Router」の明快な4大分類をベースに解説します。ここを押さえておくことが、結果的に最新技術を理解する一番の近道になります。


目次

まず結論:迷いを消す「3つの答え」

たくさんの解説記事を読み漁る前に、まずは頭に入れておきたい結論を3点に絞りました。

この記事でお伝えしたい結論3点
① 4方式の本質は「HTMLを作る場所とタイミング」

SSGは「ビルド時(事前)」、SSRは「リクエストごと(サーバー)」、

CSRは「ブラウザ上(JavaScript実行後)」、ISRは「静的ページをあとから裏で更新」です。

この基本軸だけで全体像がすっきり整理できます。

② サイト単位ではなく「データや画面ごと」に選ぶ

「このWebサイトはSSRで作ろう」と丸ごと決める必要はありません。

「誰が見るデータか」「どれくらいの更新頻度か」によって、1つのサイト内で方式を組み合わせる(ハイブリッド)のが現代のベストプラクティスです。

③ SEOや初期表示の弱点は「初回HTMLの空っぽ問題」にある

ブラウザでJSを動かして描画するCSRは、検索クローラーや初期アクセス時に「中身が空・Loading表示だけ」になるリスクがあります。

だからこそ、事前にサーバー側で文字を入れておくプリレンダー(SSG/SSR/ISR)が重要視されます。

関連記事として、実際に「なぜSEOのためにISRを選んだのか」という実体験や、CSRでソースが空になって焦った検証ログもまとめています。気になった方はあわせて参考にしてみてください。


なぜ用語ばかりが増えて頭がパンクするのか?

Tomoya

プログラミング学習を始めたばかりの頃、SSGとかSSRとか急に出てきても
『正直、表示方法なんてどうでもいいから動くものを作らせてほしい…』
って思いませんでしたか?

Tomoya

すごくよく分かります。
僕も最初は全く気にしたことがありませんでした。

ただでさえアルファベットの略語が多い世界なのに、今日丸暗記したところで

明日には『あれ、どっちがどっちだっけ?』と忘れてしまうんですよね。

混乱してしまう最大の原因は

「言葉の成り立ち(構造)」を飛ばして、いきなり3文字略語から覚えようとするからです。

Next.jsが解決しようとした出発点に立つと、話は驚くほどシンプルになります。

【公式の出発点】

Next.jsは、基本的にすべてのページを「プリレンダー(事前にHTMLを作る)」しようとします。
全部の描画をブラウザ上のJavaScriptに任せきりにしないためです。

この「事前にHTMLを作る(プリレンダー)」というアプローチには、大きく分けて2つのタイミングしかありません。

① Static Generation(SSG)

「サイトをビルドするとき」に、あらかじめHTMLファイルを完成させておく方式です。誰がいつアクセスしても同じHTMLを高速で配れます。

② Server-side Rendering(SSR)

「ユーザーからアクセス(リクエスト)が来たその瞬間」に、サーバーがその都度HTMLを組み立てて返す方式です。

そして、この2つに対して「じゃあ従来のReactみたいにブラウザ側で描画するのは何と呼ぶの?」というのが

というのが、CSR(Client-side Rendering)であり


「SSGの爆速配信を保ちつつ、定期的に裏で最新データに更新できないの?」という工夫から生まれたのが

という工夫から生まれたのが ISR(Incremental Static Regeneration) です。

Tomoya

どうでしょうか?

「表示方法の違い」ではなく、「HTMLをどこで・いつ組み立てるか」という裏方の役割分担として捉えると

頭の整理が一気に進みませんか?


4方式の違いを整理。「いつ」「どこで」作る?

Next.js レンダリング4方式(SSG・SSR・ISR・CSR)の生成場所とタイミングを分類した全体マップ
Next.jsにおける4つのレンダリング方式(SSG/SSR/ISR/CSR)を、HTMLの生成場所とタイミングで整理したマトリクス図です。

4つの方式を一覧表にまとめました。細かい技術仕様を追う前に、まずは「いつ」「どこで」の2列だけを眺めてみてください。

方式一言で言うとHTMLを「いつ」作るかどこで描画が決まるか
SSG
(Static Site Generation)
ビルド時に作って配るサイトのビルド時(事前生成)サーバー(CDNキャッシュに載せて超高速配信)
SSR
(Server-side Rendering)
リクエスト毎に都度作るユーザーがアクセスした瞬間サーバー(毎回最新のデータを取って生成)
CSR
(Client-side Rendering)
ブラウザのJSが描画する初回アクセス後(JS実行時)ブラウザ(届いた最小HTMLにJSが肉付け)
ISR
(Incremental Static Regeneration)
静的ページをあとから更新静的配信+バックグラウンド更新サーバー(静的配信しつつ、裏で再生成)

知っておきたい2大キーワード:プリレンダーとハイドレーション

Next.jsのドキュメントを読むと必ず出てくるのが「プリレンダー」と「ハイドレーション」です。

Tomoya

料理に例えるとイメージしやすくなります。

用語のイメージを掴む

■ プリレンダー(事前生成)

あらかじめ料理(完成したHTML)をお皿に盛り付けておくこと。お客さん(ユーザー)が来た瞬間にすぐ料理を出せるので、待たせる時間が短くなります。

■ ハイドレーション(水分補給・活性化)

届いた静かなお皿(HTML)に、あとから動くフォークやナイフ(JavaScript)を添えて「実際にボタンが押せる状態」にすること。乾いたHTMLにJavaScriptという水分を注いで動くようにするイメージです。

プリレンダーとハイドレーションの仕組みを料理と給仕の例えで説明した図解
サーバーで事前調理する「プリレンダー」と、後からJSを手渡す「ハイドレーション」を料理に例えて説明した図解です。

公式ドキュメントが伝えている重要なポイント

Next.jsの公式ドキュメント(Pages Router: Rendering / Data Fetching)では、設計の指針として以下の点を明確に強調しています。

可能な限り Static Generation(SSG) を使用することをお勧めします。ページを一度ビルドしてCDNで提供できるため、サーバーがリクエストごとにページをレンダリングするよりもはるかに高速になります。

ユーザーのリクエストに先立ってページをプリレンダリングできない場合(頻繁に更新されるデータやリクエストごとの個人データなど)、SSGは適していません。その場合は SSR または CSR を検討してください。

Next.js 公式ドキュメント(Pages Router: Data Fetching Basics)より要約引用
  • ページ単位でハイブリッドに選べる:
    • サイト全体を統一する必要はなく、「トップページとブログはSSG、マイページはSSR、チャット欄はCSR」といった組み合わせが可能です。
  • CSRの落とし穴:
    • 一部の検索エンジンのクローラーはJavaScriptを実行しないため、初回HTMLが真っ白(空のdivタグやローディングスピナーだけ)に見えてしまうリスクがあります。
  • ISRの賢い振る舞い(revalidate):
    • 例えば有効期限を60秒と設定した場合、60秒経過した直後のアクセスには「まず古いキャッシュ」を即座に返し、裏側でこっそり新しいページを再生成します。
    • 次のアクセスから新しいページが反映されます。再生成に失敗しても画面が落ちず、最後に成功した古いページを出し続けてくれます。

実践:どれを選ぶべき?「サイト単位」ではなく「データ単位」で決める

実務で一番悩むのが、『自分の作っているこの画面にはどの方式を当てはめるべきか?』という選定ですよね。

Tomoya

そうなんですよね。僕も昔は『ECサイトだからSSRにしよう』みたいにサイト丸ごとで決め打ちしようとして、表示速度が遅くなったりサーバー代がかさんだりと悩みました。

画面内の「データの性質」で逆算するのが一番失敗しません!

選定に迷ったときは、以下の「データの性質 → 最適な方式」の対応表をチェックしてみてください。

扱いたいデータの性質推奨する方式選定の理由・メリット
誰が見ても同じで、めったに更新されない
(企業情報、利用規約、固定記事など)
SSGCDNに完全キャッシュでき、表示速度が最も速くサーバー負荷もゼロに近い。
誰が見ても同じだが、定期的に更新される
(ブログ記事、商品一覧、ニュース一覧など)
ISR全体の再ビルドなしで最新状態を保てる。速度とデータ鮮度のいいとこ取り。
アクセスした「その人専用」のデータ
(マイページ、ユーザー設定、カート画面など)
SSR または CSR他人のデータと共有できないため。SEOが不要なら画面全体をCSRで作るのが手軽。
ログイン後の操作パネル、ダッシュボード
(検索エンジンに見せる必要がない画面)
CSR検索クローラーを気にする必要がなく、リッチで滑らかな操作性を重視できる。

迷ったときの3ステップ確認フロー

  1. 「このデータは、誰が見ても同じ内容か?(個人化されているか?)」
    → 全員同じなら SSG / ISR を優先検討。人によって違うなら SSR / CSR へ。
  2. 「この画面のテキストを、検索エンジン(Google等)に読ませたいか?」
    → 読ませたい(SEO重要)なら、初回HTMLに文字が入る SSG / ISR / SSR。不要(社内ツール等)なら CSR で十分。
  3. 「更新のきっかけは時間か、それとも管理画面での変更イベントか?」
    → 静的ページの良さを活かしたいならISRを検討。時間指定(定期更新)にするか、変更時のオンデマンド再検証にするかを決定。

SEO・初期表示速度・データ鮮度のトレードオフ

Web開発の現場でいつもぶつかるのが、「検索順位(SEO)」「初期表示のスピード」「データの新しさ(鮮度)」の3つ巴の戦いです。

現場で直面する3つの壁
  • 最新データを常に届けたい! → でも毎回SSRでサーバー生成すると、レスポンスが遅くなって体感速度が落ちる……
  • とにかく爆速でページを表示したい! → SSGで事前ビルドすれば速いけれど、記事を直すたびにサイト全体の再ビルドが必要で鮮度が落ちる……
  • 開発を手軽にサクッと済ませたい! → CSRで作ると楽だけれど、検索エンジンのクローラーに真っ白なページとして認識されるリスクがある……

この「速くしたいけれど、鮮度も落としたくない」という開発者の長年の悩みを解決するために登場したのが、まさに ISR でした。

ユーザーにはCDNからミリ秒単位で静的HTMLを返しつつ、設定した時間が過ぎたらバックグラウンドでそっと最新データをサーバーが取りに行ってキャッシュを差し替える。人間の目には一瞬の表示に見えつつ、裏側では賢く更新し続ける仕組みが整えられています。

現場ですぐできる!「中身が空っぽ」の確認テクニック

自分の作ったページが検索エンジンにどう見えているか不安になったら、ブラウザで一番簡単な確認方法があります。

実践:ページのソースを表示してみよう

ブラウザで確認したいページを開き、右クリックして「ページのソースを表示」を選択します(「検証(デベロッパーツール)」ではなく「ソースを表示」です)

  • 文字や見出しが最初からギッシリ書かれている: プリレンダー(SSG / SSR / ISR)がしっかり成功しています。クローラーも人間と同じように本文を読めます。
  • <div id="root"></div> のように中身がスカスカで、下部に長いscriptタグがあるだけ: CSRの状態です。低スペック端末や一部の検索クローラーでは「何も書かれていない真っ白なページ」に見えている危険性があります。
HTMLソースの比較として最初から中身があるSSG/SSRと最初は空っぽなCSRの違いを示す図解
SSG/SSRで生成される完成されたHTMLソースと、CSRで生成される空のHTMLソースの構造の違いを比較した図です。

まとめと次のアクション

最後に、この記事で押さえておきたい要点を振り返ります。

まとめ:レンダリング選定の心得
  • 4方式の本質は、アルファベットの呪文ではなく「HTMLをいつ・どこで作るか」
  • サイト全体を1つの方式で縛る必要はない。「画面やデータの性質」ごとに組み合わせる
  • まずはSSG/ISRの静的配信をベースに考え、ユーザー固有のデータやリアルタイム性が必須な部分だけSSRやCSRを取り入れる。

今日からできる最初の一歩

まずは難しく考えず、ご自身が開発しているページ(または普段見ているWebサイト)で右クリックして「ページのソースを表示」を押してみてください。

「あ、このサイトはソースの中にちゃんと本文のHTMLがあるからプリレンダーされているんだ」「ここは空っぽだからCSRなんだな」と目で見て実感できるようになれば、レンダリングの仕組みはもう完全にあなたの血肉になっています!

さらに実践的なコード例や、実際にISRを導入してクローラーの挙動を検証したレポートは、以下の記事でも詳しく解説しています。開発のヒントとしてぜひ役立ててみてください。


「もう迷わない!Next.jsのレンダリング4方式【SSG / SSR / CSR / ISR】」違いは「いつ・どこでHTMLを作るか」だけ

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

始めまして。このブログを運営するTomoyaです。
未経験個人開発者。AI×個人開発(Vibe Cording)で学習して参入してくれる人が増えて広がっていくと良いなと思って始めました。

実際に作成→デプロイ(公開)→運営を行ってそれについての問題や疑問を記録していきます。
また行っていく上で内容(セキュリティ・制限など)にもこだわっていきたいなと思っています。

コメント

コメントする


目次