027 ご注文ありがとうございます。ご一緒にVelocityはいかがですか?


こんにちは、id:EC-OneのAkiです。

EC-Oneイーシー・ワン)で提供している製品のひとつに、ポータルサイト製品*1があります。この製品は、各種社内システムへのシングルサインオンや、Sun Microsystemsが提供するSun Java System Identity Manager*2と連携したアカウント管理が行えることが特徴です。
この製品では、迅速な画面設計を行うため、Apache Velocityというテンプレートエンジンを多用しており...

うーん、ちょっと硬い書き出しになってしまいましたね。
今日はこのApache Velocityの特徴をご紹介しつつ、「Velocityいいよー」というお話がしたいと思います。

Apache Velocityを、通常の画面作成で作成するJSPと比較した場合、以下の4つが特徴として挙げられます。

1. 記述が圧倒的にかんたん

JSP(というよりStruts2)でbeanの中を表示するために必要な記述は...

 <%@ taglib prefix="s" uri="/struts-tags" %>
 <s:property value="guest.name" />様、ようこそ!

となりますが、これがVelocityなら...

 ${guest.name}様、ようこそ!

あぁ、63文字も短縮できます!*3

2. 拡張もかんたん

次に、JSPで新しいタグを作るとなると...

  • TLDファイルという、複雑な長いXMLファイルを書き
  • doStartTagなどのメソッドなどをオーバーライドした専用クラスを作成
    (Strusなら簡単に記述できますが、TDKファイルは健在です)

という手順が必要ですが、Velocityならもっと簡単に作れます。例えば「今日の日付を出す」タグを作るとすると...

  • こんな感じのクラスを作成して
 public class DateTag {
  public String printDate() { new java.util.Date().toString() }
 }
  • こんな感じのXMLを書く
   <tool>
     <key>datetag</key>
     <scope>application</scope>
     <class>DateTag</class>
   </tool>

たったこれだけです。
使うときは、「$datetag.printDate()」を記述するだけ。簡単!って思いませんか?*4

3. (それなりに)枯れた技術である

"google:Apache Velocity"で検索していただくと分かると思いますが、2004年・2005年ごろの記事が非常に多く引っかかってきます。Velocityはその頃から使われているライブラリで、過去の利用事例も多いですので、バグに悩まされることは少ないと思います。
ちなみに、今も開発が続行されており、OSSでありがちなメンテナンスが止まった... という事態も今のところは大丈夫です。

4. メールテンプレートにも使える

もうひとつ、Velocity のいいところは HTML出力以外にも色んな用途で使えることです。社内でもプロジェクトによってはメール本文のテンプレートや、ソースコードの自動生成で便利に使っています。というより、こっちの用途で使われるほうがメインですね。

今回は、ポータル製品に絡んでApache Velocityを取り上げましたが、「Mayaa」や「FreeMarker」など、他にもたくさんの素晴らしいテンプレートエンジンが世の中に存在します。

「これまで、JSPしか使ったことないよー」という方も意外と多いらしいです。これを機にApache Velocityを使ってみてはいかがでしょうか?

今回はよく知られた技術を紹介しましたが、このような技術選定においても、レスキューサービスはお役に立ちます。「○○という処理を実現するには、どんな技術を使えばいいのだろう?」というご相談には、各種事例を交えて具体的な技術をご紹介することが可能です。お困りの際は、ぜひナレッジセンターにご相談ください。








JavaRuby及び周辺のOSSを用いた開発に関して、企業があらゆる悩みごとを相談できるのが、ナレッジセンターの「レスキューサービス」です。
どんな相談でも親身に受け付けますので、レスキューサービスってなに?もっと知りたい!と思った方はお気軽に問い合わせ下さい。
問い合わせ画像リンク

*1:導入事例はこちら
http://www.ec-one.com/product/example_portal.html

*2:社内や学校内に分散しているシステム全体でIDの管理を行う製品
http://www.ec-one.com/product/id.html

*3:taglibなんて書くのは最初だけでしょ?というつっこみは心の中にしまって下さい。あとEL式(Expression Language)のことも...

*4:タグなんて、普通1から作らないでしょ?というつっこみも心の中にしまって下さい。これも、EL式で簡単にできますか...