TOP比較データ> Velocity
徹底比較!!Javaアーキテクト
徹底比較!!Javaアーキテクト

第1回:Webアプリケーションフレームワークの比較
著者:シンクイット  山口 忠   2005/10/12
前のページ  1  2  3  4
Velocity

   VelocityはTapestryと同様にJakartaプロジェクトで開発されている汎用テンプレートエンジンで、作成したテンプレートから何らかの出力を行うものです。

   フレームワークとは、少し意味合いが違うかもしれませんが、プレゼンテーション層の開発を行う際に、有用な技術ですので紹介したいと思います。
Velocityの概念図
図6:Velocityの概念図
(画像をクリックすると別ウィンドウに拡大図を表示します)

   テンプレートの作成にはVelocity Template Language (VTL)というテンプレート言語を使用します。Velocityは作成したテンプレートにビジネスロジックの結果や画面から入力された値などをセットして出力を行います。出力先としてはHTMLに限らず、テキスト形式であればどのようなものにも出力できるのが特徴です。

   この特徴を利用すれば、ソースコードの生成や、SQLファイル、定義ファイルの生成、Webブラウザの種類によってテンプレートを切り替えることも容易になると思います。

   VelocityにはVelocity ToolsとよばれるVelocityの機能を補完するツールが提供されています。このツール群にはツールやユーティリティを集めたGenericTools、Web アプリケーションでVelocityを使用するためのVelocityView、StrutsのビューとしてVelocityを使うのに役立つVelocityStrutsがあります。VelocityStrutsを使えば、JSPの代わりにVelocity のテンプレートを適用することができます。

   システム開発にVelocityを適用する場合、表3のメリットがあげられます。

  • 出力先がHTMLに限らず、テキスト形式の様々なリソースに出力が可能
  • HTMLでテンプレートを作成した場合、JSPと比べてWebブラウザで確認してもデザインが確認しやすいためデザインの変更が容易
  • JSPの文法に比べてVTLはデータの出力に特化した言語であるため、構文がシンプルで習得がしやすい

表3:Velocityのメリット

   また最新バージョンは1.4(2005年9月現在)です。


フレームワークの比較

   最後にこれまで紹介したStruts、Tapestry、Velocityについて特徴をまとめてみます。

  Struts Tapestry Velocity
日本語ドキュメントの量 ×
Eclipseプラグイン
デザイナーとプログラマの分業
Strutsとの連携 ×
スタンドアロンでの実行 × ×
テストのしやすさ
Servlet APIとの依存度

表4:各フレームワークの特徴

   今回の説明では触れていませんが、項目に「テストのしやすさ」をあげました。テストのしやすさを考えればTapestryがおすすめです。Servlet APIにも依存していませんし、UIとロジックが分離していることを考えればテストは比較的容易といえます。

   Strutsは日本語ドキュメントも多いので導入はしやすいと思いますが、やはりServlet APIに依存した作りになってしまいますので、テストが難しくなると考えられます。CactusやHttpUnitなどのテストツールもありますが、ツール自体の普及率も考えるとまだまだテストをしやすいとはいえません。

   VelocityはServlet APIには依存していませんが、Velocity自体単体で使用することは少なく、Strutsなどのコントローラ重視のフレームワークと連携して使うことが多いようです。それにともなってテストも難しくなると考えます。

   以上のことをふまえて、今後のシステム開発におけるWebアプリケーションのフレームワークの選定に役立てていただければと思います。

   次回はPOJOを実現するDIxAOPコンテナの「Spring」「Seasar2」「PicoContainer」について紹介しています。

前のページ  1  2  3  4


株式会社シンクイット 山口 忠
著者プロフィール
株式会社シンクイット  山口 忠
前職は大手SI企業にて、SEとして各種言語を使ったシステム開発を経験する。常に進化し続けるオープンソースソフトウェアの魅力にとりつかれて現職に至る。現在は某プロジェクトにてEJB、Webサービスを使ったシステムのフレームワークを開発しながら、Javaのプロフェッショナルになるべく、日々精進している。


INDEX
第1回:Webアプリケーションフレームワークの比較
  はじめに
  最近のアーキテクチャ
  Tapestry
Velocity