-Standardとは

0.1.1リリースで、Standardという区分を作りました。ソースフォルダも/src-standardというものを作り、そこにはorg.seasar.maya.standardというパッケージを置いてます。これは将来への拡張や、プロジェクトの作業範囲を固める上でいささか思想的な主張を含んでいます。
Mayaはテンプレートの処理についてアダプター可能の仕組みに徹しています。このへん、現在のSpec文書ではアップデートしきれていないのですが、実装はその方向であらかた作りこんであります。すべてのテンプレートの要素はTemplateProcesorを実装した小オブジェクトに置き換えられて、ツリー状のモデルとなります。このモデルを作るのはTemplateBuilderですが、TemplateBuilderには具体的なモデル作成の方法を持たず、ProcessorResolverを実装したものにゆだねてています。ProcessorResolverはユーザー定義可能で、このTemplateProcessor-ProcessorResolverの組み合わせを取り替えれば、まったく違うテンプレートの解釈を行うことが可能です。
また、設定XMLも同様に、SpecificationBuilderによって作られる、NodeDefinitionがツリー状となったモデルですが、SpecificationBuilderの中で、多数のDefinitionResolver群によってNodeDefinitionが生成・初期化されます。
これらに、EL式の評価を具体的に行う、ELResolverを加えた3つのResolverによってエンジンがカスタマイズされます。
Standardと呼ぶものはこのResolverとそれらの処理結果の生成物であるアダプタの実装を組にしたキットのうち、ごく普通のJSPライクな機能範囲を実現するものです。TaglibやTagなどJSPカスタムタグを利用する機能もStandardに含まれますし、UseBeanやRemoveの機能もStandardの範囲です。結果、Resolverキットを利用する側のエンジン部のみを狭義のMayaとして、Standard Resolverキットを含めたものを広義のMayaとしています。この狭義-広義とわけたのは、周囲へのMayaの影響力を高めるためです。テンプレートと設定XMLとのペアで自由自在にWEBページを作る抽象的な機能に集中することによって、Seasar.org内の別プロジェクトや他のオープンソースプロジェクトのみならず、商用のパッケージ製品にもMayaが投入されることを目標としています。
事実、3月着工ぐらいのスケジュールで、私も本業の中でパッケージ製品を開発することを予定しています。これは、狭義のMayaをベースに、背後の層と関連する部位を高度に具体的な実装をしたResolverキットを用意します。もちろんMayaはオープンソースでフリーですが、本業で作るResolverキットは非オープンで商用です。こういう取り組みがきちんとできるようにしました。
私なりにソフトウェア「製品」が集中すべき内容というものを考察した結果です。デブサミの後に飲みながら面白おかしく話していたのですが、100mを8秒で走ることや、170kmの剛速球を投げることだけを考えています。8秒で走れれば、腕は折れていてもかまいません。170kmで投げられれば、足はついていればいい。12秒で走りかつ135kmで投げられる種類のタレントを目指していません。Mayaの8秒世界は、HTMLに動的機能を付加する際の開発利便性とエンジンの可搬性を追求することになると今は思っています。