-私的イメージ(1)-概要

さて、NirvanaをベースにTapestryのテイストを取り込んだ昨日の思いつきをまとめます。今日までにイメージを若干アップデートしてます。まずは要件概要から。

  • Plain Old HTMLをコンパイルしてサーブレットにする。
    • HTML?XHTML?→HTMLでやってみましょう。
    • まずはプリプロセッサーでJSPに変換?
    • コストや実装および配置のシンプル化を目指し、最終的には直接サーブレットにする。
      • バイトコードエンジニアリング?
      • コードジェネレーション?→デバッグの観点より、コードジェネレーションか。
      • つまりはJasperの置換同等物
  • HTMLのタグに自由にJSPタグをインジェクションできる。
    • 手動によるインジェクション。
    • 自動インジェクション。保留
    • 結果として、JSF対応ができる。
    • インジェクションのひっかけに、id属性は使わない。これを使うとDHTMLやJavaScriptなどでかぶる。
    • 仮に、Tapestryへのオマージュからjwcidとしておきましょう。
  • 設定XMLがあっても無くてもよい。
    • あればそこにインジェクション情報およびバインディング情報を記述できる。
    • HTMLテンプレート上に記述しても設定XMLに記述しても等価で、かつ混在できる。
  • 式言語
    • JSTLがEL前提だったか?→EL前提みたいですね。
    • JFSタグがEL前提だったか?
    • ホントはOGNLがいいなあ。S2Containerともそろうから。
  • インジェクション・バインディング方法は過去の英知の成果を参考にする(盗む?)
  • JSFとは独立したものにする。
  • S2Containerとも独立したものとする。
  • Eclipseプラグインサポートをする
    • タグ補完
    • 属性補完
    • 属性値補完
    • プレビュー
    • 新規作成ウィザード
  • 言語非依存
    • ランタイムとしてJavaVMを利用するけど、Javaとは限らない。
    • ロジック記述はこの層の対応ではなく、ドメイン層の対応になると思う。<%>タグのようなインプリシット言語はやらないほうがよいかなと思ってる。よってこの層のユーザーコードにはJavaも入らない。式言語も属性値としてのみ記述。
    • もしくはそういう動きのJSPタグを作ることですね。
  • テンプレートへのAOP的機能
    • 設定XMLに、ルール記述することによって、XHTMLの操作を行う
    • たとえばスタイルシート設定をルールベースにやるとか
    • たとえばJavaScriptを条件によって削除しちゃうとか
    • ま、XSLT的な機能を簡単にやる仕組みですな。
  • テンプレートの差し替え機能
    • 設定XMLに、ルール記述することによって、テンプレートのダイナミックな差し替えを行う
    • たとえばロケールとか。
    • たとえばユーザー属性とか。
    • たとえばランダムとか。
    • たとえば時刻曜日とか。
  • プロジェクト
    • NirvanaをThe Seasar Projectに招聘していっしょにやる?
    • S2JSFを構成する2つのうちの1つとしてつくる?
    • 別の名前を与えてファミリを増やす?
    • これは作らない。一夜の妄想とする?

つづいて各論です。が、ちょっと仕事でブレイク。