|
|
第4回 Google App EngineでPythonプログラムを公開してみる
米Googleは2008年5月,Google App Engineというサービスを一般公開しました。このサービスを利用すると,PythonによるWebアプリケーションを手軽に公開して運用することができます。今回は,このGoogle App Engineでのアプリケーション作成にチャレンジしてみましょう。
Google App EngineとはGoogle App Engineは,2008年4月7日に米国で開催されたCampfire Oneというイベントで発表されたWebアプリケーション開発環境です。
同種のサービスに,Amazon EC2があります。大きな違いとして,Amazonの場合は,あくまでLinuxサーバー・インフラの仮想環境を提供するものであり,開発者がアプリケーションの実行環境を用意しなければなりません。 これに対して,Google App Engineは,PythonのランタイムやGoogleのAPIが用意されているため,開発者はプログラミングに専念できる環境になっています。利用者はアプリケーションを開発するだけで,あとはそれをアップロードすれば,Googleのインフラで自動的にスケーリングまで面倒を見てくれるというのが強みです。 Google App Engineの特徴Googleで,Pythonが広く使われていることはよく知られていますが,このGoogle App EngineでもPythonを利用できます。将来的には,他の言語をサポートすることも計画されています。 さてGoogle App Engineのプレビュー版では,開発者は三つまでアプリケーションを作成することができ,一つのアプリケーションに割り当てられるリソースは最大で以下のようになっていました。一般的なアプリケーションを作成して試すには,十分なリソースと言えるでしょう。
Google App Engineでは,アプリケーションはサンドボックスと呼ばれる実行環境で動きます。この環境では,標準ライブラリを含み最初からPythonを実行できます。また,Googleユーザーアカウント,データストア(Datastore)アクセス,URLフェッチ,Emailサービスに関するAPIが提供されています。逆に,これ以外の方法を使用した外部アクセスはできません。 アプリケーションへのアクセスも,標準ポートで待ち受けるHTTP/HTTPSしか使用できません。使用できるPythonのバージョンは2.5.2のみで,C言語での拡張などはサポートされず,利用できる標準ライブラリにも一部制限があります。サンドボックスでは,Python標準ライブラリやとGoogleのライブラリ,そしてアプリケーション・ディレクトリからPythonモジュールをインポートできます。 APIの利用方法Google App Engineで利用できる代表的なAPIに関して,簡単なサンプルを使って説明しましょう。 ◆ユーザーAPI ユーザーAPIを利用すれば,Googleアカウントでユーザーを認証できます。ユーザーのニックネーム,Emailアドレスを取得することも可能です。サインインしているユーザー名を取得する,単純なサンプル・コードを以下に記述します。
ユーザーAPIの詳細は,Google App Engineのページ「The Users API」に記述されています。 ◆データストア Google App Engineでは,Python向けのデータストアAPIが提供されています。バックエンドには,MySQLやPostgreSQLに代表されるようなRDBMSではなく,GoogleのBigTableが採用されています。このデータストアAPIにより,SQLライクな問い合わせ言語「GQL」でデータの永続化を行うことができます。モデルを定義するには,以下のようにします。
作成したこのモデルに対して,GQLでCRUD(Create,Read,Update,Delete)操作ができます。
データストアAPIの詳細に関しては,「The Datastore API」にあります。 ◆URLフェッチ URLフェッチAPIを利用して,外部のURLにアクセスし,その情報を取得したり,情報を送信したりできます。前回紹介したスクレイピングのようなこともできます。大ざっぱなコードは以下の通りです。
HTTPおよびHTTPS経由で外部から情報を取得します。五つのHTTPメソッド(GET/POST/HEAD/PUT/DELETE)をサポートしています。レスポンスとして返ってきた情報の処理,例外の捕捉も可能です。 このようにGoogle App Engineでの開発は,Google環境に特化した開発手法を用いる必要があります。その見返りとして,アプリケーションのスケーラビリティやインフラ・アーキテクチャの設計など,運用に関することをGoogleに任せるわけです。
>>SDKをダウンロードする
連載新着連載目次へ >>
|