GoogleAppEngine + PythonでHello World!

うちの研究室には誰もPython使いはいないはずなのに、オライリー本があったので試しに勉強してみようかなぁと思っている。

初めてのPython 第3版

初めてのPython 第3版

まぁこんなに分厚い本なので家に持ち帰って読むのは面倒だし、研究室で暇なとき読み進めて、家ではコーディングしてみようかななんて。で折角のPythonなんで、噂のGooglAppEngineも使ってみた。

MacでGAEセットアップ

幸いにしてMacだとすぐに下準備が済んじゃうので、セットアップと言うほどのことはないが一応。


Macでは(少なくともLeopardでは)Pythonが標準インストールされているはずなので、その辺は割愛。心配なら

$ which python

で、パスの通ったディレクトリにあるか確認。


まずはGoogleへ。Googleアカウントを取得する。

http://appengine.google.com/

Gmailなどで既にアカウントがあれば必要なし。登録後はappengineのトップページで"Create an Application"する。Application Identifierにはアプリケーションに与えるユニークなIDを、Application Titleにはアプリケーションの名前を入力して"Save"。以降の説明のため、今回はIdentifierの方を"helloworld"と登録したことにする。登録後は

https://appengine.google.com/dashboard?&app_id=helloworld

から各種情報を参照できる。


Google App Engine SDK for Pythonをダウンロード。

http://code.google.com/intl/ja/appengine/downloads.html#Google_App_Engine_SDK_for_Python

ダウンロード後はGoogleAppEngineLauncher-*.*.*.dmgファイルを開き、GoogleAppEngineLauncher.appを/Applications/などへコピーする。

コーディング?

とりあえず作業ディレクトリを作っておく。

$ mkdir ~/gae

として、ホームディレクトリ下に作ったとする。


GoogleAppEngineLaucher.appを開く。

左下の"+"ボタン(もしくはcmd + N)から新規アプリケーションを作成。Application Nameは任意の名前で構わないが、先程Googleで登録したIdentifier、すなわちhelloworldとした方が何かと楽。Application Directoryは~/gaeを設定して"Create"。これで自動的に~/gae/helloworldディレクトリにapp.yaml、index.yaml、main.pyの3つのファイルが生成される。

$ ls ~/gae/helloworld
app.yaml index.yaml main.py


まずはmain.pyをエディタで開いてみる。

#!/usr/bin/env python
#
# 中略
#

from google.appengine.ext import webapp
from google.appengine.ext.webapp import util

class MainHandler(webapp.RequestHandler):
  def get(self):
    self.response.out.write('Hello world!')

def main():
  application = webapp.WSGIApplication([('/', MainHandler)], debug=True)
  util.run_wsgi_app(application)

if __name__ == '__main__':
  main()

これがメインとなるPythonスクリプト。最新のver1.3.0では、デフォルトがHello Worldを表示するスクリプトとなっているので、今回は編集せずにこのまま使う。次にapp.yaml

application: helloworld
version: 1
runtime: python
api_version: 1

handlers:
- url: .*
  script: main.py

アプリケーションの設定を記述したYAMLファイル。applicationがIdentifierで設定したもの(例ではhelloworld)になっていること、handlers:scriptがmain.pyになっていることを確認。

テストとデプロイ

実際に動かしてみる。まずはローカルで。GoogleAppEngineLauncherでhelloworldを選択し、"Run"(もしくはcmd + R)でサーバを起動。緑の再生マークが表示されたら、"Browse"(cmd + B)。

http://localhost:8080/ が開き、うまくHello world!と表示された。それではこれを実際にデプロイしてみる。ローカルのサーバは"Stop"(cmd + .)しておく。


デプロイも簡単。"Deploy"(cmd + D)ボタンが見えてるね。これをクリックすると、Googleアカウントへのログインダイアログが出るので、必要事項を記入しログイン。ログコンソールがずらーっと流れて、

*** appcfg.py has finished with exit code 0 ***

と表示が出れば終わり。

http://helloworld.appspot.com/

上記URLにアクセスすると、実際のアプリケーションが動作しているのがわかる。URLのhelloworldの部分はIdentifierに置き換えてくだしあ。

おわりに

とても簡単でした。ただこれから先のことについては、あまりネットでも情報が見つかりませんね。Google Codeの方でお勉強するのが良さそう。