Google App Engine for Java関連の記事が随分と溜まってきましたので、まとめ記事を作ってみました。今後も記事追加時にはこの記事を更新していきたいと思います。

 GAE関連ブログをお書きの他の方のように、バックエンドの技術に対する深い考察などはありませんが、実際にアプリケーションを作成してみた上で遭遇したトラブルや小技を書いています。また、なるべくGoogleのドキュメントには記述されていないことを書いたつもりです。

 GAEでアプリを開発される方の参考になれば幸いです。

■対象のアプリケーション

 次のアプリケーションを作成した上でのTIPSです。

  • Cycle Base NANASHI -サイクルベース名無し-
    • 自転車用品・パーツのレビューまとめサイト。2ch自転車版からレビューを転載。
    • DatastoreへのアクセスにはLow Level APIを使用(2010/1にJDOから変更)。
    • 使用しているアプリケーションフレームワークは特になし(2010/1にStruts 1.3の使用を中止)。

■Datastore(JDO)関連

Datastoreの基本

Datastore利用アプリ開発時の注意

  • Datastoreはバージョン間で共通
    • Datastore(Memcacheも)は共通なため、クラス構造(プロパティ等)をバージョン間で変えないように注意が必要。変えたらデータをすべて消すのが無難。
  • Datastoreとlazy loading
    • entityの属性はlazy loadingではない。親entityのListに対してsize()を呼び出すとListのメンバーがすべてloadされる。
  • DatastoreでBlobはlazy loadingされる
    • entityの属性のうち、Blob、Textはlazy loadingされる。

その他

■Datastore(JDO以外)関連

■Memcache

■URL Fetch、Images

■GAE上でのJavaプログラミング

  • 使用メモ、JSP・Servlet・Struts編
    • JSP等の基本的なTIPS。sessionの有効化方法、JSP/Strutsでsessionで使わないための設定、JSPでEL式・JSTLを使うための設定、Action(*.do)をWelcomeページにしたときの注意。
  • 使用メモ、その他編
    • その他のTIPS。MemcacheにMapを格納したときの注意(Mapの操作は無効)、Google Acountsで取得できるnameについて(@gmail.comが付く)、warディレクトリのupload時の注意等(GAEコマンドを使うとCVSフォルダも公開される、Eclipse plug-inなら無視される)。
  • GAE/Jでメンテナンス中画面を出す
    • バージョン機能を使って503 Service Unavailableを一時的に返す方法。
  • アプリケーションのログの取得
    • アプリで出力したログ、およびアクセスログ取得の方法。
  • JSP文字化け対策
    • SDK 1.2.0で起きていた文字化けへの対策。1.2.1以降は改善されているため現在は不要。
  • 静的ファイルに有効期限を設定(09/10/19)
    • 静的ファイルのExpiresを設定する方法。appengine-web.xmlのstatic-filesにexpirationを指定する。
  • GAE/J、UUを考慮したアクセスカウンタ(09/11/14)
    • ユニークユーザーを考慮したアクセスカウンタの作成メモ。MemcacheでIPアドレスを記録する。

■その他、開発環境など