静的サイトジェネレーター()はテキスト入力ファイル(Markdown、reStructuredText、AsciiDoc、JSONなど)を使用して静的ウェブページを生成するソフトウェアエンジン。静的サイトジェネレーターによって生成された静的サイトは、サイト生成後にバックエンドを必要としないため、コンテンツデリバリネットワーク(CDN)上で第一級オブジェクトとなる。最も人気のある静的サイトジェネレーターには、Jekyll、Hugo、Next.js(JavaScript)などがある。SSGは通常、製品ページ、ニュース記事、ソフトウェアドキュメント、ブログのようなめったに変更されない情報のコンテンツで使用する。
アーキテクチャ SSGは通常、Liquid(Jekyll)やGo Template(Hugo)などのテンプレートシステムを使用してHTMLで記述されたテンプレートで構成される。同じ構造(通常はGitリポジトリ)には、MarkdownやreStructuredTextのようなプレーンテキスト形式のコンテンツや、JSONやXMLのような構造メタ形式のコンテンツが含まれる。1つのプレーンテキストファイルが1つのウェブページに対応することもある。あるいは、AngularJSのようなシングルページアプリケーションフレームワークが使われている場合、1つの構造メタデータファイルがウェブサイト全体に対応することもある。Webサイトの変数設定は、プレーンテキスト設定ファイル_config.yml(YAML)、_config.toml(TOML)、または_config.json(JSON)に保存される。ページファイルは通常、タイトル、パーマリンク、日付などの変数を定義するYAML、TOML、またはJSONプリアンブルで始まる。_index.md(index.mdではない)のようなアンダースコア(_)で始まる名前のファイルは、テンプレートまたはアーキタイプとみなされるため、ページそのものとしてはレンダリングされない。
例 数百のSSGが存在することが文書化されており、その大部分はPython、Go、JavaScript、TypeScriptなど、Web上ですでに有名な言語で記述されている。
システムラベル/名前 言語 備考 Jekyll Ruby Liquidテンプレート言語を使用。 Hugo Go Goテンプレートを使用しており、コンパイル時の高速性が主な売り。 Next.js JavaScript Reactテンプレートを使用。 Pelican Python Jinja2 テンプレートを使用。reStructuredTextまたはMarkdownからHTMLをコンパイルする。 AstroJavaScriptデフォルトで.astro構文言語を使用(HTMLやJSXに馴染みやすい)。複数のフレームワークをサポート:Svelte、React、Preact、Vue、SolidJS、Lit、AlpineJS。MarkdownまたはMDXからHTMLをコンパイルする。DocusaurusJavaScriptMDX、Markdown、JavaScript、ReactからHTMLにコンパイルする。Node.jsを使用しており、Reactを使用してカスタマイズできる。
サーバーサイドシステムとの比較
多くのサーバーサイドテンプレートシステムには出力ページをサーバー上に発行するオプションがあり、公開されるページは静的である。これは、のようなコンテンツ管理システムでは一般的であるが、サーバー外での生成とはみなされない。ほとんどの場合、この「公開オプション」はテンプレートシステムに干渉せず、Wgetのような外部ソフトウェアで作成できる。
人々は、このタスクに適合した既存のソフトウェアを使用してテンプレートから生成されたを使用し始めた。この初期のソフトウェアは、Webでの使用に適応した、CGI上で動作する、プリプロセッサとマクロ言語であった。次に、シンプルだが関連性のある技術はSSIから始まった拡張モジュールでの直接実行であった。
脚注
外部リンク JavaScript template libraries comparison from 2009 Enforcing Strict Model–View Separation in Template Engines