Amrita2は演繹的ソフトウエア?

私のプレゼンの資料はココXUL Apps > Tiny Applications > 高橋メソッドなプレゼンツール in XUL リターンズ で書いたので、firefoxオンリーです。

プレゼンとしてはボロボロだったけど、言いたいことは伝わったみたい。

というのは、発表の後の雑談の中で、たださんと後藤健太郎さんに非常に適切なコメントをいただいて「ああ伝わってたんだ」と安心した。それは自分なりにまとめて見ると、「Amritaはひとつの小さなピュアなアイディアからロジカルに演繹して作られていったソフトウエアで、そこに面白さと難しさがある」ということだ。

「ピュアなアイディア」というのは、資料に書いた「テンプレートとはそもそも何か」という疑問である。「HTMLで書かれたテンプレートは構造化ドキュメントであって文字列ではない、テンプレートエンジンはそれを文字列として処理するのではなく、構造を持ったドキュメントとして扱い、そこに構造を持ったデータを混ぜるという演算として、出力を生成すべきである」ということだ。

これは、今回の発表にあたって言語化したものだが、漠然とこのような思想は最初からあったと思う。私はどうも、そういう「思想」を一切の妥協無く、純粋に追及していくような傾向があるらしい。ひとつの「思想」を展開することで、たくさんの機能を演繹的に実装しようとしてしまうのだ。

そういう「思想」の過剰なソフトウエアは、たくさん機能があっても一本筋が通っているので、見た目の複雑さよりは理解しやすい所もある。機能やオプションではなく「思想」を理解してしまえばなんとなく使えるからだ。だから、一見して「これはいい」と使いはじめる人は多いようだ。

しかし、世の中にはさまざまな「雑事」があって、「雑事」は「思想」と相性が悪い。Amrita用のテンプレートを作成することは、(これは自分でもよくわかるのだが)非常に頭を使う作業であって、ちゃんと考えればできそうな気がするが、なかなか思うような出力が得られない。理論的にはAmritaはどのような出力にも容易に対応できるはずなのだが、実際の作業の中では、なかなか時間内に完成しない。だから、やってみて途中でAmritaを使うことを断念してしまい、その断念の理由はなんとなくうまく説明できない。そういうパターンに陥るようである。

Amrita2では、"partial ERb template" や "amrita:type=use_argsオプション"等(詳細は上記資料参照)、「雑事」をこなす為の拡張(妥協)を入れたので、いくらかは使いやすくなっていると思うが、これらを多用するのではそもそもAmritaを使う意味がないので、「思想過剰」という根本的な弱点は残ると思う。

そういうふうに考えると、tDiaryAmritaと対極的な位置にある「帰納的ソフトウエア」と言えるのではないだろうか。私にとっては、tDiaryのソースは理解しやすいとは言えなかったけど、何かしたいことがある時に、やりたいことがすぐできるソフトウエアであることは間違いない。それは、一ユーザとしてインストールして、設定してプラグインを入れることというレベルでもそうだし、fcgiで動かしたり、静的なドキュメントを生成したりという、かなり実装のコアにかかわるような変更を加える時もそうである。tDiaryには「思想」はないがポリシーがある。「雑事をこなすことに最適化する」というポリシーがはっきりしていて、コードを外から見ても中から見ても使いやすいソフトウエアである。

たださんのプレゼンを聞いて、直にお話することもできて、それは偶然ではなく、明確なポリシーがあってそうなっていることを確信した。

また Rails は、「演繹的ソフトウエア」と「帰納的ソフトウエア」の両方の良さを持っていて、DHHのプレゼンは、「CRUDオリエンテッドという制約によってプログラマを自由にする」という、その「思想」の部分を明確したものであるかもしれない。

それと余談だけど、私の発表の後で、DHHから物凄い勢いでツッコミが入って、控室でしどろもどろにそれに答えているうちに、id:secondlifeさんの発表が終わってしまった。これが、今回のカンファレンスで一番残念だった。(今日になってやっと発表資料を見たけど、やっぱりこれは聞きたかった)。

DHHは、ふだん静かだけど、やはりソフトの話になると熱い人でした。