Python FlaskアプリをHerokuにデプロイする方法!初心者向けにやさしく解説
生徒
「Flaskで作ったアプリって、どうやってネットに公開するんですか?」
先生
「FlaskアプリをHerokuというサービスにデプロイすると、インターネット上で誰でもアクセスできるようになりますよ。」
生徒
「デプロイってなんですか?Herokuって無料ですか?」
先生
「デプロイは、作ったアプリを公開すること。Herokuは初心者でも簡単に使えるクラウドサービスで、無料プランもあります。今回はその方法を一つ一つ説明していきますね。」
1. Heroku(ヘロク)とは?初心者でも安心のクラウドサービス
Heroku(ヘロク)は、作ったアプリをインターネット上に公開するためのクラウドサービスです。無料プランでも小さなアプリを公開できます。難しいサーバーの設定を自動でやってくれるので、プログラミング初心者にとっても心強いサービスです。
Herokuを使えば、自分のパソコンだけで動いていたFlaskアプリを、世界中の人に見てもらえるようになります。
2. FlaskアプリをHerokuにデプロイするために必要な準備
まずは最低限、以下のファイルやフォルダを準備しておきましょう。
app.py(Flaskアプリ本体)requirements.txt(必要なライブラリ一覧)Procfile(アプリの起動方法を書く)runtime.txt(Pythonのバージョンを指定)※任意wsgi.py(Heroku用に必要なファイル)
3. 仮想環境を使って必要なライブラリを管理しよう
仮想環境とは、プロジェクトごとにPythonの環境を分けて使える仕組みです。他のアプリと混ざらないようにするために使います。
python -m venv venv
source venv/bin/activate # Windowsの場合は venv\Scripts\activate
pip install flask gunicorn
pip freeze > requirements.txt
4. WSGIファイルを作成しよう
wsgi.pyというファイルを作り、FlaskアプリをHerokuで動かせる形にします。WSGIは、WebサーバーとFlaskアプリをつなぐ橋のような役割です。
from app import app
if __name__ == "__main__":
app.run()
5. Procfileとruntime.txtを作ろう
Procfileは、Herokuがアプリを起動するときに読むファイルです。ファイル名は「Procfile」(最初の文字は大文字)で、拡張子は付けません。
web: gunicorn wsgi:app
runtime.txtはPythonのバージョンを指定するファイルです。例:Python 3.11を使いたい場合
python-3.11.0
6. Herokuアカウントを作成してCLIをインストールしよう
Herokuにデプロイするには、まずアカウントを作成し、Heroku CLI(コマンドラインツール)をインストールします。
- Heroku公式サイトでアカウント作成
- Heroku CLIをインストール
- インストール後、以下のコマンドでログイン
heroku login
7. GitでアプリをHerokuにアップロードしよう
Herokuにアップロードするには、Gitというシステムを使います。Gitとは、ファイルの変更を記録してくれるツールです。
以下の手順でGitとHerokuを使ってアプリを公開します。
git init
git add .
git commit -m "initial commit"
heroku create
git push heroku master # 新しいHerokuでは main の場合もあり
8. アプリが公開されるURLを確認しよう
Herokuが自動でアプリのURLを発行してくれます。以下のコマンドで確認できます。
heroku open
このコマンドを実行すると、ブラウザが開き、あなたのFlaskアプリがインターネットに公開された状態で表示されます!
9. よくあるトラブルと解決法
Herokuへのデプロイでよくあるエラーとその対処法を紹介します。
- エラー:No module named 'flask' → Flaskをインストールして、
requirements.txtに入っているか確認しましょう。 - エラー:No Procfile detected → ファイル名が「
Procfile」で、拡張子(.txtなど)がついていないか確認してください。 - アプリが開かない →
wsgi.pyの内容やgunicornのスペルを間違えていないか確認しましょう。
10. Herokuの無料プランの注意点
Herokuの無料プランでは、アクセスがないと自動的にアプリが「スリープ」状態になります。しばらく使われていないアプリは、一度アクセスされるまで起動に時間がかかることがあります。
これは無料プランの制限なので、気にしなくても大丈夫です。再度アクセスすれば普通に使えるようになります。
11. Flaskアプリの内容を少しだけ変更して再アップロードするには?
アプリを少し編集したあと、もう一度Herokuにアップロードするには次のようにします。
git add .
git commit -m "update"
git push heroku master
12. FlaskアプリをHerokuで公開するメリット
- 初心者でも簡単に使える
- 無料でデプロイできる
- 難しい設定が不要
- 世界中からアクセス可能になる
PythonとFlaskの学習を始めたばかりの人でも、自分のアプリをインターネット上に公開できるのは、とても嬉しい体験です。
まとめ
Flaskで作成したPythonアプリケーションをHerokuにデプロイする流れを振り返ると、アプリをインターネット上に公開するために必要な手順がどれも密接に関わっていることがわかります。とくに、Herokuというクラウドサービスは初心者にも扱いやすく、サーバーの細かい設定を自分で行う必要がないため、学習の中でも非常に人気があります。デプロイ作業では、プロジェクト全体をクラウドへアップロードするために必要なファイルの準備や、正しくアプリを起動するための設定が欠かせません。requirements.txtやProcfileのように、シンプルでありながら大きな役割を持つファイルが複数あり、それぞれが適切に配置されることでアプリが正しく公開されます。
また、Flaskアプリの構造をHeroku用に整えるためにwsgi.pyが必要となる点や、仮想環境を利用して依存関係の混乱を防ぐ準備段階の大切さも学びました。さらに、Heroku CLIを使ってコマンドラインからログインし、Gitでアプリを管理しながらクラウドにアップロードする流れも重要です。この一連の操作を丁寧に理解することで、Flaskアプリ開発の基礎だけでなく、クラウドデプロイという実践的な工程を身につけることができます。
Herokuの無料プランにはスリープ機能の制約があるものの、小規模アプリの公開であれば十分実用的です。今回学んだ内容を繰り返し練習することで、プログラムを公開する楽しさを感じるだけでなく、より高度なアプリ開発にもつながります。以下に、学習内容をまとめたサンプル構成コードを掲載し、もう一度全体の流れを確認できるようにします。
Herokuデプロイに必要なファイルまとめコード
# app.py(Flaskアプリ本体)
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "Herokuデプロイ成功!"
if __name__ == "__main__":
app.run()
# Procfile(拡張子なし/Herokuがアプリを起動する方法)
web: gunicorn wsgi:app
# wsgi.py(HerokuでFlaskを読み込むためのファイル)
from app import app
if __name__ == "__main__":
app.run()
# requirements.txt(必要なライブラリ)
Flask
gunicorn
この基本構成を整えることで、FlaskアプリをHerokuへスムーズにデプロイできるようになります。アプリを公開して、多くの人に使ってもらえるようになると、プログラミング学習のモチベーションも大きく向上します。Herokuの仕組みを理解しておくと、今後別のクラウドサービスに挑戦する際にも応用が効き、ステップアップにつながるでしょう。
生徒:「デプロイって難しいイメージでしたが、今回の流れで少しずつ理解できました!Herokuに必要なファイルも意外とシンプルなんですね。」
先生:「そうなんです。Herokuは初心者でも扱いやすいように設計されていて、Flaskとの相性もとても良いですよ。大事なのは基本ファイルの内容を正しく書くことです。」
生徒:「Procfileの書き方は特に勉強になりました。最初に大文字のPを書くのを忘れそうでした!」
先生:「そこはよくつまずくポイントですね。ファイル名がそのまま動作に影響するので注意が必要です。」
生徒:「wsgi.pyも意味がわからなかったんですが、HerokuがFlaskアプリを読み込むための橋渡しなんですね。」
先生:「その理解で正しいですよ。HerokuではWSGIが標準的な仕組みなので、覚えておくと役に立ちます。」
生徒:「GitでHerokuにアップロードする流れも実践的で面白かったです。コードの管理にも役立ちますし。」
先生:「Gitは今後どんな開発でも使うので、今のうちから慣れておくと良いですよ。Herokuと組み合わせると、アプリを簡単に更新できるようになります。」
生徒:「Herokuの無料プランでスリープする仕組みも初めて知りました。最初は少し待つだけで使えるなら、気にせず学習できますね。」
先生:「そうですね。まずは小さく始めて、慣れてきたら大規模アプリに挑戦するといいでしょう。」
生徒:「今日の内容で、Flaskアプリの公開がぐっと身近に感じられました!」
先生:「その調子です。自分の作ったアプリを公開できるのはとても大きな経験になるので、ぜひ続けて学んでいきましょう。」