短いメッセージを表示する簡単なアプリケーションを実装することから始めましょう。
helloworld
という名前のディレクトリを作成してください。アプリケーションの全てのファイルはこのディレクトリ内に置きます。
helloworld
ディレクトリ内に helloworld.py
という名前のファイルを作成し、それに以下の内容を記述してください:
import webapp2 class MainPage(webapp2.RequestHandler): def get(self): self.response.headers['Content-Type'] = 'text/plain' self.response.write('Hello, World!') app = webapp2.WSGIApplication([ ('/', MainPage), ], debug=True)
この Python スクリプトではリクエストに対して、コンテンツについて説明したHTTPヘッダとHello, World!
メッセージの付いた応答を返します。
注意: 作成したファイルは平文として保存するようにしてください。そうでないとエラーが発生する可能性があります。
App Engine アプリケーションはapp.yaml
と呼ばれる設定ファイルを持っています。
とりわけ、このファイルではハンドラースクリプトがどのURLに使用されるのかを記述します。
helloworld
ディレクタリ内では、以下の内容を記述したapp.yaml
という名前のファイルを作成してください。:
version: 1 runtime: python27 api_version: 1 threadsafe: true handlers: - url: /.* script: helloworld.app
上から順に、この設定ファイルではこのアプリケーションに関する以下の内容について記述しています:
1
を表します。
新しいバージョンのアプリケーションソフトウェアをアップロードする前にこの値を変更した場合、
App Engine は以前のバージョンを保持しておき、管理コンソールを使って以前のバージョンにロールバックできるようになります。
python27
ランタイム環境の、APIバージョン1
で動作します。
他のランタイム環境やプログラム言語については、将来的にサポートする予定です。
threadsafe
なので、同じインスタンスで複数のリクエストを同時に処理できます。
スレッドセーフは高度な機能なので、あなたのアプリケーションがスレッドセーフ向けに設計されていない場合は動作がおかしくなる可能性があります。
/.*
に合致するパスを持つURL(つまり全てのURL)へのリクエストは、helloworld
モジュール内のhelloworld
オブジェクトによって処理されます。
このファイルの構造は YAML形式です。 設定オプションの全一覧については app.yamlリファレンスを参照してください。
ハンドラースクリプトと、全てのURLとハンドラーを紐付けした設定ファイルの準備ができれば、アプリケーションは完成です。 これで、App Engine Python SDKを持つウェブサーバでアプリケーションをテストできます。
helloworld
ディレクトリへのパスを指定した以下のコマンドを使って、ウェブサーバを起動します:
$ <path-to-Python-SDK>/dev_appserver.py helloworld/
これでウェブサーバは動作しており、8080ポートでリクエストを待っています。 ウェブブラウザに以下のURLを入力するとアプリケーションをテストできます。:
アプリケーションを開発している間、ウェブサーバを動作させたままにすることができます。 ウェブサーバはソースファイルの変更を監視し、必要に応じてそれらを再読み込みします。
それでは試してみましょう: ウェブサーバを動作状態にしておき、 helloworld.py
を編集して表示する文字をHello, World!
から別の何かに変更してください。 http://localhost:8080/のページをリロードしてください。
ウェブサーバをシャットダウンするには、ターミナルウィンドウをアクティブ状態にして、 ControlキーとCキーを押してください。
以降のチュートリアルの間も、ウェブサーバを起動したままにできます。サーバを停止する必要がある場合でも、前述のコマンドを実行してサーバを再度起動することができます。