Contents
Herokuアカウント作成とCLI導入
Herokuへのデプロイは、まずアカウント作成から始まります。公式サイトで無料登録後、メール確認を完了してください。その後、Heroku CLI(コマンドラインインターフェース)のインストールが必要です。
なぜCLIが必要なのか?
CLIはローカル環境からHerokuに直接接続し、アプリケーションをデプロイしたり、ログを確認したりするためのツールです。特に無料プランでも利用可能で、手軽さが特徴です。
インストール手順(OSごと)
以下は主要なOSでのインストール手順です。
Windowsの場合
- Heroku CLI公式サイトからWindows用バージョンをダウンロード
.exeファイルをダブルクリックしてインストール- コマンドプロンプトで
heroku --versionを実行して確認
macOSの場合
- Heroku CLI公式サイトからmacOS用バージョンをダウンロード
.pkgファイルをダブルクリックし、インストーラーを実行- Terminalで
heroku --versionを実行して確認
Linux(Ubuntuなど)の場合
- Heroku CLI公式サイトからLinux用バージョンをダウンロード
- ダウンロードした
.tar.gzファイルを解凍し、bin/フォルダにパスを通す - Terminalで
heroku --versionを実行して確認
注意:無料プランでは、1日あたり5時間のDyno使用時間が制限されます。本格的な運用には有料プラン検討が必須です。
Flaskアプリ構成の基本設定
FlaskアプリをHerokuで動作させるには、特定のファイル構成とディレクトリ構造が必要です。以下は最小限の準備手順です。
必要なファイル・フォルダ一覧
| 項目 | 内容 | 補足 |
|---|---|---|
| app.py | メインのFlaskアプリ | 例: from flask import Flaskで起動 |
| Procfile | Herokuが実行するコマンド | 例: web: python app.py |
| requirements.txt | インストールが必要なライブラリ | pip freeze > requirements.txtで生成 |
ポイント:Herokuは
app.pyをデフォルトで実行するため、ファイル名やディレクトリ構造の設定ミスがよくあります。
Procfile作成手順
Procfileは、Herokuに「このアプリケーションをどうやって実行するか」を伝えるための設定ファイルです。
基本的な書き方
Procfileは以下のように記述します。
|
1 2 |
web: python app.py |
エラー回避策:コマンドが間違っていると、
Error R10 (Boot timeout)などの起動失敗が発生します。必ずアプリケーションの実行方法を確認してください。また、複数プロセスを記述する場合(例:worker: python worker.py)は用途に応じて分離しましょう。
runtime.txt作成手順
runtime.txtは使用するPythonバージョンを指定します。
重要性と書き方
Herokuではruntime.txtの指定がない場合、最新版が自動で選択されます。しかし、パッケージとの互換性を保つために明示的に指定することが推奨されます。
|
1 2 |
python-3.10.6 |
注意:例として
python-3.9.7やpython-3.10.6が挙げられますが、最新のPythonバージョンはHeroku公式リファレンスで確認してください。また、requirements.txtに記載されたパッケージと合わせて選択することが重要です(例: Flask 2.0.xがPython 3.9以上を必要とする場合)。
Gitによるリモートリポジトリ連携
Herokuへのデプロイは、Git経由でコードを送信します。以下の手順でローカル環境とHerokuのリポジトリを連携させましょう。
必要な操作ステップ
- ローカルリポジトリ初期化:
git init - Herokuリモートアカウント登録:
heroku git:remote -a [アプリ名] - コミット:
git add . && git commit -m "初期コミット" - プッシュ:
git push heroku main
トラブルシューティング:プッシュ中にエラーが出る場合、
heroku logs --tailでリアルタイムログを確認し、原因を探してください。また、ローカルの変更が反映されていない場合、git statusで差分を確認しましょう。
デプロイ後のアクセス確認方法
アプリケーションが正常にデプロイされたかは、以下の手順で確認します。
アクセスURLの取得
heroku openコマンドを実行すると、ブラウザで自動開く- Heroku Dashboardから「Apps」ページでURLも確認可能
エラー時の基本対処法
| エラーコード | 対応方法 |
|---|---|
503 Service Unavailable |
Dynoが起動していない場合、heroku ps:restartで再起動 |
Error R10 |
Procfileのコマンドが間違っている可能性あり |
チェックポイント:
heroku logs --tailで実時間のログを確認し、エラー内容を分析しましょう。また、アプリケーションのリソース使用量(メモリ/時間)をheroku psで確認してください。
依存ライブラリ管理(requirements.txt)
Herokuではrequirements.txtに記載されたパッケージを自動インストールしますが、以下のような注意点があります。
生成手順とバージョン指定の重要性
- ローカル環境で
pip freeze > requirements.txt実行 - 必要なライブラリのみ絞り込む(例:
flask==2.0.1,gunicorn>=20.0.4)
注意:バージョン指定がないと、HerokuのPythonバージョンやパッケージとの不一致が生じる可能性があります。例えば、Flask 2.0.xはPython 3.8以上が必要な場合があり、
requirements.txtにflask==2.0.1を明記することで互換性を保つことができます。
無料プランの制限事項と回避策
Heroku無料プランには以下のような制限があります。運用前に確認しましょう。
制限内容と対応策
| 項目 | 内容 | 対応策 |
|---|---|---|
| Dyno時間 | 1日5時間まで | 有料プランへの移行を検討 |
| メモリ | 512MB上限 | 複数のアプリを分割する |
| DB | 無料のPostgreSQL不可 | Heroku Postgres add-onを導入 |
判断基準:無料プランでは小規模なテスト用途に限るが、本格運用には有料プラン検討が必須です。
まとめと補足情報
FlaskアプリをHerokuにデプロイする際の重要な手順とポイントを以下にまとめます:
必須チェックリスト
- Herokuアカウント作成とCLI導入は初期準備として必須
- Procfile・runtime.txtの作成がスムーズな起動を実現
- Git経由でのリモートリポジトリ連携でデプロイを効率化
- 無料プランの制限に注意し、運用用途に応じた対策を講じる
表: Heroku無料プランの主な制限と回避策
| 制限項目 | 内容 | 対応策 |
|---|---|---|
| Dyno時間 | 1日5時間まで | 軽量タスクに限定(例: cronジョブ) |
| メモリ | 512MB上限 | アプリを複数分割して運用 |
| DB | 無料のPostgreSQL不可 | Heroku Postgres add-on導入またはローカルDB使用 |
追加情報: デプロイ後のログ確認は
heroku logs --tail、Dyno状態確認はheroku psで可能です。技術的詳細についてはHeroku公式ドキュメントを参考にしてください。
頻出エラーの補足説明
Error R10 (Boot timeout)
- 原因: Procfileに記載されたコマンドがアプリケーション起動に失敗している。
- 対応策:
web: python app.pyを実行してローカルで確認し、Herokuの環境と一致させる。
- 原因: Dyno停止またはリソース不足(無料プランの場合)。
- 対応策:
heroku ps:restartで再起動し、負荷が少ない時間帯にアクセスする。
注意: Herokuの動作環境は常に最新情報に従って更新されるため、技術的記述については公式ドキュメントを主な参照源とすることを推奨します。