数当てゲームHit and Blow。Web化したので、次はクラウドで動かしてみます。
Google App Engineで動かす
クラウドで動かすと言うと、「サーバを借りて、OSをセットアップして、必要なミドルウェアを入れて…」と考えてしまいます。「サーバを動かしたいんじゃない。アプリを動かしたいんだ!」と叫びたくなるところですが、そこは成長を続けるクラウドの世界。サーバを管理しなくてよいサーバレスというカテゴリのサービスがあります。
Google App Engineは、サーバレスに分類されるサービスの1つです。
Pythonの環境も用意されているので、それを使ってみます。手軽に動かしたいので、スタンダード環境のPythonにします。
サポートされているPythonの最新バージョンは3.10ですね。
App Engineを触ったことがないようであれば、チュートリアルをやっておいたほうがいいでしょう。
ウェブサービスをデプロイするまでやれば、Google App Engineを設定して使えるようになります。
devcontainer.jsonの変更
Web化する時に、手を入れています。
Pythonは3.10にして、Google Cloudを操作するためのコマンドをfeaturesで追加しています。認証情報はコンテナの外に置くようにするため、"mounts"
を設定しています。Windowsの場合、ここのPathを変更する必要があるかもしれません。
Flaskをインストールするのが、これ。
App Engineでは、requirements.txtに書いたパッケージをインストールしてくれます。ですので、パッケージ管理にpipを使います。postCreateCommandを使って、コンテナを作る際にパッケージをインストールしてしまいます。requirements.txtはこちら。
App Engineの設定
設定ファイルはこちら。
default値で良いものは書く必要がないので、シンプルです。
serviceは、App Engineで動かすプログラムを区別するために必要です。
runtimeは、Python 3.10を使うために記述します。
handlers以下はおまじないということでよいでしょう。
起動するためのentrypointを書いていませんが、defaultの設定が使われるように作ったからです。
デプロイしないファイルの設定。デプロイ時間を短縮するために必要です。今回は小さなプログラムですので気にならないですが、requirements.txtに書いたパッケージをインストールする際に生成される中間ファイルなど、デプロイに不要なファイルを書きます。.gitignoreのgcloudコマンド版ですね。
11行目は、.gitignore の内容を取り込む命令として扱われます。
App Engineにデプロイ
デプロイします。チュートリアルをやっていれば、必要な設定は終わっているはずです。
gcloudコマンドの設定情報は共有するようにしてあるので、Visual Studio Codeのターミナルからデプロイしましょう。

gcloud app deploy
と入力します。しばらくすれば終わるので、Google Cloudの管理画面から見てみます。
App Engineのサービスを選ぶと、デプロイしたアプリケーションがリスト表示されます。

hit-and-blowをクリックすると、デプロイしたhit-and-blowで遊べます。
App Engineを止める
App Engineにデプロイしたアプリケーションは、アクセスがあった時に動き出して、アクセスがなくなってしばらくしたら止まります。動いている時だけ課金されますが、誰でもアクセスできてしまうので、知らない間に動きっぱなしになっていることもあり得ます。
ですので、一通り遊んだら、動き出さないように止めてしまいましょう。
App Engineの設定を選んで、[アプリケーションを無効にする] をクリックします。

残念ながら、hit-and-blowだけを止めるということはできません。デプロイしたアプリケーションすべてが止まってしまいます。注意しましょう。