Contents
Herokuアカウント作成とCLIインストール
HerokuでFlaskアプリを公開するには、まず無料アカウントの登録が必須です。公式サイトからメールアドレスとパスワードを入力し、認証コードを受信して完了させましょう。その後、Heroku CLI(コマンドラインインターフェース)をインストールします。WindowsではChocolateyやWSL2、macOS/LinuxではHomebrewなどを活用可能です。無料プラン利用時は、「学生割引」など選択肢が表示される場合もありますが、基本は標準の無料アカウントで十分です。
- Heroku CLIインストール手順(OS別)
| OS | インストール方法 |
|---------|----------------------------------------------------------------------------------|
| Windows | Heroku CLI for Windows をダウンロード・実行 |
| macOS |brew install herokuをターミナルで実行 |
| Linux | Ubuntuの場合、sudo apt-get install herokuでインストール可能 |
インストール後は、heroku --versionを実行して確認してください。
Python環境の準備と仮想環境構築
Herokuではプロジェクトごとの依存関係を明確に管理する必要があります。ローカルでPythonが動作しているか確認し(python --version)、仮想環境を作成することで、依存ライブラリの管理やエラーの特定が容易になります。
-
仮想環境作成(venv使用例)
bash
python -m venv venv注意:
venvはPython3標準で利用可能。Python2を使用している場合は、virtualenvをインストールして使用してください。 -
仮想環境の有効化(OSごとの手順)
- Windows:
venv\Scripts\activate -
macOS/Linux:
source venv/bin/activate -
依存ライブラリのインストール
bash
pip install flask gunicorn重要ポイント:
requirements.txtにライブラリを記録し、Herokuデプロイ時に自動で読み込みます。pip freeze > requirements.txtで作成可能です。
必須ファイルの作成(Procfileとruntime.txt)
Herokuではアプリ起動方法を定義する2つのファイルが必要です。Procfileは実行コマンドを指定し、runtime.txtでは使用するPythonバージョンを記載します。
-
Procfileの例(Flaskアプリ用)
web: gunicorn app:appwebはプロセスタイプ。gunicornはWSGIサーバーで、app:appはFlaskアプリケーションのモジュールと変数名です。 -
runtime.txtの例(Pythonバージョン指定)
python-3.10.x注意:具体的なバージョン(例:python-3.10.6)はHerokuのサポート状況に依存するため、汎用的な
xを含む表記が推奨されます。
ファイル配置のポイント:Procfileとruntime.txtはプロジェクトルートに配置し、拡張子無しで作成してください。
Gitリポジトリへの反映手順
HerokuデプロイにはGitを使用します。ローカルのFlaskプロジェクトをリポジトリ化し、変更内容を反映するための基本コマンドを確認しましょう。
-
リポジトリ初期化
bash
git init -
ファイル追加とコミット
bash
git add .
git commit -m "Initial commit" -
Herokuリモートへの接続
bash
heroku create your-app-name -
変更内容をPush(デプロイ)
bash
git push heroku main注意点:
mainはHerokuのデフォルトブランチではありません。プロジェクトで使用しているブランチ名(例:master,dev)に合わせて変更してください。
Heroku CLIによるデプロイ手順
無料プランでも自動スケーリング機能が動作し、5分程度でアプリ起動から公開まで完了します。以下の手順を確認してください。
-
アカウント作成とリモート接続
bash
heroku create your-app-name -
Git Push(デプロイ)
bash
git push heroku main -
アプリ起動確認
- Heroku CLIでURLを表示:
heroku open - または、HerokuダッシュボードからアプリケーションURLを取得
自動スケーリングの仕組み:無料プランでは1つのDino(ウェブプロセス)がデフォルトで起動され、トラフィックに応じて一時的に複数起動することもあります。ただし、使用量に応じた課金リスクがありますので注意が必要です。
無料プランの制限と回避策
Heroku無料プランにはいくつかの制約がありますが、適切な設定で効率的に利用可能です。
-
主な制限
| 項目 | 詳細 |
|--------------|---------------------------------|
| ディノ時間 | 最大1000時間/月(無料) |
| 同時接続数 | 200接続まで |
| サービス | PostgreSQLなど一部が利用不可 | -
回避策
-
休眠設定:
heroku sleepコマンドでアプリを休止させ、不要な時間を削減
> 例:heroku sleep -a your-app-name -
ワンオフ・ディノ使用: 短期間での処理実行に
heroku run bashやheroku run python script.pyを使用
> 例:heroku run pip install flask -a your-app-name -
外部サービス連携: Free tier対応の外部API(例:Twilio、Mailgun)と組み合わせて機能拡張
補足:無料プランでも、アプリ起動時に一時的に課金されるリスクがあります。長期的な運用を検討する場合は、有料プランに移行することも検討してください(記事では誘導しません)。
まとめ
- Herokuアカウントを作成しCLIをインストール
- Python環境を確認し仮想環境で依存関係を管理
- Procfileとruntime.txtを作成し、アプリの起動設定を定義
- Gitリポジトリに変更内容を反映し、Heroku CLIでデプロイ
- 無料プランの制限に対応するため、休眠やワンオフ・ディノを活用
Flaskアプリを5分で公開したい場合は、無料アカウントとCLIの導入から手順通りに進めましょう。