【ハウツー】
EJB 3.0時代のエンタープライズシステムプレゼンテーション層には、JSFやFaceletといった技術が採用されていくとみられている。JSFやFaceletにみられるコンポーネント指向という考え方は、Tapestryにおいて既に実現されていた。Tapestryは難しそうという印象があり、敬遠されることも多いが、優れた考え方を実現したWebアプリケーションフレームワークであり、同分野に関わるデベロッパであれば少なくとも一度は扱っておきたい。Tapestryを実際に使ってみる方法を紹介するので、まだ使ったことがないデベロッパはぜひ取り組んでみてほしい。
The Apache Jakarta Project, the Tapestry Projectは7月29日(オランダ時間)、Tapestryの最新版となるTapestry 4.1を公開した。Tapestryはプレゼンテーション層に位置するWebアプリケーションフレームワーク。コンポーネント指向のフレームワークで、要素に対してクラスを作成するという特徴がある。
同プロジェクトは1月7日(米国時間)、Tapestry 4.0を公開。4.0ではアノテーションが採用され、また簡素化された新しいDTDが採用されるなど、それまでのバージョンと比べて簡単に扱えるように改善が実施されている。4.1ではDojoとの関連が強化され、AJAXなどの動的ページとの連携が強化されてる。
Tapestryの基本的な考え方であるコンポーネント指向は、JSFやFaceletを学ぶうえでも基本となるものだ。Tapestryでコンポーネント指向のWebアプリケーションフレームワークになれておくといいだろう。
Tapestryを理解するには、実際にデモンストレーションを実行し、その構成を見ていく方法がいい。ここではTapestry 4.1を使ったデモンストレーションを取り上げながら勘所を示していく。学習する際の参考にされたい。
まずTapestryを動作させるWebアプリケーションサーバを用意する。Tomcat 5.x系かJBoss AS 4.x系を用意すればいいだろう。サンプルをビルドする必要があるためApache Antも用意しておく。次にTapestryの配布物と、サンプルプログラムをダウンロードする。サンプルはTapestry Examplesからtapestry-examples-version.tar.gzといったファイルをダウンロードすればいい。
サンプルを展開したら、tapestry-libraries/lib/web/にある次のファイルを削除する。
そしてTapestry 4.1の配布物から次のファイルをtapestry-libraries/lib/web/にコピーしておく。これはまだサンプルが4.1に対応していないため自分でコピーして最新版にアップしているのだ。ダウンロードしたサンプルが最新のバージョンに対応しているなこの作業はしなくていい。
これで準備完了だ。helloworldに移動してant(1)を実行する。helloworld/target/にhelloworld.warファイルが生成されるので、Webアプリケーションサーバのwebapps/以下に配置する。「http://localhost:8080/helloworld/app」にアクセスしてみよう。Tapestryが動作してページが表示されるだろう。
|
|
図2.1 リフレッシュすると時刻が更新されるサンプル |
これは簡単な例だが、Tapestryの動作を説明するうえで特徴的なものだ。簡単に内容を読んでみよう。
helloworldサンプルの実体はリスト3.1だ。このサンプルではクラスは作成されていない。注目するべき点はふたつ。span要素でjwcid属性を指定し続くvalue属性でjava.util.Date()が指定されていること、a要素で同じくjwcidが指定され続くpage要素で対象が指定されていることである。
これはTapestryのコンポーネント指向を表現する簡単で端的な例だ。このようにTapestryでは要素をクラスの出力に置き換えるといったことを実施する。このクラスがひとつのコンポーネントということになるわけだ。サンプルで使われているクラスはjava.util.Dateだが、これをあらかじめ用意したクラスに指定することもできるし、提供されているコンポーネントにすることもできる。そううまくいくものではないが、うまいことコンポーネントを用意すれば、クラスの作成は一切無しで、HTML側の編集だけで事足りるようにすることだってできる。
helloworld以外にもdirectlinkやformsというサンプルが含まれているので、同様の要領で実行してから、構成物を読んでほしい。どのように属性を指定しているか、どのようにクラスを作成しているか、継承するクラス、指定するアノテーションなど、簡単ながらかなり役に立つだろう。
Struts、Spring、Tapestry、JSF、Facelet、Wicket、Click、RIFEなどJavaで採用される代表的なWebアプリケーションフレームワークはいくつもある。それぞれに歴史的背景があり、なんらかの問題に対する改善や、アンチテーゼとして開発が実施されてきたものだ。
Strutsは言ってしまえばアクションをフレームワークにしたものだ。これはServletという基本技術に対してひとつの方向性を示したが、状態遷移が複雑になると手が付けられなくなるという傾向があった。
WicketやClickは比較的新しいフレームワークだ。動作は基本的にひとつのページに対してひとつのクラスを作成する。いわばページ指向のフレームワークである。理解しやすいし、デベロッパに主権があるという特徴がある。
Tapestryは言ってしまえば要素に対してクラスを作成する。WicketやClickがページ単位でクラスを作成するのに比べると、クラス化の単位が小さい。コンポーネント指向である。後発のJSFやFaceletにはTapestryの概念が活かされており、同様にコンポーネント指向である。エンタープライズにおける主流は今後このコンポーネント指向系のフレームワークになるとみられている。
Tapestryのようなコンポーネント指向のフレームワークの場合、表示の機能をクラス化しておけるため、再利用がおこないやすいという特徴がある。スクリプト言語の導入などもあり、必ずしもコンポーネント指向のフレームワークがEJB 3.0時代の主流になるとは限らないが、しばらく間は話題の中心にありつづけるだろう。
| DojoでAjax対応実現、Tapestry 4.1 [2006/8/2] |
| Apache Tapestry、トップレベルプロジェクトへの移行完了 [2006/6/22] |
| Jakarta Tapestry、Jakarta Projectを卒業 - トップレベルプロジェクトへ [2006/2/23] |
| DIコンテナ - Jakarta HiveMind 1.1.1 [2006/1/31] |
| JSCookMenuをTapestryで実現 - Tapestry JSCookMenu 1.0 [2006/1/11] |
| Java SE 5アノテーションもサポート - Jakarta Tapestry 4.0リリース [2006/1/10] |
| DI+プラグイン先進的な実験環境という向きも - HiveMind 1.1 [2005/10/27] |
| Apache Tomcat、Jakarta projectを卒業へ - 次なるJakartaの目玉は? [2005/9/26] |
| 次世代ウェブアプリケーションフレームワーク - Jakarta Tapestry 4.0 β3 [2005/7/29] |
| アジレント、ミリ波信号解析ソリューションを発表 [16:54 5/24] |
| NXP、独自のTrench 6テクノロジによる車載用パワーMOSFETファミリを発表 [16:52 5/24] |
| 産総研、光照射で損傷を自己修復できるゲル状スマートマテリアルを開発 [16:49 5/24] |
| アンテナ設置数が半分の33台に到達 - アルマ望遠鏡、2kmの干渉試験も成功 [16:45 5/24] |
| 人工知能実現へ一歩前進!? - NIMS、環境依存型「シナプス素子」を開発 [16:40 5/24] |
|
大阪駅「ギャレ大阪」跡地に約80店舗入居の新商業施設開業へ - JR西日本 [17:48 5/24] ライフ |
|
ネイティブの好むフレーズを集めたビジネス英会話ブック発売 - アルク [17:35 5/24] ライフ |
|
【レポート】【レポート】ネットワークレコーダー「nasne」先行プレビュー - Xperia/Sony Tabletでの使用感を確認!! [17:29 5/24] 携帯 |
|
自分らしさ発見! マイナビ×サンマリエのスペシャルセミナー開催 [17:21 5/24] ライフ |
|
『好きっていいなよ。』、2012年秋にTVアニメ化! スタッフ&キャストを紹介 [17:12 5/24] ホビー |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。