はじめに
ここでは、なるべく誰でも簡単にわかるようにGCPでFlaskで作ったWEBアプリのデプロイ方法について解説していきます。
今回デプロイしたアプリはこちらになります。mediapipeを活用して、カメラからユーザーの出したじゃんけんの手を判定する技術を使って、限られた時間内でコンピュータの指示にどれだけ正確に従えるかを競うゲームとなっています。良ければ遊んでみてください。 またこのゲームの作成についても記事を書く予定です。
1. GCPにログインして新規プロジェクトを作成
まずは、ご自身のGCPにログインしてください。(アカウントが無ければ、作成してください)
左上のナビゲーションメニュー(≡)を開き、「プロジェクトの選択」→「新しいプロジェクト」をクリックします。
App Engine APIの有効化
プロジェクトが作成されたら、検索バーで「App Engine」を検索して、「App Engine」→「App Engine APIを有効にする」をクリックします。
リージョンは一度設定すると変更できないので、選択に注意してください。
補足:リージョン選択時の注意点
リージョンは、アプリケーションがデプロイされる物理的な場所を指します。選択したリージョンは一度設定すると変更できないため、慎重に選ぶ必要があります。ユーザーが主にどこからアクセスするかを考慮して選びます。日本を拠点にしている場合は、アジア地域(asia-northeast1)を選択すると東京になるので、迷えば東京を選択するといいでしょう。
AppのEngineのダッシュボードにて、リソースのLanguageがPythonで 標準となっていることを確認します。
Google Cloud Consoleで、左側のメニューから「IAMと管理」→「IAM」を選択し、サービスアカウントを確認します。
次に、権限の追加を行います。ご自身のサービスアカウントに対してストレージ管理者を追加します。
Flaskアプリの準備
Flaskアプリのファイルを準備します。一般的には、以下のような構造です。
my-flask-app/
├── app.yaml
├── app.py
├── requirements.txt
ここで、app.yamlには、以下のようにセットアップしましょう。
runtime: python312
entrypoint: gunicorn -b :$PORT app:app
また、requirements.txtには、必要なライブラリと、gunicornを追加してください。
※バージョンは例です。 最新のものを調べてください。
Flask==3.0.3
gunicorn==23.0.0
Google Cloud SDKのセットアップ
ここに関しては、以下のような記事を参考にしてみてください。
公式
Google Cloud SDKインストール後のセットアップ
SDKのインストールが完了したら、ターミナルまたはコマンドプロンプトで次のコマンドを実行し、GCPアカウントでログインします。
gcloud auth login
実行時にgcloud : このシステムではスクリプトの実行が無効になっているためなどとエラーがでる場合は、以下のコマンドを実行して、実行ポリシーを一時的に変更します。
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
次のコマンドで作成したプロジェクトIDを使って、デフォルトプロジェクトを設定します。
gcloud config set project YOUR_PROJECT_ID
※YOUR_PROJECT_IDはあなたのプロジェクトIDに変えてください。
App Engineへのデプロイ
準備が整ったので、いよいよデプロイします。
あなたのプロジェクトがあるフォルダまで、コマンドで移動して以下を実行してください。
途中で、進めるか聞かれた時は、Y などを教えて進んでください。
gcloud app deploy
これで、デプロイが完了します。もし、エラーなどがでていいる場合は、以下のコマンドで、アプリケーションのログをリアルタイムで確認できます。
gcloud app logs tail -s default
終わりに
GCPを使ってFlaskアプリをデプロイするのは、初めての方にとっては少し難しく感じるかもしれません。(僕もそうでした。)しかし、この記事で説明した手順に従えば、誰でも簡単に自分の作成したWebアプリを公開することができます。GCPの豊富な無料枠を利用しながら、さまざまなプロジェクトに挑戦してみてください。また、デプロイが成功した後は、アプリのパフォーマンスを監視したり、スケーリングの設定を調整したりすることで、より本格的なWebアプリケーション開発のスキルを身につけることができると思います。
最後に、デプロイや設定で問題が発生した場合は、GCPの公式ドキュメントやサポートを活用してみてください。また、新たな技術に挑戦しながら楽しんで学んでいきましょう。