Play framework

GoogleAppEngine

Play!は、GoogleAppEngine向けの開発も行えるらしい。試してみる。

こっちに詳しくまとめています。 http://wiki.komina.info/playframework-gae

目次

準備

事前の準備として、Googleのアカウント、AppEngineのアプリは用意しておく。 また、GoogleAppEngineSDKをインストールし、GAE_PATHという環境変数にSDKのパスを設定しておく。

GoogleAppEngineへのデプロイをサポートするためのモジュールをインストールする。

> play install gae

ちなみにこの文章を書いている時点で、Play1.2.4、GAEモジュールは1.6.0です。 モジュールのサイズが思ったよりでっかいのでダウンロードに結構時間がかかる。回線が太いところでのインストールを推奨。

このモジュールはGAEへのデプロイをサポートしてくれるもの。よって

次に、開発するプロジェクトの dependencies.yml に依存関係を追記する。

require:
    - play -> gae 1.6.0

依存性解決のため、dependenciesコマンドを実行したが、やらなくても良さげ。

> play dependencies [プロジェクトのディレクトリ]

私の場合、Eclipseで開発したいので更にEclipseプロジェクト化する。

> play ec [プロジェクトのディレクトリ]

Eclipseから「既存のプロジェクト」としてインポートする。 プロジェクト内に「gae-1.6.0」のソースへのリンクがあれば、プロジェクトへGAEモジュールが正しくインストールされたと判断できる。

そこでプロジェクトを実行する。コマンドラインからrunしても良いし、eclipseから実行しても良い。

> play run [プロジェクトのディレクトリ]

するとプロジェクト内に、war/WEB-INF/appengine-web.xml というファイルが生成される。このファイルにGAEのアプリケーション名を記入する。

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <application><!-- Replace this with your application id from http://appengine.google.com --></application>
    <version>1</version>
    <threadsafe>true</threadsafe>
</appengine-web-app>

デプロイ

準備が整ったところで、デプロイしてみる。以下のようなバッチを用意した。

set gae_path=C:\gae_sdk
cd play-1.2.4
play gae:deploy [プロジェクトのディレクトリ]
cd ..

ようするにgae_path という環境変数にSDKのパスを設定し、デプロイコマンドを実行。ただそれだけです。

途中、Googleアカウントとパスワードを聞かれるので入力してやりると、ファイルのアップロードが自動でなされ、デプロイが完了します。

JPAからの移行

Google App Engineでは使用できるデータベースがMySQLのようなリレーショナルデータベースではないため、Play!がサポートしているJPAが使えません。

そこでJPAに代わるデータの永続化としてSienaというモジュールをインストールして使います。

http://lees2bytes.blogspot.jp/2011/04/moving-to-siena-from-play-framework-jpa.html このサイトの記事によると

  1. Sienaモジュールをインストール。
  2. confファイルにモジュールの使用を記述。
  3. 通常、"play.db.jpa.Model"を使うところを "siena.Model"を使ってModelクラスを作る。
  4. ModelにはIDフィールドを作成する。
    @Id
    public Long Id;
  5. Modelの呼出しメソッドを変更する。
    1. .save() ⇒ .insert()
    2. 検索系はほぼ書き直し
  6. Fixtureも書き直し。SienaFixtureへ。

とこんな感じでしょうか。(英語が苦手なので・・・) 実際に試してみたら追加修正していくことにします。

Sienaインストール

> play install siena

現時点(2012/9/6)でSiena2.0.6。Play!の1.2.3と互換性があるということで、1.2.5でも動くだろうと希望的観測で作業を進めます。

次に、dependencies.yml に依存関係を追記します。

require:
    - play -> gae 1.6.0
    - play -> siena 2.0.6

依存性解決のため、dependenciesコマンドを実行した。たくさん文字が流れて色々解決してくれる雰囲気。

> play dependencies [プロジェクトのディレクトリ]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-06-05 (水) 17:58:37 (2146d)