Pythonで最小の静的サイトジェネレータを自作する構成

既製SSGが過剰な場合、Jinja2とMarkdownライブラリだけで実用的なジェネレータを自作できる。最小構成のモジュール分割と拡張の道筋を示す。

最小構成の3要素

コンテンツ読み込み(front matter+Markdown)、テンプレート適用(Jinja2)、出力書き出しの3関数で骨格が完成する。100行未満で動くものが作れる。

メタデータ駆動の設計

各ページのfront matterにtitleや日付を持たせ、一覧ページやsitemap.xmlも同じメタデータから生成する。データの一元化が破綻を防ぐ。

大量ページへの拡張

数十万ページ規模ではテンプレート適用をmultiprocessingで並列化し、変更検知で差分ビルドする。出力のディレクトリ分割も同時に設計する。