Google App Engine詳解:さっそくHello Worldから作ってみた

白石俊平
2008/04/11 15:40

いつもどおり話題沸騰中の「Google App Engine」、早速登録して使ってみました。まずはHello Worldから。

App Engine SDKのダウンロードとインストール

 開発用のSDKはこちらからダウンロードできる。SDKには、App Engineをほぼ完全にエミュレートした開発用サーバが含まれており、ローカルでの開発やテストに用いることができる。

 SDKは、プラットフォームごとに異なるバイナリとして配布されている。WindowsやMac OS Xではインストーラを用いることができ、デフォルトでインストールを終えると以下の場所にファイルが展開される。

  • Windows・・・C:\Program Files\Google\google_appengine\
  • Mac OS X・・・/usr/local/bin/

 このパスを環境変数PATHに登録しておくと、SDKのツールをコマンドとして実行できるようになる。以降の解説では、以下のようにしてPATHに登録した状態を前提として説明する。

Windows:
  set Path=%Path%;C:\Program Files\Google\google_appengine\

Mac OS X:
  export PATH=$PATH:/usr/local/bin

ソースコードの記述

 まずは、アクセスすると「Hello, World」と出力するだけのサンプルWebアプリを作ってみよう。

 App Engineでの標準的な開発言語はPythonであり、CGIに対応した様々なフレームワーク(Django、CherryPy、Pylons、web.pyなどが挙げられている)を用いて、Webアプリの開発に役立てることもできる。またApp Engineには「webapp」と呼ばれるWebフレームワークもデフォルトで同梱されており、import文の記述のみで利用することが可能だ。

 では、サンプルを作成するためにまずは「builder-example1」というディレクトリを作成し、その中に「builder-example1.py」と言うファイルを作ろう。同ファイルには以下の内容を記述する。

import wsgiref.handlers
# webappのインポート
from google.appengine.ext import webapp

# (1) RequestHanlerを継承したクラスを作成
class MainPage(webapp.RequestHandler):
  def get(self):
    self.response.headers['Content-Type'] = 'text/plain;charset=UTF-8'
    self.response.out.write('Hello, World')

def main():
  # (2) URLとハンドラの対応付け
  application = webapp.WSGIApplication([('/', MainPage)],
           debug=True)
  # (3) CGIHandlerを用いて、メインルーチンを実行する
  wsgiref.handlers.CGIHandler().run(application)

# (他モジュールからの読み込みではなく)直接ファイルを実行された際に行う処理として
# main()関数を実行
if __name__ == "__main__":
  main()

 webappを用いたプログラムは、大きく分けて三つの部分からなる。

 (1) まず、webapp.RequestHandlerクラスを継承したクラスの作成だ。このサンプルでは「MainPage」クラスがそれにあたる。そのクラスに、HTTPリクエストのメソッドに対応するget()やpost()と言ったメソッドを定義すれば、リクエストの処理を行うことができる。

 HTTPリクエストやHTTPレスポンスにアクセスするには、RequestHandlerクラスから継承したrequest、responseと言った属性を用いる。ここでは、Content-Typeヘッダの設定とレスポンス本文の書き出しを行っている。

 (2) このモジュールにおけるメインの処理として呼び出されるmain()メソッド内では、まずwebapp.WSGIApplicationクラスのインスタンスを作成している。コンストラクタの第一引数には、URLとRequestHandlerのマッピングを複数指定できる。二番目の引数ではデバッグモードのON/OFFを切り替えることができ、Trueの場合は、エラーが発生した際ブラウザにスタックトレースが表示される。

 (3) HTTPリクエストの処理を開始するのはこの部分で、アプリケーションをCGIとして実行する。

記事の感想やご意見をコメントでお寄せください(CNET_IDログインが必要です)
ログイン パスワードを忘れた方  |  新規登録
  • 新着記事
  • 人気記事
  • 特集
  • ブログ