2009年5月11日月曜日

GAE for Java用のサンプルプロジェクトを公開しておきます

シンプルな構成

GAE for Javaでテンプレートとして使えるサンプルを作っていたが、おおよそできた。

  • ORMにはJDOを使う
  • EclipseでのJDOエンハンス対象クラスを設定する
  • Eclipse、MavenのどちらからもJDO関連のモジュールの単体テストが動作する
  • Javaのロガーのフォーマッタを入れ替える(1ログ1行で表示する)
  • Presentation層にはjspとjstlを使う

主にMavenでの単体テストが可能な事がメインで、これができるとHudsonでMavenプロジェクトを定義してのCIが可能となるので必須の機能なはず。みんなCIしてるもんね?CIを想定しなくて許されるのは小学生までだよね?
極力シンプルにしたので、ここから色々派生する事ができると思う。

こいつはシンプルなのでarchetype-pluginを作ってもいいんだけど、要望はなさげ。というのも、$ mvn eclipse:eclipseしてもEclipse側でうまく扱えない→結局ローカルでの実行にantかeclipseが必要になるので、maven単体でIntegrationTestが実行できそーにない。ここまでできればmaven一本で環境構築できて嬉しいんだけどな。cargo-pluginを使ってtomcatにデプロイして動作させる事もできるのかもしれんけど、gaeのsdkとの振る舞いの違いが気になって何かイヤだ。
ちなみにeclipseとmavenをうまく連動する事ができない問題は、eclipse側でmavenでいう依存性のスコープの概念が無いという問題と、jdoのdatanucleusのエンハンスの問題。GoogleAppEnginePlug-inによるエンハンス実行時の環境でのシステムプロパティを触る事ができれば結構うまく連動できそうなんだけども、GoogleAppEnginePlug-inのソースが見当たらないのでなんともならない。

  • https://svn.sourceforge.jp/svnroot/gae-j-samples/gae-jdo-simple-sample/trunk/gae-jdo-simple-sample

t2-frameworkの構成

t2-frameworkを使ったエントリも書いていたが、そちらのサンプルは主に以下のようにしている。

  • ORMにはJDOを使う。
  • EclipseでのJDOエンハンス対象クラスを設定する
  • Eclipse、MavenのどちらからもJDO関連のモジュールの単体テストが動作する
  • Javaのロガーのフォーマッタを入れ替える(1ログ1行で表示する)
  • Presentation層には何も使っていない。jQueryからt2-frameworkの@Ajaxなインターフェースを呼び出して描画してるだけ
  • t2はGuiceアダプタを使用している

t2-frameworkはシンプルさのバランスが絶妙なので、上記のシンプルなサンプルがあればt2はすぐ動作するし、サンプルなんて必要無いくらい。Viewに何のフレームワークも使っていないのは、はt2の@AjaxでWebAPIドリブンぽくGAE/Jを使い、WebブラウザでのViewにはjQueryで描画するだけにしておきたいため。
自分が作るサービスではWebのインターフェースはおまけ程度にして、AIRを正式なクライアント側プラットフォームとして使おうと考えている。なので、shotたん、new AMF()したいです…とかつぶやいておく事にする。

  • https://svn.sourceforge.jp/svnroot/gae-j-samples/gae-jdo-simple-sample/trunk/gae-jdo-simple-sample

Wicketの構成

Wicket on GAE/Jについての最後のエントリ以降、何も触ってませんw

t2のトコでも書いた通り、自分はWebでのインターフェース自体を重視していないためWicketにはあんまりこだわっていない。テンプレートとPageクラスの両方でコンポーネントの構造を意識する必要がある時点でDRYじゃないなーとかマイナスな思考も強くなって来た。Javaからのアプローチをする時はPageクラスさえ構築すれば後はよしなにやってくれろや、とか。
とはいえWicketは大好きなんで、ちょっとしたサービスをGAE/Jにデプロイする際はWicketを使う可能性が一番高いと思う。シンプルなサンプルを作成するためにjstlとか触ったら、htmlに式を書くとかありえなく思えて気絶しそうになったし。

コメントを投稿