【えすえすじー】

SSG(静的サイト生成) とは?

💡 お弁当のように「事前に作り置き」しておくWebサイト
📌 このページのポイント
SSG:静的サイト生成 ビルド時 ソースコード MD / JSX ビルド処理 HTML生成 index.html about.html blog.html 配置 CDN 世界中に配信 デプロイ 完了! アクセス時 ブラウザ ユーザー リクエスト CDN キャッシュ済 HTML即返却(高速!) サーバー処理 不要! メリット:最速表示・安全・安い デメリット:動的コンテンツに不向き ビルド時にHTMLを事前生成し、CDNから配信する方式
ビルド時にHTMLを事前生成してCDNから高速配信する仕組み
ひよこ ひよこ

SSGって何がいいの?

ペンギン先生 ペンギン先生

ビルド時にHTMLを作っておいて、あとはCDNから配信するだけ。サーバーの処理が不要だから表示が爆速で、サーバー費用も安い。攻撃される動的な処理がないからセキュリティも強い。このサイトもAstroというSSGフレームワークで作っている。

ひよこ ひよこ

SSRとの違いは?

ペンギン先生 ペンギン先生

SSRはリクエストのたびにサーバーHTMLを作る。SSGはビルド時に一括で作る。だからSSGは更新のたびにビルドし直す必要がある。頻繁に内容が変わるページにはSSR、あまり変わらないページにはSSGが向いている。

ひよこ ひよこ

ブログ以外にも使えるの?

ペンギン先生 ペンギン先生

ドキュメントサイト、コーポレートサイト、ランディングページなど、更新頻度が低くて表示速度が重要なサイトに向いている。逆に、ユーザーごとに内容が変わるSNSやダッシュボードには不向き。Next.jsのISRのように、SSGとSSRの中間的なアプローチもある。

ひよこ ひよこ

SSGでも動的なコンテンツって扱えるの?

ペンギン先生 ペンギン先生

静的HTMLを配信しつつ、クライアント側でJavaScriptを使ってAPIからデータを取得する方法があるよ。コメント欄や検索機能はクライアントサイドで動的に取得する、というハイブリッド構成がよく使われる。AstroのIslandアーキテクチャはこの考え方をフレームワークレベルで実現しているんだ。

ひよこ ひよこ

ページ数が何万もあるとビルドに時間がかかりそうだけど?

ペンギン先生 ペンギン先生

まさにSSGの弱点の一つだよ。ページ数が増えるとビルド時間が線形に伸びる。Next.jsのISR(Incremental Static Regeneration)は一度ビルドしたページをキャッシュして、アクセス時にバックグラウンドで再生成する方式で、この問題を緩和している。大規模サイトではSSGとSSRを使い分けて、更新頻度の高いページだけSSRにするのが現実的だね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
SSGって出てきたら「ビルド時にHTMLを作り置きする仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Static Site Generation」 = 静的サイト生成
💬 動的にサーバーで生成するのではなく、事前に静的ファイルとして生成(generate)することからこの名前がついた
← 用語集にもどる