静的サイトジェネレータ(Static Site Generator, SSG)とは、Markdown などのテキストファイルやテンプレートを元に、静的な HTML ウェブページ群を生成するツールのこと。
概要
静的サイトジェネレータは、あらかじめ用意されたコンテンツ(テキストファイル)とデザインのテンプレートを組み合わせて、完成形の HTML ファイルを事前に生成する。これにより、サーバー側での動的な処理を必要としない、高速かつ安全なウェブサイトを構築することができる。
CMS の代表例である WordPress が、ユーザーからのアクセスがあるたびにデータベースから情報を取得してページを生成するのとは対照的に、静的サイトジェネレータは全てのページをビルド時に一括で生成しておく点が大きな違いである。
主な特徴
- 高速な表示: 生成されるのは静的な HTML ファイルであるため、サーバーはファイルを送信するだけでよく、ページの表示が非常に高速である。
- 高いセキュリティ: サーバーサイドのプログラムやデータベースを持たないため、SQL インジェクションのような典型的なサイバー攻撃のリスクを大幅に低減できる。
- シンプルなホスティング: 生成されたファイル群は、単純なウェブサーバーや CDN、GitHub Pages のようなホスティングサービスで簡単に公開できる。
- バージョン管理との親和性: コンテンツが Markdown などのプレーンテキストであるため、Git などのバージョン管理システムで変更履歴を容易に管理できる。
仕組み
一般的な静的サイトジェネレータのワークフローは以下の通りである。
- コンテンツ作成: 開発者は Markdown などの形式で記事やページの内容を記述する。
- テンプレート定義: サイト全体のデザインやレイアウトを定義するテンプレートファイルを作成する。
- ビルド: ビルドコマンドを実行すると、コンテンツとテンプレートが結合され、最終的な静的サイト(HTML、CSS、JavaScript ファイル群)が出力される。
- デプロイ: 生成されたサイトをウェブサーバーにアップロードして公開する。
代表的なツール
静的サイトジェネレータには多くの種類が存在する。
- Jekyll: Ruby 製。GitHub Pages で標準的にサポートされており、静的サイトジェネレータの普及に貢献した。
- Hugo: Go 言語製。ビルド速度が非常に速いことで知られる。
- Next.js / Gatsby: React ベースのフレームワーク。静的サイト生成機能も備える。
- Quartz: このサイトでも利用されている、Obsidian との連携を重視した静的サイトジェネレータ。