FlaskアプリをAzure App Serviceにデプロイする手順を完全解説!初心者向けクラウド公開ガイド
生徒
「PythonのFlaskで自分のホームページを作りました!これをMicrosoftのAzureというクラウドを使って、インターネットで見られるようにするにはどうすればいいですか?」
先生
「Azure App Serviceを使えば、サーバーの難しい管理をしなくても、あなたのアプリを世界中に公開することができます。配置、つまりデプロイという作業を一緒に行いましょう。」
生徒
「アジュール、アップサービス、デプロイ。初めて聞く言葉ばかりですが、パソコンに詳しくなくても大丈夫でしょうか?」
先生
「もちろんです。一つずつ手順を確認していけば、必ず公開までたどり着けます。まずは全体像からお話ししますね!」
1. FlaskとAzure App Serviceの基本を知ろう
プログラミングを始めたばかりの方にとって、自分の作ったものがインターネットで見られるようになるのは大きな感動です。今回使用するFlask(フラスク)は、PythonでWebサイトを構築するための非常にシンプルな道具です。
そしてAzure App Service(アジュール・アップ・サービス)とは、Microsoftが運営するクラウドサービスの一つです。クラウドとは、インターネット越しに高性能なコンピューターの力を借りる仕組みのことです。通常、自分のWebサイトを公開するにはサーバーという機械を自分で買って、24時間電気をつけっぱなしにする必要がありますが、Azureを使えばその面倒なことをすべてMicrosoftが代行してくれます。
ここで出てくる配置(はいち)やデプロイという言葉は、自分のパソコンで作ったプログラムを、Azureのコンピューターにコピーして動く状態にすることを指します。これからその具体的なステップを解説していきます。
2. 公開するためのFlaskプログラムを準備する
まずは、Azureに送り出すための基本のプログラムを書きましょう。自分のパソコンで「app.py」という名前のファイルを作り、以下のコードをコピーしてください。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_azure():
return "Azure App Serviceへようこそ!Flaskアプリが正常に動いています。"
if __name__ == "__main__":
app.run()
このプログラムは、サイトのトップページにアクセスしたときに「Azure App Serviceへようこそ!」という挨拶を表示するだけの簡単なものです。@app.route("/")という部分は、インターネットの住所であるURLの末尾が「/」のときに、この後の命令を実行するという約束事です。まずはこのシンプルな形で、無事に公開できるか試すのが成功の秘訣です。
3. クラウドに道具を伝えるrequirements.txtの作成
Azureのコンピューターは、あなたのパソコンと同じ状態ではありません。初期状態ではFlaskすら入っていないのです。そこで「このアプリを動かすには、これらの道具が必要です」という指示書を渡してあげる必要があります。これがrequirements.txt(リクワイアメンツ・ドット・テキスト)です。
メモ帳を開いて、以下の2行を書いて「requirements.txt」という名前で保存してください。場所は先ほどのapp.pyと同じフォルダです。
Flask
gunicorn
ここで登場したgunicorn(グニコーン)は、本番の厳しいインターネット環境で、Flaskを安定して動かしてくれる守衛さんのような役割を持つソフトウェアです。これを用意しておくことで、多くの人が一度にアクセスしてもアプリが壊れにくくなります。Azureはこのファイルを読み取って、自動的に必要なソフトを準備してくれます。
4. AzureアカウントとWebアプリの作成
次に、Azureの公式サイトにアクセスしてアカウントを作成しましょう。初めての方は無料枠という特典が使えることが多いので、それを利用するとお金をかけずに練習できます。ログインしたら「リソースの作成」から「Webアプリ」を選択します。
設定画面では以下の項目を選んでいきます。
1. サブスクリプション:お支払いプラン(無料枠があればそれを選択)
2. リソースグループ:引き出しの名前のようなもの。新しく作ってOKです。
3. 名前:あなたのサイトのURLになります。世界で一つだけの名前を付けましょう。
4. 公開:コードを選択します。
5. ランタイムスタック:Pythonの最新バージョンを選びます。
これで、インターネット上にあなたのアプリを置くための「空っぽの箱」が用意されました。今はまだ中身がないので、アクセスしてもエラーになりますが、準備は着実に進んでいます。
5. ローカルGitを使った転送の準備
プログラムをAzureに届けるための「運び屋」として、Git(ギット)という道具を使います。Gitは本来、プログラムの変更を記録するものですが、Azureにファイルを送る際にもよく使われます。
パソコンのコマンド画面(ターミナル)を開き、アプリのフォルダに移動して以下のコマンドを入力しましょう。これにより、そのフォルダがGitの管理下に入ります。
git init
git add .
git commit -m "Azureへのデプロイ準備完了"
これらのコマンドは、料理で言うと「食材(プログラム)を段ボールに詰め込んで、封をした」状態です。あとは、この段ボールをAzureという目的地に発送するだけです。パソコン初心者の人には少し難しく感じるかもしれませんが、順番に打ち込むだけで大丈夫ですよ。
6. Azure CLIを使ってコマンドで操作する
ブラウザの画面からポチポチ操作するのも良いですが、Azure CLI(アジュール・シーエルアイ)というツールを使うと、より確実に作業ができます。これは、文字を入力してAzureに直接命令を出すための道具です。
インストールしたら、以下のコマンドで自分のアカウントにログインします。ブラウザが開くので、自分のメールアドレスとパスワードを入れれば連携完了です。
az login
これで、あなたのパソコンとAzureの巨大なサーバーが一本の線でつながりました。これから出す命令は、すべてAzureのコンピューターに届くようになります。まるで遠隔操作をしているような感覚で、ワクワクしますね!
7. いよいよ本番!デプロイコマンドの実行
さあ、いよいよ最後の仕上げです。以下のコマンド一発で、あなたのFlaskアプリがAzureへと旅立ちます。--nameの後は、あなたがAzureの画面で決めた「Webアプリの名前」を入れてください。
az webapp up --sku F1 --name あなたのアプリ名
このコマンドを実行すると、Azure側で「Pythonをインストールする」「Flaskを準備する」「アプリを起動する」という作業が全自動で始まります。完了するまで数分かかることがありますが、ゆっくりコーヒーでも飲みながら待ちましょう。最後に「URL」が表示されたら、それがあなたのWebサイトの住所です!
8. テンプレートを使ったHTML画面の表示
無事に文字が表示されたら、次は見た目を整えたくなりますよね。FlaskではHTML(エイチティーエムエル)という、Webページの見た目を作る言語を組み込むことができます。プログラムを以下のように書き換えてみましょう。
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/profile")
def profile():
# 本来はテンプレートファイルを使いますが、今回は直接HTMLを返します
return "<h1 style='color:blue;'>私のプロフィールページ</h1><p>Azureで公開中!</p>"
if __name__ == "__main__":
app.run()
このように、Flaskを使えば文字の色を変えたり、大きな見出しを作ったりすることも自由自在です。プログラムを修正した後は、また先ほどのデプロイコマンドを実行すれば、最新の状態に上書きされます。どんどん修正して、あなただけの素敵なサイトに育てていきましょう。
9. トラブルが起きたときの確認方法
もしデプロイがうまくいかず、画面が真っ白になったりエラーメッセージが出たりしても、落ち込まないでください。プロでも一度で成功しないことはよくあります。そんなときは、Azureの管理画面にある「ログストリーム」という機能を見てみましょう。
そこには、Azureのコンピューターが「ここでつまずきました」という日記のようなメッセージを出してくれています。例えば「Flaskという名前が間違っています」とか「ファイルが足りません」といったヒントが見つかります。一つずつ問題を解決していくことが、プログラミング上達への一番の近道です。
また、Azureは非常にセキュリティが強固です。自分のサイトが守られている証拠ですので、自信を持って公開作業を進めてくださいね。一度デプロイの流れを覚えてしまえば、次はもっと複雑なアプリも簡単に公開できるようになりますよ!