-S2JSF組み込み版Maya(2)

みました。SourceForgeにはまだあがってないのかな?メールで送ってもらったものみたのですが、サンプル実行してみたところ、やはりAタグが追い越されてうまく動作してないので、サンプルとして意図された動作をおえてないです。しかし、実装については、TLDのロードやテンプレのパースなど、計画している動きが結構の割合で実装されています。きちんと動くものができるものも近いでしょう。
でもね、申し訳ないけどこれはMayaじゃないです。表面の仕様は追ってるけど、つくりの根幹のところで私の持ってた問題意識はとらえていないし、わざわざ時間かけて実装を先延ばしにしても仕様をオープンにして練ってきた意味を反映したものではないです。困ったなぁ、実装量が圧倒的なのともうちょいで動くところまで来ているんで惜しいのですが。理由を以下に述べます。

  • Mayaはとにかく守備範囲を狭く考えています。また他の既存技術とはできるかぎり依存せず、依存するものについては差し替え可能なつくりに考えています。JSPカスタムタグの仕様は取替えようがないですが、たとえば式言語エンジンしかり。しかしこの版ではSeasar2のライブラリが多く使われています。それらはSeasar2と一緒に同梱されてますので、配布にはSeasar2といっしょになっちゃう。この問題は、Seasar2からライブラリ群を別にメンテナンスしていくプロダクトに出せば(StrutsからJakarta Commonsが出たみたいに)解決するかな。でもいまのままだと、Springと組み合わせても、Seasar2が動いちゃってるわけです。中核のエンジンを構築するのに、Seasar2を使ってますので。そうなると、将来バージョン管理リスクも、たいしたことではないかもしれませんが、発生します。
  • さらにはプラグインサポートが考慮されていない作りになってることです。Seasar2がそうなんですが、プラグインのサポートしやすい・しにくい作りというのがあって、それは特にモデルを構築するところとその持ち方にあります。エラーを含む書類をパースしてなぜエラーなのかを表示していく仕組みは、ランタイムの一点でも瑕疵があったら例外で終わらせてよいというものよりヘビーな実装が要求されます。仕様および実装が固まったあとからプラグイン作るのは難しく、先にプラグイン作るぐらいでやればちょうど良いと思ってました。が、実装が一番はじめにできちゃいました。
  • さらには、コードジェネレーションしないつくりに引っかかってます。コードジェネレーションはMayaの本質なんですよ。異論はひがさんだけでなく、みなさんいろいろあると思いますけど。テンプレートカスタムタグの考えを示しましたが、あれはたしかにTapestryのパクリなんです。ただ、Tapestryはテンプレートを実行時にパースした結果をメモリ上でもち、Tapestryのフルサイズのエンジンの上で動作します。そうなるとTapestryのJWCが独自という以上に、コンポーネントが他に持ち運ぶモノでは無いのですね。そこをMayaはページがそれ自体テンプレートカスタムタグというような考えの下、コンポーネントモデルを構築したうえ、コンパイル済みのテンプレートカスタムタグはJSPページの上で使えるという仕組みにしようとしてます。これは、私の過去の案件および開発資産のポートフォリオを再構築・再生する手段なんですよ。ここ3年ぐらい、StrutsTapestryでかなりの数の案件をこなし、StrutsTapestryベースの製品を世に出しています。HTMLテンプレートの仕様をTapestryに近づけ、またJSP上でコンポーネントとして使えるようにするのはそこに動機があります。JWCでできたGISのコンポーネントライブラリも社内にありますし、JSPタグのライブラリでグループウェアのパーツもあります。それらをMayaで再構成しようとしているのです。

とりあえず、ひがさんのこの実装系、Mayaの名前をはずしてもらえませんか?ちょっとコードネームとしては私には思いいれがある名前なのです(だって娘の名前だもの、きっかけは偶然でしたが)。進め方としては、元の名前のS2Pagesとして実装すすめてもらって、きちんとリリースしてください。後に、ひがさんも本を書いたり、S3をつくったりしないといけないですからS2PagesおよびS2JSFから手が離れるでしょう?ぼちぼちに平行で、手をあげてくれているまるおさんとすがさんと私のほか、意欲ある方をつのったうえ、S2Pagesの成果をしっかり再利用して根幹からMayaとして再構築していくというのではいかがでしょうか?
あとは、SeasarもKijimunaも失敗プロジェクトなんだってこと、指摘させてください。実装に突っ走ったために誰も他の人がメンテナンスできない・やりたいとおもわない。Mayaはそうしたくないのが、迂遠ながら一番初めにドキュメントを書いているということです。試行錯誤ですから、手段が正しいかはわかりませんけど。
最後に、それなら何時になるかわからない、と思われる方が多くいらっしゃるかもしれません。けど、ひがさん一人で2週間ぐらい?でそれっぽいものできちゃうわけですよ。実装は特別時間がかかることではないです。ソフトウェアを作るうえで一番時間がかかるのはイメージングだと私は思います。何をどう作るか、ネクストステップでどう発展させるか、誰にやらせるか、どう見せるか。予算はどうするか。すべてにおいてイメージングできるまで頭をつかいます。手はあと。営業も会社経営も全部いっしょ。イメージングを練る時間と手間を惜しむと、かえって時間はかかる、金はかかる、質は落ちる。NPO組織もそうだし、子供だってそうでしょう。どう育ってほしいかを夢にみるぐらい念じるわけです。