2009年10月12日月曜日

#appengine javaのdatastore操作は #slim3 がおすすめ

自分はdatastoreのアクセスにJDOを使わない(個人的には、という意味ですが)し、Webアプリとしてのフレームワークという意味ではWicketTester並みの単体テスト環境が無いとイヤなので、slim3は今まで見送ってました。しかし、最近slim3がlow-level APIに対応したといぅ事でちょっと触ってみたりソースを読んでみたところ…S2JDBCを触っていた自分にとってめちゃくちゃ良いフレームワークとなっていました!これはスゴイ使いやすい。モチロンS2JDBC未経験の人でも全然おk。

自分としては「GAE/JのDatastore操作としてJDOから入るとハマる、誤解した理解をしてしまう」という意見をずっと持っていたので、ちょっと触る程度の初心者の方にはLow-Level APIで説明をしていました。ちょっと触ってもらうだけなら今まで通りでもいいですが、「実際に使っていくためのフレームワークは?」という話が出たりそれが前提の場合は、datastoreの操作を行うフレームワークとしてslim3を絶賛オススメします。生でLow-level APIを触るだけでアプリを組むのはなかなか危ないですし、どっちみち何かかぶせるのは間違いないですしね。
これからの自分は次のような手順で説明するかなw

  1. まずはLow-level APIを生で触る事でdatastoreの正しい理解をしてもらう
  2. slim3を使う事で、Low-Level APIをラップすると従来のORM的な便利さが得られる事を理解してもらう
  3. JDOのdatastore実装(datanucleus)の説明を軽く行う(もちろん随所で危険性の説明などを混ぜてdisりつつ説明する)
  4. JPAのdatastore実装(datanucleus)は論外であると切り捨てる。

自分でLow-Level API用のフレームワークを作っちゃう人は、モチロンそれでもいいと思いますけどね。自分はWicket-slim3datastore、jquery|AIR-t2framework-slim3datastore、あたりで使っていくかなぁ。

独自のプロジェクトでSlim3を使う方法

slim3のdatastoreの仕組みとしては2段階の仕組みがあります。

  1. Model用のクラスをslim3用のアノテーションで就職し、それをslim3用のslim3-genを使用して、タイプセーフにModelを扱うためのMetaクラスを生成する
  2. slm3本体のorg.slim3.datastore.Datastoreのメソッドを使用して実際の操作を行う

Slim3では上記のModel用のMetaクラスを生成するためにAPTを使っており、そのための設定をすればおkです。eclipseを前提に手順を書いておきます。お手軽に設定でき、お手軽に試せます。

  1. slim3-gen-${version}.jarslim3-${version}.jarをダウンロード(slim3-gen)(slim3)する。正しいダウンロード元がわからんので、適当にリンクを張ってみましたが、正式なダウンロード元がわかる人はそこからダウンロードしましょう。slim3プロジェクトとslim3-genプロジェクトをそれぞれsvn checkoutしてantを実行して自分でビルドしてもいいと思います。が、その場合は作業中のソースをビルドしてしまったりする可能性がありますのでご注意を。
  2. モジュールをプロジェクトにコピーする
    1. slim3-gen-${version}.jarは、先の説明の通りコンパイル時に必要なモジュールですので、実行時に適用されるクラスパス(war/WEB-INF/libとか)には配置せず、プロジェクト直下にlibとかのフォルダを作ってそこへおいておきましょう。
    2. slim3-${version}.jarは実行時に必要ですから、war/WEB-INF/lib等、実行時に参照されるフォルダに配置します。
    3. slim3-${version}.jarをclasspathに追加します。package explorerからだと図のような操作で簡単に追加sできます。
  3. eclipseのAPTの設定を行う
    1. プロジェクトのプロパティを開き、[Java Copmiler][Annotation Processing]を開き、図のようにチェックを設定します。
    2. すぐ下にある[Java Copmiler][Annotation Processing][Factory Path]を開き、[Add Jars]ボタンをクリックして、先の手順でプロジェクト配下のどこかにコピーしたslim3-gen-${version}.jarを選択します。

これだけの手順でslim3のdatastoreを使用する準備は完了です。モデル用のクラスをorg.slim3.datastore.Modelアノテーションで修飾し、保存するとHogeMetaのようなMetaというサフィクスが付加されたクラスが生成されます。使い方は、下記のサイト(slim3の新datastoreAPIの紹介としては一番最初のエントリかな!?)にも書かれていますし、近いうちにslim3の公式サイトのドキュメントが充実していく事だと思います。

追記

Google Groupへのリンクを貼るのを忘れてました。自分もユーザとなりそうなので、遅ればせながら加入させて頂きますた。

コメントを投稿