一番かんたんなGoogle App Engineの使い方

第1回 はじめてのGoogle App Engine,まずはHello, World!

この記事を読むのに必要な時間:およそ 3 分

デモアプリケーションを動かしてみる

それでは,Google App Engineをインストールしたフォルダに含まれているデモアプリケーションを動かしてみましょう。Windowsのスタートメニューからコマンドプロンプトを立ち上げて次のように入力します。

> cd "c:\Program Files\Google\google_appengine"
> dev_appserver.py demos\guestbook
Allow dev_appserver to check for updates on startup? (Y/n):

アップデートの確認をするかどうか聞かれるので"Y"と入力してEnterを押します。

dev_appserver will check for updates on startup. To change this setting, edit C:\Documents and Settings\user/.appcfg_nag
INFO     2008-04-17 22:36:50,123 appcfg.py] Checking for updates to the SDK.
WARNING  2008-04-17 22:36:50,502 datastore_file_stub.py] Could not read datastore data from /tmp/dev_appserver.datastore
WARNING  2008-04-17 22:36:50,502 datastore_file_stub.py] Could not read datastore data from /tmp/dev_appserver.datastore.history
INFO     2008-04-17 22:36:50,523 dev_appserver_main.py] Running application guestbook on port 8080: http://localhost:8080

すると開発用のWebサーバが起動します。ブラウザを立ち上げて"http://localhost:8080"にアクセスしてみてください。次のような画面が表示されるので,何か文字を入力して「Sign Guestbook」ボタンを押してみてください。今入力した文字列が表示されるはずです。終了するには,Ctrl+Breakを押します。

図4 デモアプリケーション

図4 デモアプリケーション

簡単なアプリケーションを作ってみる

次に"Hello, world"と表示する簡単なアプリケーションを作ってみましょう。

C:\Program Files\Google\google_appengineにmyappフォルダを作成します。そして,そのフォルダ内に"helloworld.py"というファイルを以下の内容で作成します。一点気をつけなければならないのは,Pythonは行頭のスペースが意味を持ちます。他の言語で{}でくくるところをインデントで表現しますので,注意してください。

helloworld.py

import wsgiref.handlers
from google.appengine.ext import webapp

class MainPage(webapp.RequestHandler):
  def get(self):
    self.response.headers['Content-Type'] = 'text/plain'
    self.response.out.write('Hello, World!')

def main():
  application = webapp.WSGIApplication(
                                       [('/', MainPage)],
                                       debug=True)
  wsgiref.handlers.CGIHandler().run(application)

ここで,中身を簡単に説明しておきましょう。

1~2行目:
Webサーバと通信するためのWSGIという標準インタフェースを利用可能にします。また,Google App EngineのWebフレームワークを読み込みます。この部分は決まり文句と思えばよいでしょう。
9~13行目:
ここにURLとの対応を記述していきます。上の場合ですと,'/'にアクセスしてきた場合にはMainPageクラスが呼び出されるように,ハンドラを登録します。
4~7行目:
実際の処理をwebapp.RequestHandlerを継承したクラスとして記述します。GETメソッドで呼び出された場合はクラスのget()メソッドが,POSTメソッドで呼び出された場合はクラスのpost()メソッドが実行されます。今回は,Content-Typeの値に'text/plain'をしていますが,省略した場合は'text/html'が出力されますので記述しなくてもOKです。最後に,self.response.out.writeによって'Hello, Wolrd!'という文字列を出力します。

そして,同じフォルダに"app.yaml"というファイルを次の内容で作成します。

app.yaml

application: myapp
version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
  script: helloworld.py

アプリケーションに関する情報をYAML形式で記述します。アプリケーション名は,ここではmyappとしますが,実際にGoogle App Engine上に公開する際は,他と重複しないユニークな値にします。重要なのは,handlers:行以下で,URLとどのプログラムを実行するかの対応を記述します。正規表現が利用可能で,この場合はすべてのリクエストをhelloworld.pyで処理することを意味しています。

ここまでで,ファイル構成は次のようになっているはずです。

図5 helloworldファイル構成

図5 helloworldファイル構成

それでは,実際に動かしてみましょう。先ほどと同様にコマンドプロンプトから,次のコマンドを実行します。

> dev_appserver.py myapp

ブラウザを開いて,http://localhost:8080/ にアクセスしてみましょう。⁠Hello, world!」と表示されましたでしょうか? とてもシンプルなアプリケーションですが,簡単に作れることが分かって頂けたと思います。

図6 helloworldアプリケーションの実行

図6 helloworldアプリケーションの実行

ここで,アプリケーションを終了させないまま先ほどのhelloworld.pyを編集してみてください。例えば,次のように"Hello, Japan!"に変更にします。

self.response.out.write('Hello, World!')self.response.out.write('Hello, Japan!')

そして,ブラウザの再読み込みボタンを押してください。表示が変わったのが確認できると思います。このようにプログラムに変更を加えるとすぐに反映されるので,開発も簡単です。

以上で,Google App Engineの基本的な使い方は終わりです。次回は,もう少し複雑な登録/削除/編集ができるアプリケーションを作成してみましょう。お楽しみに。

著者プロフィール

山下英孝(やましたひでたか)

大学を卒業後,大手SIerに就職し,電機メーカーの研究所勤務を経て,ウノウに入社。1年半に渡ってWebサイトの開発,ディレクション,運用を経験した後に独立。2008年2月よりフリーエンジニアとして活動中。好きな言語はJavaScriptとPythonで,Linuxサーバ運用管理も得意。

ブログWeboo! Returns.

バックナンバー

一番かんたんなGoogle App Engineの使い方

  • 第1回 はじめてのGoogle App Engine,まずはHello, World!