はじめに
Google App Engineを試して見ようと思い、Google App Engine for Java実践クラウド・プログラミングを購入して、ちょっと触って見ました。一通りできることは解説してあるので、とりあえずGoogle App Engineで動くサイトを作りたい人にはいい本かもしれません。2012年7月8日追記:リンク先をチェックしたら絶版になってしまったようです。。。
必要なもの
- Java SDK: 私はJava SE Development Kit 7u3をインストールしました
- Eclipse: 私はEclipse IndigoのJava EE IDE for Web Developersをインストールしました
- Google App Engine Eclipse Plugin:私は以下の画像のものをとりあえずチェックしてインストールしました
Bigtable
Google App EngineのデータストアサービスであるBigtableのクエリに関しては、以下のリンクが参考になります。Datastore Queries - Google App Engine — Google Developers
以下のコードでローカル環境に仮想のデータストアサービスがセットアップされます。
package com.dukesoftware.gaej.dao; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig; import com.google.appengine.tools.development.testing.LocalServiceTestHelper; public class DaoTest { private final LocalServiceTestHelper helper = new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()); @Before public void setUp() { helper.setUp(); } @After public void tearDown() { helper.tearDown(); } @Test public void test() throws Exception { // something you would like to test :D } }
Unit Testing
特にBigtableにアクセスするようなテストをローカル環境で実行したい場合は、以下のページを参考にしてください。Local Unit Testing for Java - Google App Engine — Google Developers
Httpsの設定
web.xmlに以下の要素を追加すると、設定したパス(以下の例では/hogehoge/*)のみhttpsになります。<security-constraint> <web-resource-collection> <url-pattern>/hogehoge/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
StaticファイルのExpiration設定
appengine-web.xmlのstatic-filesで設定します。 オフィシャルドキュメントを参考にしてください。最も単純なアクセスパーミッションの掛け方
管理者のみアクセスできるパスを設定するには、以下のように設定するのが手っ取り早いです。小規模なサイトやテストサイトではこれで十分でしょう。
<security-constraint> <web-resource-collection> <url-pattern>/hogegoge/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint>もっと複雑なユーザ管理をしたい場合は、Spring Securityなどを試すといいかもしれません。
Spring Securityを使ってGoogle AccountのUser管理を行う方法についてはSpring Security in Google App Engineが大変参考になります。
実際に自分で設定して気がついたこと
どうも上記のHttpsの設定とアクセスパーミッションの設定を別々に分けて設定すると、うまく動かない(httpsがかからないパスが出たり、admin以外でもアクセスできるパスが出る)場合があるので、同一パスの場合は、上記の設定を1つのセクションにまとめて設定してください。つまり以下のようになります。<security-constraint> <web-resource-collection> <url-pattern>/hogegoge/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
ローカルの開発環境でのBigtableのデータのストア先
(project root)/war/WEB-INF/appengine-generated\local_db.bin
コメント