2009年12月15日火曜日

App Engine SDK 1.3.0 (overview)

先ほどApp Engine SDK 1.3.0がリリースされました。 新機能について簡単に紹介します。

Blobstoreサービス

今回のアップデートの最大の目玉は、Blobstore APIが追加された点です。

これまではApp EngineのDatastoreを利用していましたが、これに格納できるそれぞれのデータは1MBという厳しい上限があったため、巨大なデータを格納する用途には向いていませんでした(巨大なデータを格納するには、データを分割したり、他のサービスと連携したりしていました)。 今回追加されたBlobstoreは巨大なデータ(Binary Large OBject)を格納するためのAPIで、50MBまでのデータを取り扱えるようです。

ただし、APIを見る限りでは、ファイルの内容を直接アプリケーション内で操作する用途ではなく、現時点ではアップロードされたファイルの保存と、そのファイルをそのままクライアントに返す機能だけを提供しているようです。動的に追加削除ができるリソースファイルのような扱いでしょうか。

なお、このBlobstoreサービスは、現時点では実験的なサービスとして提供されています。また、利用にはBillingの設定が必要であるようです。細かい使い方などは、追って紹介していく予定です。

また、この変更に合わせてアプリケーションの管理コンソールに「Blob Viewer」という項目が追加されています。アップロードされたファイル名やファイルサイズ、更新日時などが確認でき、手動で削除することもできるようになっています。

Blobstoreの詳しい使い方については、こちらのエントリを参照してください。

動的言語の高速化

Javaはいくつかの動的言語をサポートしていて、RubyやGroovyなどJava以外の言語で書かれたプログラムをApp Engine上のJava VMで動作させることができます。 これらの動的言語はJavaのリフレクションAPIを多用するため、どうしてもパフォーマンスに多少難があるという問題がありますが、今回のアップデートでこのリフレクション周りの処理が改善されたようです。

公式の発表によると、今回の改善でリフレクションに関する処理が最大で10倍程度速くなるそうです。 もしかすると、いくつかのリフレクションを利用しているフレームワークも高速化されているかもしれません。

システムプロパティの追加

現在稼働しているアプリケーションの状態を知るために、便利なシステムプロパティが追加されています。

// アプリケーションのバージョン (appengine-web.xmlで指定したもの)
String version = System.getProperty("com.google.appengine.runtime.version");

// 実行環境 ("Production", "Development")
String environment = System.getProperty("com.google.appengine.runtime.environment");

これまでは、実行環境によって動作を変えるときには少々トリッキーなコードを書いていましたが、上記のプロパティ情報を確認するだけで判別できるようになりました。

0 件のコメント:

コメントを投稿