Play framework with Scala を使ってみようシリーズです。
その1
その2
さて、やっぱりGoogle AppEngine使いたいですよね。
というわけでGAEモジュールを使ってみます。
Google AppEngineのSDKはインストールされているものとします。
また、サンプルを実際にAppEngine上で動作確認をする場合には、予めアプリケーションIDを取得しておいてください。
今回のサンプルのソースは https://github.com/ueshin/play-hello/tree/play-hello-0.0.1 でブラウズできます。
その1
その2
さて、やっぱりGoogle AppEngine使いたいですよね。
というわけでGAEモジュールを使ってみます。
Google AppEngineのSDKはインストールされているものとします。
また、サンプルを実際にAppEngine上で動作確認をする場合には、予めアプリケーションIDを取得しておいてください。
今回のサンプルのソースは https://github.com/ueshin/play-hello/tree/play-hello-0.0.1 でブラウズできます。
GAEモジュール
Play!のGAEモジュールを使うとGAEへのデプロイが楽になります。と、それだけではなくて、他にも様々なメリットがあります。
- Play!標準のディレクトリ構成で
- 開発中の自動リロードも動きます
- LoggingはGAEで使う
java.util.logging
にディスパッチされます tmp
フォルダは使えません- Datastoreへのアクセスは全てサポートしています
JPAを使えます。ただし、GAEの制限を受けますこれ、ダメなようです。→ その5へCache
はGAEのmemcache
のラッパになりますMail
はGAEのmail
サービスのラッパになりますUsers
サービスを利用でき、開発時には擬似ページが使えます- モジュールを使うことができます
- GAE環境では強制的に
PROD
モードになります
ドキュメントから意訳したものですが、訳を間違えていたらごめんなさい。
インストール
Play!のinstall
コマンドを使ってインストールしてもいいですが、今のところ、GAEのSDKのバージョンが1.3.7と少々古いです。現時点で最新の1.4.0が使えるものが
fork
されていますので、こちら持ってくることにします。githubからファイルをダウンロードし、ビルドします。
$ wget http://download.github.com/Ouziel-play-gae-36f7634.tar.gz
$ cd ${PLAY_HOME}/modules
$ tar zxvf /path/to/Ouziel-play-gae-36f7634.tar.gz
$ mv Ouziel-play-gae-36f7634 gae-1.1-1.4.0
$ cd gae-1.1-1.4.0
$ ant -Dplay.path=${PLAY_HOME}
これで準備ができました。
[追記: 2010/12/11]
2010/12/08にGAEのSDK 1.4.0に対応したGAEモジュールがリリースされました。
$ play install gae-1.4
でインストール可能です。
[/追記]
GAEにデプロイ
今回から新しく play-hello
というプロジェクトを作成して、実際にAppEngineで動作を見ていくことにします。新規にプロジェクトを作成します。
$ play new play-hello --with scala
conf/application.conf
ファイルに、GAEモジュールを使うよう設定します。module.scala=${play.path}/modules/scala-0.8
#module.gae=${play.path}/modules/gae-1.1-1.4.0
module.gae=${play.path}/modules/gae-1.4
この状態で一旦ローカルで起動してみます。
$ play run play-hello
すると、
war/WEB-INF/appengine-web.xml
というファイルが作成されます。AppEngineにデプロイするには、このファイルにアプリケーションIDを設定する必要があります。
<application>play-hello</application>
実際にAppEngineにデプロイしてみたい場合には、自分で取得したアプリケーションIDを設定してください。
ローカルで試すだけであれば特に設定の必要はありません。
それではデプロイしてみます。
$ export GAE_PATH=${GAE_SDK_HOME}
$ play gae:deploy play-hello
gae:deploy
コマンドの--gae
オプションが正しく動作しないため、GAE_PATH
環境変数にSDKのインストールパスを設定する必要があります。[訂正: 2010/12/06]
元ドキュメントの
--gae
オプションの指定の仕方が間違えていたようです。$ play gae:deploy play-hello --gae=${GAE_SDK_HOME}
のように指定すれば動作します。
[/訂正]
ブラウザで確認します。
Your application is ready!