0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

いい加減フロントエンドのレンダリング方式を理解する

Last updated at Posted at 2025-06-27

はじめに

いい加減、レンダリング方式の違いを理解しようと思います。


代表的なレンダリング方式

  • CSR (Client Side Rendering)
  • SSR (Server Side Rendering)
  • SSG (Static Site Generation)
  • ISR (Incremental Static Regeneration)
  • ハイブリッドレンダリング

CSR(Client Side Rendering)

画像1.png

  • JavaScriptを使用して、ユーザーのブラウザで動的にページを生成する
  • 初回実行時に最小のHTMLと大量のJavaScriptを送信
  • HTMLは最小限であり、JavaScriptでページの更新を行うので、SEOには不向き
  • 実行する処理が多いほどユーザー側の負荷が増えるので、そういった場合は向いていない
  • 利用者の端末に表示時間が依存する
  • SPAに使用されることが多い
  • 初回読み込み時にすべてのデータを取得するので、表示まで時間がかかる

SSR (Server Side Rendering)

画像2.png

  • サーバー側で処理して生成したHTMLをクライアントに返却する
  • サーバー側でリクエスト毎にHTMLを生成するため、サーバーの処理不可が高くなる
  • 初回表示が速い
  • クライアント側の端末に表示時間が依存しない
  • SEOで有利

SSG (Static Site Generation)

画像3.png

  • CSRやSSRと異なり、クライアントからのリクエストより前にHTMLを生成しておく
  • HTMLを生成する処理が発生しないのでページの表示が速い
  • CSNにキャッシュしておくことで、より高速に表示できる
  • ビルド時にHTMLを作成するだけなので、サーバー負荷が低い
  • SEOに優れている
  • 情報の更新を反映できない

ISR (Incremental Static Regeneration)

画像4.png

  • SSRとSSGを組み合わせた手法
  • 一定期間が経過した後に再ビルドすることでページを再生成
  • サーバーへの負荷を下げつつ、動的にコンテンツの更新ができる
  • 常に最新というわけではない

ハイブリッドレンダリング

  • ページ単位でCSR、SSR、ISRを併用
  • 今だとこれが主流?

どのようにレンダリング方式の場合分けができている?

フレームワークがルーティングごと、ページごとに「どうHTMLを生成するか」を制御することでレンダリング方式の切り替えを行うことができる

例) Next.jsの場合

レンダリング方式 コード上の指定方法
SSR getServerSideProps()
SSG getStaticProps()(+getStaticPaths()
ISR getStaticProps()revalidate オプション
CSR ページ側で useEffect()

どういう場合に使い分けるのがよいのか?

レンダリング方式 初回表示速度 主な使いどころ
CSR(Client Side) 遅め SPA / 管理画面 / ダッシュボード
SSR(Server Side) 普通 商品詳細 / ブログ / 認証ページ
SSG(Static Site) 爆速 ブログ / コーポレートサイト
ISR(Incremental) 速い(キャッシュ) 商品一覧 / ニュース / ハイブリッド
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?