Google App Engine

申し込んでみた

Google App Engineが公開されたので,さっそく申し込んでみました.でも現段階ではアプリを3個しか登録出来ないし,一旦登録したアプリは削除できないらしいので,何をやったら面白いのかを考えてみる事にしました.

いろんな制約

Google App Engineは,ファイルシステムへの書き込み,ソケット利用,子プロセスやスレッド作成,シグナルのようなシステムコール利用ができません.ユーザによるライブラリの追加はできますが,Cで書いたpythonモジュールは動きません.さらに,ファイルシステムへの書き込みなどが禁止されたりしてることから標準ライブラリ中のいくつかのモジュールに変更が加えられています.Google App Engineで動くpythonライブラリ一覧を一読しておくことをお勧めします.

何ができるか?

Google App EngineアプリケーションはGoogleアカウントでユーザを認証することができます.というか,それ以外に何か認証しようと思ったら自分でアプリを組む必要があります.つまり,Googleアカウントを持っていることが前提.でも,「Googleアカウントを持ってる人じゃないと使えないアプリを作れるサービス」,ってのはGoogleのおもてなしの心としてどうよ,と思ったのでもう少し深く調べてみました.ちょっと調べてみると,the Administration Consoleに

If you are using App Engine with your Google Apps account, you can sign in to App Engine for your domain using a URL similar to the following, where your-domain.com is your Google Apps domain:

なんて記述を見つけました.さらに調べてみると,Deploying your Google App Engine Application on your Google Apps Domainなんて文章も見つけました.ってことは,このサービス,Google Apps用として作られているのかもしれません.つまり,自分でドメインを持っている人(や法人)がGoogle Applsを使うと,そのドメインをGoogleに預ける形でメールアドレスやメーリングリスト,Google Docsやカレンダーを使えます.このGoogle Appsの機能の一つとしてwebが使えるようにしようとしているんじゃないかと思います.

っても,

それだけじゃ面白くないので,何か面白い事ができないかさらに調べてみました.Serving Dynamic Images with Google App Engineを見ると,映画とその紹介写真にコメントをサーバに保存しています.さらにUploading Data with Bulk Data Uploaderをみると,大容量のデータをサーバに保存する例を紹介しています.

こんなサンプルをどこかで見た事があると考えて思いついたのがAtomPubでした.AtomPubのサーバを実現するためには,サーバがGET/PUT/POST/DELETEをサポートしている必要があります.調べてみるとサポートしていました.ってことはAtomPub用のサーバを作ることができます.念のため,クライアントとしては使えるかどうかも調べてみると,こちらもOK.ってことは,AtomPubをデータ送受信用に利用するフィルタに使えるということになるでしょう.

ただ,Google App Engineはbackgroundでtaskを動かすことができないので,作りには工夫をしておく必要があるかもしれません.ログローテートはdatastoreを使ってれば気にしなくていいはずですけどね.ちなみに,cronもどきのことをやるために,web cronというのを薦めている人がいました.

で何を作ってみるか

悩むんだよねぇ.最初に思いついたのはInteractive Shellだったんですが,物の見事にCloud Playgroundとして提供されていました.それよりもまず,python覚えなきゃね.まずAtomPubサーバ作ってみるかな