吟風弄月

シンプルなブログ

2025/03/16
開発

静的サイトジェネレータの実装

1年くらい前に Why You Should Write Your Own Static Site Generator という記事を読んだことがあります。これを読んで、いつかは静的サイトジェネレータを実装してそのビルド結果を単に配信するという形を取りたいなと思っていました。時間があったのでついにやってみることにしました。

このブログの初期実装は yami0thiele/Withered においてあります。

今後どの程度このブログを拡張するかは分かりませんが、ある程度は拡張しやすくしたいのでクラスを色々切っています。現在は、builder.php の中で パースの呼び出し・ビルド用インスタンスの作成・レンダリングの指示という方針をとってみました。

    $filePath = $postsDir . '/' . $file;
    $content = file_get_contents($filePath);
    $parsed = $parser->parse($content);

    // ファイル名をスラグとして使用
    $slug = pathinfo($file, PATHINFO_FILENAME);
    $outputPath = '/posts/' . $slug . '.html';

    $page = new Page($parsed['frontMatter'], $parsed['content'], $outputPath);
    $postPages[] = $page;

    // 個別の投稿ページを生成
    $postRenderer = new Renderer($config, $page, new PostBuilder($config, $page, 'pages/page.php'));
    $output = $postRenderer->render();

フレームワークから離れる

お仕事ではWebアプリケーションを作っています。少なくとも私の5年程度の経験ではWebアプリケーションを作るにあたっては必ず何らかのWebアプリケーションフレームワークを利用しておりました。以下は経験があるものです。

言語 フレームワーク
Java Spring Web
PHP Laravel, Phalcon
TypeScript Nestjs

いずれにせよ、フレームワークの側に機能が色々揃っているものですから、基礎的なことを知らなくてもなんだかんだ開発ができてしまうのですよね。ただそれだといつまでもエンタープライズアプリケーションしか作れないだろうという予感があります。本来は簡単である何かを作って公開することができなくなってしまうので、こういう機会は大事にしたい次第です。

以上!