指示子のインタフェース
今のところ、指示子についてはインタフェースが少しだけありますが、
javaCC を知っている必要があります。
指示子のインタフェースは、中心的な Velocity 開発者以外が使うためのものではありません
(パブリックな API にしようとは思っていないということです) が、指示子の作成者が JavaCC
を意識しなくてすむことは、おそらく意味があるでしょう。
キャッシュ
コンテキスト内のオブジェクトをどのようにキャッシュするべきかとか、
キャッシュをどのように指定すべきかとか、
キャッシュ方法を制御するのはデザイナ (テンプレートで何かを指定する) なのか、
開発者 (コンテキストのオブジェクトに有効期限を設定する) なのか、
それとも第三者 (コンテンツマネージャとか) なのか、
といったことを議論すべきでしょう。
例えば、本のトップ10のリストの入った配列をコンテキストに設定するとしましょう。
このトップ10のリストを24時間有効にしないといけない場合、
どのように指定すればいいのでしょうか?
また、その後コンテンツマネージャがこのリストを1週間有効にすると決めたとします。
その場合、デザイナに言ってテンプレートを変更してもらうのでしょうか? それとも、
Webアプリか何かを使って、コンテンツマネージャが特定のコンテキストのデフォルトの
有効期限を変えられるような仕組を Velocity で提供するのでしょうか?
柔軟なキャッシュシステムの基盤はVelocityの中に存在していますが、
この議論はその使い方やポリシーに関するものになるでしょう。
UML による概要
Velocity を記述する包括的な一連の UML 図を用意できると素晴らしいと思います。
これがあれば、新規開発者が予備知識を迅速に得られるでしょう。
Velocity プロファイリング
標準のプロファイラのうちの1つに詳しい人がいたら、
ボトルネックの探索に着手してもよかったと思います。
最適化については、今のところちゃんと行っていませんが、
JUnit テストスイートが登場したので、これと組み合わせれば、
最適化のための変更を自信を持って行えるでしょう。
プロファイリングを一貫した方法で行えるように、
共通のプロファイラを設定できるといいなと思います。
構文ダンパ
現在のところ、 Velocity コードベースには初歩的な構文ダンパしかなく、
改善の余地があります。このツールはデバッグの際に非常に役に立ちますし、
指示子を作成するのにも適しています。生成される構造がもう少しきれいになるように、
個々の AST ノードタイプに応じてダンプメソッドをカスタマイズできるといいと思います。
構文チェッカ
全ての構文エラーを見つけて、何かわかりやすいフォーマットでデザイナに報告できる、
標準の構文チェッカがあるといいと思います。
このツールは DreamWeaver など様々なデザイナツールに組み込むことができるでしょう。
コンパイラ
テンプレートコンパイラがあるとすごくいいなと思います。
とても美しくかつシンプルな方法でクラスファイルを作成する JavaClass
という素晴らしいユーティリティがありますし、
DynamicJava パッケージにはバイトコードを生成するコードがあり、
これを活用することも可能でしょう。
IDE 統合
JBuilder や VisualAge といった標準の IDE に Velocity
をどうやって組み込めばいいでしょうか?
スクリプト言語統合
これは、Turbine メーリングリストで検討されています。コンテキストを構築するクラスを、
JPython や Rhino などのスクリプト言語で書ければ、開発期間を劇的に短くでき、
JavaScript を使い慣れていて技術に詳しいWebデザイナなら、
Velocity を使って Servlet ベースのシステムを構築できるかも知れません。
こうしたスクリプトによるソリューションではたいていコンパイラも提供されているので、
性能についても受容できるレベルになるでしょう。