2010年06月07日

永続化APIの選択

 Google App Engine(以下、GAE)上にアプリケーションを構築する場合、かなりシンプルなものでない限り、なんらかのフレームワークを使うことになると思います。

 僕の場合、Grailsを選択することになりました。
すでにGrailsで構築し、稼動し始めていたアプリケーションを、GAEにのせることにしたからです。

 Grailsは優れたフレームワークです。
しかし、それでもGAEとまったく関係なく作ったシステムを、後からGAEに適合させるためには、それなりの変更が必要でした。

 原因は
  • GAEのAPI仕様
  • RDBとGAEのデータストアの違い
  • Grails、またはそのプラグインの仕様
  • それらが合わさったもの
など、さまざまでした。

そこで、GAEアプリケーション開発の一例として、今回必要になった主な変更を、このカテゴリにまとめていきたいと思います。
さて、最初の大きな変更点は、ORマッパーの代わりに永続化APIを採用することです。

 GAEのデータストアはRDBではないので、ORマッパーは使えません。
ということは、そのままではGORMが使えないということになります。
そこで、GAEのJava APIが対応している2つのJava標準永続化API ー JDOとJPAのうちどちらかを選択して、それに対応したGrailsプラグインをインストールする必要があります。

 JPAとJDO、どちらを選択しても、たいした違いはないようです。
ただ、JPAは、永続化システムがなんらかのRDBであることを前提としていますが、App EngineデータストアはRDBではないので、いくつかサポートされていない機能があります。
 実際、GAEのドキュメントを見ると、どちらかというとGoogleはJDOを薦めてるような気配があります。
まぁ、それが自然でしょう。

 GAEによりマッチしてるっぽいJDOか、GORMが使えるJPAか...というあたりが選択のポイントかもしれません。
で、今回はJPAを選択しました。
JPAなら、gorm-jpaプラグインを使うことで、普通のGrailsっぽい部分を少しでも多く残せると思ったからです。(ほんとうに少しですが)
GAE上で動かすためだけに追加/変更するコードの量を、抑えたかったわけです。

 どちらを選択したかによって、必要になる設定ファイルとかが違ってくるわけですが、そのへんはapp-engineプラグインとかが面倒みてくれるので、心配いりません。


 さて、Grailsアプリケーションは既に作ってあり、GAEのSDKはインストールし、Grailsにはapp-engineプラグインと共に、gorm-jpaプラグインもインストールしました。
しかし、まだGAE上では動きません。
なぜなんでしょうか。

 Grailsアプリケーションを、GAEにのせるためのTODOリストは、はるか彼方までつづきます。
posted by craftsman at 21:04 | 東京 ☀ | Comment(0) | TrackBack(0) | Grails on Google App Engine
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。