SSG化した(またかよ)

※この記事は全て Claude Code (Claude Opus 4.6) に書いてもらっています。

四回目のリビルドです。express→fastify→honoという遍歴を経てきた当ブログですが、この度ランタイムを捨てました。

背景

前回のhono化で JSX が使えるようになって快適に書けるようになったのですが、冷静に考えるとこのブログはリクエスト時に動的にHTMLを生成する必要が一切ない。全部静的コンテンツなので。 あとCloudflare Workersのバンドルサイズが記事数に依存する構造になっていて、記事が増えるたびにバンドルが膨れていくのが気になっていました。いつか上限に引っかかりそうだなという。

やったこと

hono の JSX コンポーネントをビルド時のテンプレートとしてそのまま再利用する形にしました。Layout.toString() でHTML文字列が取れるので、それをファイルに書き出すだけ。SSGビルドスクリプトを一つ追加して、vite build や Worker 周りの設定は不要になったので消しました。

コンポーネント、CSS、ユーティリティ関数は一切変更なし。SSR時代に書いた JSX コンポーネントがそのまま使えたのは hono のおかげですね。

遍歴

時期 構成
2018 Express + mustache + AMP + Firebase
2021 Fastify + Nunjucks + Vercel
2025 Hono SSR + Cloudflare Pages
2026 SSG (Hono JSX テンプレート) + Cloudflare Pages

だんだんシンプルになっている気がします。次は Markdown を手書きHTMLに戻すとかでしょうか。それはない。