既製の静的サイトジェネレータを選ばなかった理由

Eleventy や Hugo のような静的サイトジェネレータ(SSG)は成熟していて、普通はそれを使えば済みます。それでも自作のPHP製CMSにした判断を記録しておきます。

決め手は「どこで編集するか」

SSGの標準的な運用は「ローカルで編集 → ビルド → 成果物をアップロード」です。これはPCの前でしか記事を書けないことを意味します。

私はサーバー上の管理画面で書いて、その場で公開したい。この要件を既製SSGで満たそうとすると、結局サーバー側に編集と公開ビルドの仕組み(=CMS)を足すことになります。それなら最初からそう設計したほうが素直です。

制約が方式を決めた

本番の共有サーバーでは Node.js が動きません。つまり:

  • Node製SSGをサーバーで動かす選択肢は最初からない
  • サーバーで完結させるなら、変換もビルドもPHPで書くしかない

制約は不自由ですが、選択肢を絞ってくれるので設計は速く進みます。

自作して分かったコスト

  • Markdown変換器のセキュリティ(エスケープ順序・URL無害化)が想像より重い
  • 一覧・カテゴリ・アーカイブ・sitemap など「SSGが無料でくれていたもの」を全部自分で作ることになる

それでも、全部で数千行の見通せるコードに収まりました。自分の道具は、自分が全行説明できるサイズに保てたことが、いちばんの収穫です。