Flask

FlaskアプリをHerokuに5分でデプロイする方法

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

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)、仮想環境を作成することで、依存ライブラリの管理やエラーの特定が容易になります。

  1. 仮想環境作成(venv使用例)
    bash
    python -m venv venv

    注意venvはPython3標準で利用可能。Python2を使用している場合は、virtualenvをインストールして使用してください。

  2. 仮想環境の有効化(OSごとの手順)

  3. Windows: venv\Scripts\activate
  4. macOS/Linux: source venv/bin/activate

  5. 依存ライブラリのインストール
    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:app

    webはプロセスタイプ。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プロジェクトをリポジトリ化し、変更内容を反映するための基本コマンドを確認しましょう。

  1. リポジトリ初期化
    bash
    git init

  2. ファイル追加とコミット
    bash
    git add .
    git commit -m "Initial commit"

  3. Herokuリモートへの接続
    bash
    heroku create your-app-name

  4. 変更内容をPush(デプロイ)
    bash
    git push heroku main

    注意点mainはHerokuのデフォルトブランチではありません。プロジェクトで使用しているブランチ名(例: master, dev)に合わせて変更してください。


Heroku CLIによるデプロイ手順

無料プランでも自動スケーリング機能が動作し、5分程度でアプリ起動から公開まで完了します。以下の手順を確認してください。

  1. アカウント作成とリモート接続
    bash
    heroku create your-app-name

  2. Git Push(デプロイ)
    bash
    git push heroku main

  3. アプリ起動確認

  4. Heroku CLIでURLを表示: heroku open
  5. または、HerokuダッシュボードからアプリケーションURLを取得

自動スケーリングの仕組み:無料プランでは1つのDino(ウェブプロセス)がデフォルトで起動され、トラフィックに応じて一時的に複数起動することもあります。ただし、使用量に応じた課金リスクがありますので注意が必要です。


無料プランの制限と回避策

Heroku無料プランにはいくつかの制約がありますが、適切な設定で効率的に利用可能です。

  • 主な制限
    | 項目 | 詳細 |
    |--------------|---------------------------------|
    | ディノ時間 | 最大1000時間/月(無料) |
    | 同時接続数 | 200接続まで |
    | サービス | PostgreSQLなど一部が利用不可 |

  • 回避策

  • 休眠設定: heroku sleepコマンドでアプリを休止させ、不要な時間を削減
    > 例: heroku sleep -a your-app-name

  • ワンオフ・ディノ使用: 短期間での処理実行にheroku run bashheroku 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の導入から手順通りに進めましょう

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Flask