-感想

まだ続きますが、ここ2日コードを1行も書かずに仕様を考えて実装方法を考えるという作業をしてみて、こういう作り方もあるのかと試してみたくなってます。たぶん、すぐ書き始めるより良いものができると思います。Kijimunaはまず書き始めたので結果として長い時間がかかりました。そしてまだ大きな問題点が残ってます(SourceForgeのトラッキング参照)。KijimunaはまずEclipseのプラグインが何ができるのかとか、どういうふうに実装すればいいかとかがまったく分からなかったうえ情報がほとんど無いために調査コードを書いては捨てという方法になりました。
一方、ナナシナーはEclipseと比較するならばよく知ってるServletJSPTapestry、Xerces、Ant、そして今なら知ってると言える、Eclipseプラグインの組み合わせの話なので調査ではなく思索に集中できるので楽です。また前に書きましたが、CでJasperのロジックをつくらせていたことがあるのですよ。Delphiのほうで有名で最近はS2DaoMakerを作ったかとちん氏が完成させてくれました。そのC版JasperはJSPを食ってECMAScriptに変換します。そのECMAScriptSpiderMonkeyというMozillaの偉大なるECMAScriptエンジンに実行させてHTMLを生成する仕組みです。SpiderMonkeyは世界初のJavaScriptエンジンです。というかこのエンジンの開発がJavaScriptの歴史です。Netscapeがああならなければ、おそらく今でもオープンにはならなかったでしょう。私はSpiderMonkeyWinCEに移植するのと、組み込みオブジェクトでDBアクセスを行うADOっぽい作りのコンポーネントライブラリなどの初期コードを書いただけですが、面白い仕事でした。おそらく同様の経験をお持ちの方はめったにいないと思います。だって、SpiderMonkeyって歴史がすごくてコードが難解(というか、汚い?)なんだもの。
この経験は実はKijimunaで生きています。OGNL式のエンジン(などの式言語やスクリプト)の考え方が身についていて、OGNLバリデーションおよび補完の機能を実現するなどのことで成果が出せました。ナナシナーで式言語エンジンをセレクタブルにしたいと考えているのは、式言語エンジンやスクリプトエンジンはほとんどすべて同じような構造およびAPIになってるからです。RubyPythonも見たことはないですが同じような作りだと想像します。だからBSFみたいな般化フレームワークが作れるのですね。