BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Spring が GWT アプリケーション開発と Roo を統合 - Grails レベルの生産性実現を目指す

Spring が GWT アプリケーション開発と Roo を統合 - Grails レベルの生産性実現を目指す

ブックマーク

原文(投稿日:2010/07/27)へのリンク

VMware と Google は今年5月,VMware の Spring Roo フレームワークと Google の GWT Java-JavaScript コンパイラそれぞれの技術者による コラボレーション を発表した。Java ベースの GWT リッチインターネットアプリケーションフレームワークに,Spring Roo による生産性向上を提供することがその目標だ。

SpringSource の Ben Alex 氏が率いる Spring Roo は軽量な RAD (Rapid Application Development) スタックであり,Ruby on Rails,Groovy,Grails などのフルスタックソリューションと同等の迅速なフィードバックと生産性を開発者に提供する。プロジェクトのセットアップやエンティティ,コントローラなどを簡易コマンド言語で記述して,クラスの生成とライフサイクル管理を行うシェル環境や,クラスに対して適用するサービスを "オプトイン" で選択可能な,ソースコード保持レベルのアノテーションなどの機能が含まれている。

Spring Roo ではドメインレイヤもシェルを使って生成するが,ここで注意すべき点がある。従来型の Java エンタープライズでは,DAO を使用したエンティティマネージャ・パターンが好んで利用される。Spring Roo のアプローチは,これまで数多くの議論を重ねてきた,そのような手法とは大きく異なっているのだ。Spring Roo リファレンスによると,

従来の Javaエンタープライズアプリケーションのほとんどは DAO,サービス,ドメイン,コントローラの各レイヤを持っています。一般的な Roo アプリケーションでは,エンティティレイヤ (ドメインレイヤに近いものです) と Web レイヤのみを使用します ... アプリケーションで必要であれば,サービスレイヤを追加することもあります。しかし DAO レイヤを追加するのは非常にまれなことです。

アプリケーションの構成は,Spring-MVC または GWT-MVP ベースの CRUD ひな形アプリケーション (scaffolding application) の生成時に選択される。

Google Web Toolkit は,Java-to-JavaScript コンパイラである。開発者は Java の IDE と記述方法によってプログラムコードを作成する。最終的な "コンパイル" 実行後のアプリケーションは完全な JavaScript になるため,ブラウザに依存しない対話形式の Web アプリケーション構築が可能である。また GWT には Space Tracer という Chrome エクステンションが含まれている。これはクライアント側アプリケーションのプロファイルとデバッグを行うツールである,さらに,サポート対象が Google App Engine(GAE),SprintSource tc Server Develop Edition に限定されてはいるが,サーバサイドでのプロファイルも可能である。GWT プロジェクトサイト によると,

この統合によって,データベース呼び出しや memcache ヒット,リソースフェッチ,その他サーバ側サービスコールの統計情報が参照可能になります。

Googleとの新たなコラボレーションよって,GWT を使用したアプリケーション拡張と,DataNucleus の永続化サポートを備えた GAE へのデプロイが利用可能になる。SpringRoo は,GWT MVP のビュー記述から GWT コンパイラのセットアップ,ドメイン永続性と Maven の依存性設定に至るまで,プロジェクトのライフサイクルを - バックグラウンドで - 自動化する。

Spring Roo はまた,JUnit に統合されたドメインレイヤのテストケースを生成するコマンドを備えている。テストケースは Spring 統合テスト基盤 (Spring integration testing infrastructure) 上に構築され,CRUD などの一般的な JPA 操作に関して包括的な検証を行う。さらに Selenium ツールを使用して,プロジェクトの Web コントローラ用の自動テストも生成する。Web 層のテストでは,Maven が Tomcat サーバーインスタンスを起動して,Spring Roo がテスト用 Web アプリケーションを検証のためにデプロイする。

ラウンドトリップ可能なコードをバックグラウンドで生成するために,Spring Roo では AspectJ の型間宣言 (Inter-type declaration,ITDS)を使用する。ITD は Java 風の構文で記述されたアスペクトで,コンパイル時にその内容が Java クラス内に織り込まれる。Spring Roo はこの ITD を管理して,関連する Java クラスの更新に対応する。例えば @RooToString とアノテートされたクラスに対しては,クラスの変数すべてを列挙するアスペクトを用いて,toString() メソッドを新たに作成または更新する。メソッドは最終的に .class ファイルにコンパイルされるので,開発者にはこのようなコードを手書きしなくて済む,というメリットがある。

Eclipse や IntelliJ などの IDE を,ROO の生成コードを認識できるようにセットアップするためには,AspectJ Developer Toolkit (ADJT) を提供するプラグインが必要になる。これによって開発環境内で,AspectJ アスペクト生成コードを使用したコード補完のサポートが実現される。一方で SpringSourceは,SpringSource Tool Suite (STS) という Eclipse ベースのディストリビューションを無償で提供している。これには (m2eclipse プラグインなどの) Spring Roo 開発に最適なプラグインも同梱されている。ただし IDE は便利ではあるが,すべてのコマンドが ROO シェルで実行される事実には変わりないので,場合によっては不要な贅沢なのかも知れない。

Christian Dupuis 氏の SpringSource でのブログでは,サンプルアプリケーションと使用法の資料が提供されている。氏の記事には,STS の設定から ROO を使用したプロジェクト生成,基本的な GWT アプリケーションの GAE へのデプロイまでの全ステップが詳しく検討されている。まだ開発初期段階ではあるものの,STS と GWT の統合には多くが期待できそうだ。

この記事に星をつける

おすすめ度
スタイル

BT