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で新しいタグを作るとなると...
という手順が必要ですが、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を使ってみてはいかがでしょうか?
今回はよく知られた技術を紹介しましたが、このような技術選定においても、レスキューサービスはお役に立ちます。「○○という処理を実現するには、どんな技術を使えばいいのだろう?」というご相談には、各種事例を交えて具体的な技術をご紹介することが可能です。お困りの際は、ぜひナレッジセンターにご相談ください。
関連エントリ
- 024 Apache JMeterの計測仕様を変更したら1.6倍くらいスループットが上がった
- 008 JNDIツリーを表示するJSPで、JNDI操作を確実に!
- 019 もうID・パスワードの入力は1回だけ!OSSのShibbolethでシングルサインオン
Java、Ruby及び周辺の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式で簡単にできますか...