既製の静的サイトジェネレータを選ばなかった理由
Eleventy や Hugo のような静的サイトジェネレータ(SSG)は成熟していて、普通はそれを使えば済みます。それでも自作のPHP製CMSにした判断を記録しておきます。
決め手は「どこで編集するか」
SSGの標準的な運用は「ローカルで編集 → ビルド → 成果物をアップロード」です。これはPCの前でしか記事を書けないことを意味します。
私はサーバー上の管理画面で書いて、その場で公開したい。この要件を既製SSGで満たそうとすると、結局サーバー側に編集と公開ビルドの仕組み(=CMS)を足すことになります。それなら最初からそう設計したほうが素直です。
制約が方式を決めた
本番の共有サーバーでは Node.js が動きません。つまり:
- Node製SSGをサーバーで動かす選択肢は最初からない
- サーバーで完結させるなら、変換もビルドもPHPで書くしかない
制約は不自由ですが、選択肢を絞ってくれるので設計は速く進みます。
自作して分かったコスト
- Markdown変換器のセキュリティ(エスケープ順序・URL無害化)が想像より重い
- 一覧・カテゴリ・アーカイブ・sitemap など「SSGが無料でくれていたもの」を全部自分で作ることになる
それでも、全部で数千行の見通せるコードに収まりました。自分の道具は、自分が全行説明できるサイズに保てたことが、いちばんの収穫です。