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

白石俊平(あゆた)
2008-04-11 15:00:00
  • このエントリーをはてなブックマークに追加

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として実行する。

  • コメント(4件)
#1 anonymous   2008-11-07 19:48:03
わかりやすかった
#2 anonymous   2009-03-23 22:25:22
bulder-example1がtypoです。
#3 anonymous   2009-04-07 18:00:06
a-
HTMLタグは使えません
HTMLタグは使えません
#4 anonymous   2010-02-13 21:38:30
aaa
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]