何が起こったのか?
ブログのアーキを Bun と独自実装にほぼ寄せました。
見た目はほぼ変わっていませんが、構造はかなり変わっています。
実は Bun に Markdown Parser が実装された頃 から、うちの最小構成ブログくらいならこれまで利用してきた Nextra (Next.js) や Astro のような御立派なフレームワークを使わずとも、Bun だけで十分なのではないか?と考えていました。
また、フレームワークのように多くのライブラリに依存していると、その分多くの脆弱性の影響を受けやすいという側面もあります。
昨今の大脆弱性時代の時勢もあり良い機会だし、ちょうど週末にやる気も出たのでやってみよ~となった次第なのですね。
まあ、大部分を実装するのはやっぱり Claude Code なんですけど。
依存しない関係
Claude パワーにより、必要な機能を Bun runtime もしくは独自実装に極力寄せた結果がこちら。
"dependencies": {
"shiki": "^4.5.0"
},
"devDependencies": {
"@types/bun": "latest",
"pagefind": "^1.5.2"
},
"peerDependencies": {
"typescript": "^7"
}ロックファイルにして驚異の 500 パッケージ弱削減。
これもひとえに、Claude Opus 5.5 くんの実装力の賜物であります。
従来であれば、独自実装なんて車輪の再発明はせず、素敵な外部ライブラリに依存していた人類でしたが、これは同時に不要な機能がどうしても一緒に付いてきてしまうものでした。
しかし AI の発達により、余分な関数を持つ外部ライブラリに頼らずとも、要求に最適化した独自実装を素早く実現できるようになったということですね~。
Bun の独自機能
Node.js にはなく Bun runtime だけが持つ機能も、依存を減らせた大きな要因です。
どうせ runtime 使うんだし runtime で出来ることなんて多ければ多いほど良いんだから。
以下存在感が大きいものたち。
Bun.markdown
Markdown OTP1 としてずっと使ってみたかった API No.1
Markdown を HTML に変換してくれるので、後はスタイリングするだけに。
Bun.YAML
YAML なんて何に使うのと一瞬思うかもしれませんが、実は使います。
ブログエントリのメタデータ(タイトルとかタグとか)を Markdown の Front Matter に書いているので、その解析に使うんですね~。
File I/O (Bun.file, Bun.write)
ファイル読んだり書いたり。
これで Markdown ファイルを読み取り、ビルド結果を書き出します。
縁の下の力持ち。
Bun.serve
本番では静的配信しているので必ずしも必要ではないですが。
開発サーバも Bun におまかせすることで、vite のようなサーバーを別途入れずとも、すぐさま記事をプレビューすることができるんですね~。
Bun の runtime じゃない部分
Package Manager とか Linter とか Formatter とか。
PM は言わずもがなですが、Formatter は v1.4.4 でリリースされたてホヤホヤの新機能となります。
Linter に至ってはまだ Canary でワロタ。
これで scripts も Bun だらけにできるのだ。
"scripts": {
"dev": "bun run --hot index.ts",
"build": "bun run build.ts && pagefind --site dist",
"fix": "bun lint --fix && bun fmt",
"ci": "bun run --parallel --no-exit-on-error \"bun fmt --check\" \"bun lint\" \"bun check\""
},終わり
ということで生まれ変わりました。見た目はそうそう変わっていませんが。
個人的には、これからはちょっと便利なライブラリ程度は入れるほうが不便な時代になってくるのかな~と考えています。
他人のいつメンテされなくなるかわからないライブラリを使うくらいなら、AI にパッと作らせた方が早いし無駄も少ないよね!という理屈。
そもそもコーディングにいつまで人間が必要なのかも怪しいところですが。
数年で失職してたら住宅ローンどうしよ~~~😿
おまけ
やかましいわ
