Google App Engine アプリケーションは、作成、保守、およびトラフィックとデータ ストレージのニーズの変化に合わせたスケール変更が容易です。App Engine で保守できないサーバーはありません。アプリケーションをアップロードするだけで利用できます。

App Engine アプリケーションは、入トラフィックに基づき自動的にスケール変更します。負荷分散、マイクロサービス、承認、SQL および NoSQL データベース、Memcache、トラフィック分割、ログ、検索、バージョニング、ロールアウトおよびロールバック、セキュリティスキャニングすべてにネイティブで対応しており、カスタマイズ性が高いです。

App Engine の環境 (標準環境フレキシブル環境) は、Java、Python、PHP、NodeJS、Go などのプログラミング言語のホストに対応しています。これら 2 つの環境によって、各環境にはそれぞれの強みがあるため、ユーザーはアプリケーションの挙動を最大限柔軟に調整できます。詳細については、「App Engine 環境」を参照してください。

このコードラボでは、Web を介して Google Cloud Platform でホストされているコンピューティング リソースへの接続方法について学びます。Cloud Shell および Cloud SDK gcloud コマンドの使用方法について学びます。

本チュートリアルは、https://cloud.google.com/appengine/docs/python/ から編集されています。

学習内容

必要な環境

本チュートリアルをどのように使用しますか?

通読するだけ 通読し、演習をこなす

HTML/CSS Web アプリの構築についてのあなたの習熟度として、最も適切なものを選択してください

初心者 中級者 上級者

Google Cloud Platform サービスの使用についてのあなたの習熟度として、最も適切なものを選択してください

初心者 中級者 上級者

会議でのコードラボのセットアップ

全てのパソコンは Codelab のみの使用となります!

ログイン後https://kiosk.gcplab.me/next17-tokへアクセスしてください。

退出なさる時はログアウトを忘れずにお願いいたします。

講師は、セットアップ済みの既存のプロジェクトで一時アカウントをあなたと共有するので、課金の有効化や本コードラボの実行に伴うコストについては心配いりません。それらのアカウントはすべて、コードラボ終了直後に無効化されます。

ログインに使用する一時ユーザー名/パスワードを講師から受け取った後、Google Cloud Console にログインします。https://console.cloud.google.com/.

割り当てられたプロジェクト ID をメモしてください (上のスクリーンショットでは「next17-tok-xxxx」)。以降、本コードラボでは PROJECT_ID と呼びます。

Google Cloud Shell を起動する

Google Cloud はラップトップからリモートで操作できるため、本コードラボでは、Cloud で動作するコマンドライン環境である Google Cloud Shell を使用します。この Debian ベース仮想マシンには、必要なすべての開発ツール (docker、gcloud、kubectl など) がロードされています。それは、永続的な 5GB ホームディレクトリを提供し、Google Cloud で動作し、ネットワーク性能と認証を大幅に改善します。そのため、本コードラボに必要なものは、ブラウザのみです (本コードラボは Chromebook でも動作します)

Google Cloud Shell をアクティブにするには、開発者コンソールで右上のボタンをクリックするだけです (プロビジョニングと環境への接続には数分しかかかりません)。

クラウド シェルに接続すると、すでに認証済みであり、プロジェクトがすでに PROJECT_ID に設定されていることが分かります。

$ gcloud auth list
認定済みアカウント:
 - <myaccount>@<mydomain>.com (アクティブ)
$ gcloud config list project
[core]
project = <PROJECT_ID>

何かしらの理由でプロジェクトが設定されていない場合、次のコマンドを発行してください。

$ gcloud config set project <PROJECT_ID>

PROJECT_ID が分かりませんか?セットアップステップでどの ID を使用したかを確認するか、コンソール ダッシュボードで検索してください。

重要。最後に、デフォルト ゾーンとプロジェクト構成を設定します。

$ gcloud config set compute/zone asia-northeast1-a
$ gcloud config set compute/region asia-northeast1

別のゾーンも選択できます。ゾーンの詳細については、『領域及びゾーン説明書』を参照してください。

Cloud Shell 起動後、コマンド ラインを使用して、Cloud SDK gcloud コマンドまたは仮想マシン インスタンスで利用可能なその他のツールを呼び出せます。永続的なディスク ストレージで $HOME ディレクトリを使用して、プロジェクト全体および Cloud Shell セッション間でファイルを保存できます。$HOME ディレクトリは、プライベートであり、他のユーザーはアクセスできません。

まず、アプリケーション用の $HOME ディレクトリに新しいフォルダーを作成します。

$ mkdir helloworld && cd helloworld

Helloworld ディレクトリ内に、helloworld.py というファイルを作成し、次のコンテンツを入れます。

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 というファイルを作成します。

app.yaml

runtime: python27
api_version: 1
threadsafe: true

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

上から下まで、この構成ファイルには、このアプリケーションについて次のように記述されます。

このファイルの構文は YAML です。構成オプションの完全なリストについては、app.yaml 参考資料を参照してください。

アプリケーション サーバーの展開インスタンスを起動します。

$ dev_appserver.py ./

Cloud Shell ツールバーで Web Preview アイコンをクリックし、[preview on port 8080] を選択します。ブラウザのタブが開き、先ほど起動したサーバーに接続します。

アプリケーション開発中、Web サーバーの動作を継続できます。Web サーバーは、ソース ファイルの変更を認識し、必要な場合、それをリロードします。

試してみましょう。Web サーバーの動作を継続し、+ 記号をクリックして新しい Cloud Shell 端末を追加します。

helloworld ディレクトリに移動します。

$ cd helloworld

では、helloworld.py を編集して、 Hello, World! を「Hello, Kathy!」などに変更してみましょう。

helloworld.py

import webapp2

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

app = webapp2.WSGIApplication([
    ('/', MainPage),
], debug=True)

アプリが動作中のブラウザでタブをリロードします。

Hello World サーバーを本番 App Engine 環境に展開します。

$ gcloud app deploy app.yaml

アプリケーションの展開後、Web ブラウザで URL http://<project-id>.appspot.com を開いてアクセスできます。

アプリケーションの完全な URL は、http://_your-app-id_.appspot.com/ です。または、あなたのアプリの最上位ドメイン名を購入および使用するか、すでに登録済みのものを使用できます。

まとめ

このステップでは、単一の Python アプリケーションをセットアップし、App Engine でアプリケーションを実行および展開できました。

最初の App Engine Web アプリケーションを書き込む方法について学びました!

参考

ライセンス

本書は、Creative Commons Attribution 2.0 Generic License でライセンスされています。