このブログを支える技術 202608 のサムネイル

このサイト(z'log)は、Markdown を静的 HTML に変換して配信する個人ブログです。

サイトの生成は Haunt (Guile Scheme) という静的サイトジェネレーター、配信は Cloudflare Workers の Static Assets を利用しています。

この構成にした経緯

以前まで自作の静的サイトジェネレーター(https://github.com/veltiosoft/vss)を使っていました。 ただ、自作の静的サイトジェネレーターに飽きてきていたのと(特に新機能で入れたいものがなかった)、最近はソフトウェアの拡張性に興味があったのでそういう方向性で調査しました。

ソフトウェアの拡張性に興味を持ったのはメインで使っている Pi のサイト上にも書いてあるように、必要なものは Pi 自身に構築を依頼して高度にカスタマイズできることがきっかけでした。

そういう経緯でもし静的サイトジェネレーターを改めて自作する場合にはどのプログラミング言語を採用するか、すでにある静的サイトジェネレーターで自分が求める機能を提供するソフトウェアはあるか、を拡張性の観点から調べた結果、Haunt を知りました (Gemini に教えてもらった)。

Haunt 自体の説明はここではしません、僕はまだ Haunt や Scheme の素晴らしさを語れるレベルにないと思うからです。なのでぜひサイトなどを見に行ってみてください!

https://dthompson.us/projects/haunt.html

どういう仕組みでサイトを生成しているか

ページ本文は Markdown で記述します。

サポートしてる構文は基本的に guile-commonmark に準拠していますが、guile-commonmark 自体を少し拡張して Obsidian などで使われている Wiki link [[titile]] 構文を追加しています。

guile-commonmark そのままで構文を足すことができなかったため、Markdown ファイルの読み込みを、guile-commonmark を一部 fork して Wiki リンク対応を足した版へ差し替えて使っています。

あとは Haunt の仕組みに沿って設定を Scheme で書いてビルドするだけでこのサイトが出来上がります!

サイトのデプロイ先 Cloudflare Workers Static Assets

僕は基本的に Web アプリは Cloudflare を利用しているので本ブログも Cloudflare を利用しています。

Pages を利用していないのに特に理由はなく、昔に Cloudflare Pages から Workers に寄せていくという話を見たことがあったので静的サイトの配信にも Workers を利用しています。

デプロイは手動です。

終わりに

僕が最近興味を持ったソフトウェアの拡張性や、自己改善性については色々先行研究などもあって面白そうな分野なので、自分がソフトウェアを開発するときにはそこら辺を重点的に考えていきたいなと思ってます。

特に、LLM が出てきたおかげで拡張を書くのが面倒ではなくなってきたというもあって、「最初からいい感じなデフォルトがあり、設定も JSON や YAML で書ける」みたいな仕組みのソフトウェアは流行らないんじゃないかなと考えてます。

OSS であれば Fork して LLM で改造するということができるので OSS ソフトウェアの方が LLM 時代は採用されやすくなっていきそうな感じもありつつ、OSS だからと言って Fork するのは面倒なので、そもそものソフトウェアが拡張性が高いという性質を持っていれば挙動を改善するのが簡単だろうなと思うので、そういうソフトウェアを使っていきたいし、作っていきたいなと思ってます。

バーっと書いたので適当な文章になってますから、寝て起きて読み返したらまた文章を直したり、内容を改定したりしようと思います!