静的サイトジェネレータ(Static Site Generator, SSG)とは、Markdown などのテキストファイルやテンプレートを元に、静的な HTML ウェブページ群を生成するツールのこと。

概要

静的サイトジェネレータは、あらかじめ用意されたコンテンツ(テキストファイル)とデザインのテンプレートを組み合わせて、完成形の HTML ファイルを事前に生成する。これにより、サーバー側での動的な処理を必要としない、高速かつ安全なウェブサイトを構築することができる。

CMS の代表例である WordPress が、ユーザーからのアクセスがあるたびにデータベースから情報を取得してページを生成するのとは対照的に、静的サイトジェネレータは全てのページをビルド時に一括で生成しておく点が大きな違いである。

主な特徴

  • 高速な表示: 生成されるのは静的な HTML ファイルであるため、サーバーはファイルを送信するだけでよく、ページの表示が非常に高速である。
  • 高いセキュリティ: サーバーサイドのプログラムやデータベースを持たないため、SQL インジェクションのような典型的なサイバー攻撃のリスクを大幅に低減できる。
  • シンプルなホスティング: 生成されたファイル群は、単純なウェブサーバーや CDNGitHub Pages のようなホスティングサービスで簡単に公開できる。
  • バージョン管理との親和性: コンテンツが Markdown などのプレーンテキストであるため、Git などのバージョン管理システムで変更履歴を容易に管理できる。

仕組み

一般的な静的サイトジェネレータのワークフローは以下の通りである。

  1. コンテンツ作成: 開発者は Markdown などの形式で記事やページの内容を記述する。
  2. テンプレート定義: サイト全体のデザインやレイアウトを定義するテンプレートファイルを作成する。
  3. ビルド: ビルドコマンドを実行すると、コンテンツとテンプレートが結合され、最終的な静的サイト(HTMLCSSJavaScript ファイル群)が出力される。
  4. デプロイ: 生成されたサイトをウェブサーバーにアップロードして公開する。

代表的なツール

静的サイトジェネレータには多くの種類が存在する。

  • Jekyll: Ruby 製。GitHub Pages で標準的にサポートされており、静的サイトジェネレータの普及に貢献した。
  • Hugo: Go 言語製。ビルド速度が非常に速いことで知られる。
  • Next.js / Gatsby: React ベースのフレームワーク。静的サイト生成機能も備える。
  • Quartz: このサイトでも利用されている、Obsidian との連携を重視した静的サイトジェネレータ。