Google App Engine 用に書かれたアプリケーションを支援する,最新のフレームワークとツールをいくつか紹介しよう。SimpleDS と Objectify という2つの永続化フレームワーク,JUnit ランナの Kotori,ケーススタディ GWT アプリケーション Apple Guice,そして Android デバイスのための GAE モニタリングアプリケーション Engine Watch だ。
SimpleDS
SimpleDS はアプリケーションデータを GAE のデータベースに透過的に保存する,Java アプリケーションのための永続化フレームワークだ。ただし本格的なフレームワークというよりは,データストア API のラッパと考えた方がよいだろう。GAE には JDO と JPA という2つの永続化ソリューションがすでにあるのに,さらにフレームワークが必要なのか,と疑問に思うかもしれない。プロジェクトオーナは次のように説明している。
- データストアAPIはマップ形式の構造の永続化を直接提供しているため,インターフェースレベルが低すぎる。
- JDO と JPA の API は単純な処理に対しては複雑すぎる。また,リレーショナルデータベースを前提に設計された,数多くの外部チェックが,パフォーマンスを損ねている。
Objectify
もうひとつの永続化フレームワーク Objectify は,型付オブジェクト(typed object)保存をサポートすることによって,JDO の欠点を補おうというものだ。機能のいくつかを紹介しよう。
- Objectify は,バッチ操作やクエリ,エンティティグループ,インデックス付けされないプロパティ(unindexed property)など,データストアがネイティブに持っている機能をすべて公開する。
- Objectify はJava の generics を利用して,タイプセーフなキーとクエリのクラスを提供する。
- Objectify はアプリケーションのコールドスタート時間に影響を与えない。最大でも数ミリ秒である。
- Objectify はデータを memcache へ自動的にキャッシュして,読み込みパフォーマンスを向上する。
- Objectify エンティティは Data Transfer Object を使わずにGWTで使用可能である。
Kotori
Kotori は GAE 上にデプロイされたアプリケーションをテストするための JUnit ランナである。JUnit 3 および 4 のテストケースをサポートするが,30秒以内で完了する短いテストケースのみ実行可能,など制限事項がある。
Apple Guice
Apple Guice は,Guice 依存性注入フレームワーク (dependency injection framework) に基づいた GAE 用 Google Web Toolkit (GWT) アプリケーションの,サーバ及び GWT INjection (GIN) におけるケーススタディである。またクライアントにおいては,Guice 上に構築された新たなDIフレームワークでもある。さらに Apple Guice は,次のパターンの実装例である : GWT Presenter に基づく Model-View-Presenter パターン,GWT Dispatch による Command パターン,そして Sharded Counter パターン。
Engine Watch
Engine Watch は Android モバイルフォンから GAE 利用状況をチェックするためのフリーのモニタリングアプリケーションであり,次のような統計データを確認することができる: CPU 時間,リクエスト数,送信データ量,受信データ量,セキュア要求(Sequre request) その他。