Google App Engine詳解:さっそくHello Worldから作ってみた
いつもどおり話題沸騰中の「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として実行する。
- 特集: Google App Engine詳解 (3件)
- 今日のトップ記事
- 2日前
- 3日前
- 4日前
- 6日前
- 7日前
- ホワイトペーパー
- 話題のタグ
より多くのコスト削減に向けて、BEAの効果的なアプローチをご紹介いたします。詳しくはホワイトペーパーをご覧ください。
Firefox 3が対応したdisplayプロパティの値(3) - inline-table
MSもアドビも学生さんに開発ソフトを無償提供
「Economist」のトップページがリニューアル
あなたがプログラムを理解できない10の理由:第2回
新APIまもなく登場--Google Developer Day 2008の見所とは?
仮想化によるコスト削減を見える化:オンラインTCOカリキュレータ
内部統制対策を実現するIT運用管理ツール
-Simplify IT- ITをシンプルに 連載第2回
リスティング広告における競争優位性の維持