Yokohamaのページでタグ機能がバージョンアップし、完全に動作するようになった。Simplyを開発して構築した。Simplyは静的ページを生成するプログラムであり、webサーバーには静的ファイルを配置する。これはパフォーマンス、セキュリティ、管理、リソースいずれにおいてもメリットが大きい。基本的にこの考え方は「異なる内容を生成するタイミングより、同一の内容を返すタイミングのほうがずっと多い」ということに基づいており、キャッシュよりも合理的である。しても難しい要素もある。ひとつはページ生成パターンが無限である検索機能、そしてもうひとつはヒントを日本語のみにした場合のタグ機能だ。検索機能はGoogleに頼っているが、タグ機能は難関だった。Simplyの枠内で解決する。eRubyテンプレートは使わない。いう仕様となっている。1単純にこれを反映したタグを書けば良い。かわいいページにタグ情報をつけるPandocテンプレートで簡単につけることができる。href="/tags/ねこ.html">#ねこ</a></li>みたいなHTMLが生成されてしまう。generate機能を利用する。generate機能はページを生成したあと生成ページを加工できるものだ。基本的に第一引数として生成されたファイルパスが渡される。このほか環境変数を通じて他の情報にもアクセスできたりするのだが、これはあまり利用を想定していない。generateは.post_generateディレクトリ内のファイルを順次Perlに渡す形で実行される。Perlはshebang行を解釈するので、Perlで書かなければならないわけではない。スクリプトの出力にファイルは置き換えられる。-ps/foo/bar/gのような非常に簡単なフィルタが書けるということだ。lineendのように変換してあげればタグのタイトルは日本語だがURIはエンコード済み、という形ができあがる。スラッグへのマップを書いてもいいのだが、タグを管理するのは手間なので避けた。Mershal形式で保存される。ここには本文は含まれないが、大概メタ情報にアクセスしたい場合と本文にアクセスしたい場合は別なので、分けている。Simplyにおいて、「メタ情報を文書に書き、処理した情報はデータベースに書いておく」というのは設定上の核であると行って過言ではない。Simplyの外で行うことができるのだ。これはMarkdownページを生成する。Simplyによって生成すべきページとして生成する」のである。タグを含むページを生成・更新した場合は再度タグページを生成し直すことになり、そのためにrefreshというスクリプトもある。この場合、文書ページではないタグのindexを処理されてしまうと困るので次のような処理になっている。tags/.indexes.rbmでは.tagcloud.rbは、というとこちらも結構単純。見ての通り著しい力技でデータベースを集計し、最終的にはMarkdownを出力している。endend従来もほとんどこうだったのだが、ページ側でエスケープしていないという理由でエスケープしていなかったので追加した。Simplyの設計が思っていた以上に優れていたようで、タグ機能もスムーズに実装することができた。Simplyは傑作といって差し支えない出来になっている。思っていたよりもずっと優れたツールになっているのだ。SimplyはPureBuilderとしては実に3作目である。Windowsでも動作可能なようRubyで書かれたPureBuilder2。ページの生成にはいずれも活用できたが、サイト構築労力が高く、安価な案件で利用するにはしんどいものがあった。構築できる内容も割と画一的だったため、様々な要求に応えるのは難しかった。Zshで書かれたPureBuilderは構築時に任意のZshスクリプトを実行できる方式だったため、なんでもできるといえばできるのだが、サイト構築がプログラミング色の強いものになっていた。これはちょっとユーザーフレンドリーではない。Simplyは名前の通りずっとシンプルだが、いままでよりずっと強力になった。小さなスクリプトを書くことは、多くのプログラマにとってはあまり馴染みのないことかもしれないが3、やろうと思えば発想さえ知れば決して難しいことではないはずだ。これはReSTでもdocutilが許容しないような規格化されていないメタ情報を書くということだ。↩ちなみに、Chienomiではタグはすべて英語になっている↩Unixに浸っている人はむしろ息をするようにのように行動するだろう。Simplyの考え方はこれに基づいている。