カテゴリ: Flask 更新日: 2025/11/24

Python FlaskアプリをHerokuにデプロイする方法!初心者向けにやさしく解説

FlaskアプリをHerokuにデプロイする方法!初心者向けにやさしく解説
FlaskアプリをHerokuにデプロイする方法!初心者向けにやさしく解説

先生と生徒の会話形式で理解しよう

生徒

「Flaskで作ったアプリって、どうやってネットに公開するんですか?」

先生

「FlaskアプリをHerokuというサービスにデプロイすると、インターネット上で誰でもアクセスできるようになりますよ。」

生徒

「デプロイってなんですか?Herokuって無料ですか?」

先生

「デプロイは、作ったアプリを公開すること。Herokuは初心者でも簡単に使えるクラウドサービスで、無料プランもあります。今回はその方法を一つ一つ説明していきますね。」

1. Heroku(ヘロク)とは?初心者でも安心のクラウドサービス

1. Heroku(ヘロク)とは?初心者でも安心のクラウドサービス
1. Heroku(ヘロク)とは?初心者でも安心のクラウドサービス

Heroku(ヘロク)は、作ったアプリをインターネット上に公開するためのクラウドサービスです。無料プランでも小さなアプリを公開できます。難しいサーバーの設定を自動でやってくれるので、プログラミング初心者にとっても心強いサービスです。

Herokuを使えば、自分のパソコンだけで動いていたFlaskアプリを、世界中の人に見てもらえるようになります。

2. FlaskアプリをHerokuにデプロイするために必要な準備

2. FlaskアプリをHerokuにデプロイするために必要な準備
2. FlaskアプリをHerokuにデプロイするために必要な準備

まずは最低限、以下のファイルやフォルダを準備しておきましょう。

  • app.py(Flaskアプリ本体)
  • requirements.txt(必要なライブラリ一覧)
  • Procfile(アプリの起動方法を書く)
  • runtime.txt(Pythonのバージョンを指定)※任意
  • wsgi.py(Heroku用に必要なファイル)

3. 仮想環境を使って必要なライブラリを管理しよう

3. 仮想環境を使って必要なライブラリを管理しよう
3. 仮想環境を使って必要なライブラリを管理しよう

仮想環境とは、プロジェクトごとにPythonの環境を分けて使える仕組みです。他のアプリと混ざらないようにするために使います。


python -m venv venv
source venv/bin/activate  # Windowsの場合は venv\Scripts\activate
pip install flask gunicorn
pip freeze > requirements.txt

4. WSGIファイルを作成しよう

4. WSGIファイルを作成しよう
4. WSGIファイルを作成しよう

wsgi.pyというファイルを作り、FlaskアプリをHerokuで動かせる形にします。WSGIは、WebサーバーとFlaskアプリをつなぐ橋のような役割です。


from app import app

if __name__ == "__main__":
    app.run()

5. Procfileとruntime.txtを作ろう

5. Procfileとruntime.txtを作ろう
5. Procfileとruntime.txtを作ろう

Procfileは、Herokuがアプリを起動するときに読むファイルです。ファイル名は「Procfile」(最初の文字は大文字)で、拡張子は付けません。


web: gunicorn wsgi:app

runtime.txtはPythonのバージョンを指定するファイルです。例:Python 3.11を使いたい場合


python-3.11.0

6. Herokuアカウントを作成してCLIをインストールしよう

6. Herokuアカウントを作成してCLIをインストールしよう
6. Herokuアカウントを作成してCLIをインストールしよう

Herokuにデプロイするには、まずアカウントを作成し、Heroku CLI(コマンドラインツール)をインストールします。

  1. Heroku公式サイトでアカウント作成
  2. Heroku CLIをインストール
  3. インストール後、以下のコマンドでログイン

heroku login

7. GitでアプリをHerokuにアップロードしよう

7. GitでアプリをHerokuにアップロードしよう
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を確認しよう

8. アプリが公開されるURLを確認しよう
8. アプリが公開されるURLを確認しよう

Herokuが自動でアプリのURLを発行してくれます。以下のコマンドで確認できます。


heroku open

このコマンドを実行すると、ブラウザが開き、あなたのFlaskアプリがインターネットに公開された状態で表示されます!

9. よくあるトラブルと解決法

9. よくあるトラブルと解決法
9. よくあるトラブルと解決法

Herokuへのデプロイでよくあるエラーとその対処法を紹介します。

  • エラー:No module named 'flask' → Flaskをインストールして、requirements.txtに入っているか確認しましょう。
  • エラー:No Procfile detected → ファイル名が「Procfile」で、拡張子(.txtなど)がついていないか確認してください。
  • アプリが開かないwsgi.pyの内容やgunicornのスペルを間違えていないか確認しましょう。

10. Herokuの無料プランの注意点

10. Herokuの無料プランの注意点
10. Herokuの無料プランの注意点

Herokuの無料プランでは、アクセスがないと自動的にアプリが「スリープ」状態になります。しばらく使われていないアプリは、一度アクセスされるまで起動に時間がかかることがあります。

これは無料プランの制限なので、気にしなくても大丈夫です。再度アクセスすれば普通に使えるようになります。

11. Flaskアプリの内容を少しだけ変更して再アップロードするには?

11. Flaskアプリの内容を少しだけ変更して再アップロードするには?
11. Flaskアプリの内容を少しだけ変更して再アップロードするには?

アプリを少し編集したあと、もう一度Herokuにアップロードするには次のようにします。


git add .
git commit -m "update"
git push heroku master

12. FlaskアプリをHerokuで公開するメリット

12. FlaskアプリをHerokuで公開するメリット
12. FlaskアプリをHerokuで公開するメリット
  • 初心者でも簡単に使える
  • 無料でデプロイできる
  • 難しい設定が不要
  • 世界中からアクセス可能になる

PythonとFlaskの学習を始めたばかりの人でも、自分のアプリをインターネット上に公開できるのは、とても嬉しい体験です。

まとめ

まとめ
まとめ

Flaskで作成したPythonアプリケーションをHerokuにデプロイする流れを振り返ると、アプリをインターネット上に公開するために必要な手順がどれも密接に関わっていることがわかります。とくに、Herokuというクラウドサービスは初心者にも扱いやすく、サーバーの細かい設定を自分で行う必要がないため、学習の中でも非常に人気があります。デプロイ作業では、プロジェクト全体をクラウドへアップロードするために必要なファイルの準備や、正しくアプリを起動するための設定が欠かせません。requirements.txtProcfileのように、シンプルでありながら大きな役割を持つファイルが複数あり、それぞれが適切に配置されることでアプリが正しく公開されます。 また、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アプリの公開がぐっと身近に感じられました!」

先生:「その調子です。自分の作ったアプリを公開できるのはとても大きな経験になるので、ぜひ続けて学んでいきましょう。」

カテゴリの一覧へ
新着記事
New1
Flask
Flaskでデータベースエラーを処理する方法!初心者にもわかる例外の使い方
New2
Flask
FlaskでリダイレクトやURL生成を行う方法!便利な関数の使い方を解説
New3
Flask
FlaskでPOSTリクエストを受け取る方法!初心者でもわかるJSONデータの受け取り方
New4
Flask
Flask‑Mailの使い方!アプリからメールを送信する基本方法を解説
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Django
DjangoとFlaskの違いを完全比較!初心者でもわかるPythonフレームワーク入門
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.5
Java&Spring記事人気No5
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.6
Java&Spring記事人気No6
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.7
Java&Spring記事人気No7
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.8
Java&Spring記事人気No8
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説