Flask

Flask本番環境デプロイ: Heroku・Render・PythonAnywhereによる無料手順

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

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


スポンサードリンク

はじめに:Flaskアプリの本番環境デプロイとは?

Flaskを用いて作成したWebアプリを本番環境へ公開することで、実際にユーザーが利用できる状態にすることが可能です。個人開発者や小規模事業者の多くは、「無料で手軽に公開したい」というニーズを持っています。この記事では、HerokuやRenderなどのクラウドサービスを活用し、WSGIサーバー構築やGitリポジトリとの連携といった具体的なステップを5分程度で実行できる方法を解説します。無料プランでも制限に対応する工夫を取り入れることで、初心者でも安心してデプロイが可能です。


Herokuへのデプロイ手順(Procfile設定含む)

Herokuは無料アカウントで利用でき、Pythonアプリケーションの公開に最適なクラウドサービスです。Procfileというファイルを作成することで、Flaskアプリを自動起動させることができます。

アプリケーションの準備

  1. Herokuアカウントを登録
    https://signup.heroku.com にアクセスし、アカウントを作成します。

  2. プロジェクトディレクトリ作成
    Flaskアプリが動作する環境で、以下のようなファイル構成にしてください:
    plaintext
    my_flask_app/
    ├── app.py
    ├── requirements.txt
    └── Procfile

  3. requirements.txtを作成
    pip freeze > requirements.txt で依存関係を記録します。


Procfileの作成と内容

ProcfileはHerokuが実行するコマンドを指定するファイルです。以下の内容をProcfileに記述してください:

  • web はエントリポイント(この場合はWebサーバー)
  • gunicorn はWSGIサーバー(後述します)
  • app:app はFlaskアプリケーションのモジュールとインスタンス名

ファイル名は「Procfile」で、拡張子がありません。Herokuは自動で読み込みます。

各クラウドサービスでのProcfile/起動コマンドの差異

サービス 起動方法 必要なファイル 特記事項
Heroku web: gunicorn app:app Procfile Heroku独自の起動コマンド指定必須
Render CMD: gunicorn -b 0.0.0.0:$PORT app:app Dockerfile or Render dashboardで設定可能 $PORT変数を使用する必要あり
PythonAnywhere Webコンソールから「gunicorn --bind 0.0.0.0:$PORT app:app」指定 必要無し(UI経由) 無料プランは$PORTのみ利用可能

各サービスの起動方法やファイル形式に違いがあるため、適切な設定が必要です。


Herokuへのプッシュ操作

  1. Heroku CLIをインストール
    https://devcenter.heroku.com/articles/heroku-cli からCLIをダウンロードし、heroku loginでログインします。

  2. リモートリポジトリを作成
    bash
    heroku create my-flask-app

  3. Gitプッシュして公開
    bash
    git push heroku main

  4. アプリケーションURLを確認
    heroku open を実行するとブラウザで開けます。


RenderとPythonAnywhereの活用法

Heroku以外にも、無料でFlaskアプリを公開できるクラウドサービスがあります。それぞれの特徴や設定手順を比較しながら紹介します。

Renderでのプロジェクト作成手順

RenderはHerokuに類似したサービスで、Dockerサポートが充実しています。以下が主な手順です:

  1. アカウント登録
    https://render.com にアクセスし、無料アカウントを作成します。

  2. プロジェクトを作成

  3. プロジェクト名を入力 → 「Web Service」を選択 → GitHubリポジトリを連携(またはローカルで作業)

  4. 環境変数設定
    RenderのUIから「Variables」セクションにFLASK_ENV=productionなどの設定を行います。

  5. 自動デプロイ設定
    GitHubと連携している場合、Push時に自動的に公開されます。


PythonAnywhereのウェブアプリ設定

PythonAnywhereは、Web開発に特化したクラウドサービスで、簡単な設定でFlaskアプリを公開可能です。

  1. アカウント作成とログイン
    https://www.pythonanywhere.com から無料アカウントを作成し、ログインします。

  2. Pythonスクリプト設定

  3. ファイルをアップロード → 「Web」タブで「Add a new web app」を選択
  4. パッケージのインストール(例:pip install flask gunicorn

  5. 起動コマンドの指定
    gunicorn --bind 0.0.0.0:$PORT app:app

$PORTはPythonAnywhereから自動で割り当てられるポート番号です。無料プランでは1つのポートのみ利用可能であり、複数ポートを動的に指定することができません。


WSGIサーバーの導入と設定(gunicornなど)

Flaskアプリを本番環境で動かすには、WSGIサーバー(例:gunicorn)が必要です。ローカルでも動作確認が可能です。

gunicornの導入と起動

  1. インストール
    bash
    pip install gunicorn

  2. 起動コマンド
    ローカル環境でアプリをテストするには以下を実行:
    bash
    gunicorn app:app

  3. ポート指定の例
    特定のポートを使用したい場合(例:8080):
    bash
    gunicorn -b 127.0.0.1:8080 app:app


WSGIサーバーの役割と使い方

WSGIサーバーは、FlaskアプリとHTTP通信を仲介する役割を持ちます。HerokuやRenderでは自動的にgunicornが利用されるため、特に設定は必要ありません。ただし、ローカルでデバッグを行う際には、--reloadオプションで再起動を自動化できます:


Gitリポジトリとの連携方法

Flaskアプリのバージョン管理やクラウドへの公開にGitを使うことで、効率的な開発が可能です。

GitHubへの初期設定

  1. GitHubアカウント作成
    https://github.com から無料アカウントを作成します。

  2. リポジトリを作成

  3. 「New repository」をクリック → リポジトリ名(例:my-flask-app)で作成

  4. ローカルプロジェクトにGitを適用
    bash
    git init
    git add .
    git commit -m "Initial commit"

  5. リモートリポジトリを設定
    bash
    git remote add origin https://github.com/ユーザー名/my-flask-app.git


バージョン管理とデプロイの関係

Gitはバージョン管理だけでなく、HerokuやRenderといったクラウドサービスとの連携にも不可欠です。以下が主な流れ:

  • ローカルで修正 → git add, commit で変更を保存
  • git push heroku maingit push render main などでクラウドに反映

注意:HerokuやRenderでは、mainmasterなどのブランチが対象になる場合が多いです。GitHubのデフォルトは「main」ですが、一部サービスでは「master」が依然として利用されるケースがあります(例:Render)。各クラウドサービスのドキュメントで確認してください。


無料プランの制限対策

無料プランは制限が多く、パフォーマンスやリソースに影響が出ることがあります。各サービスでの制限とその対処法を整理します。

各サービスにおけるリソース制限

サービス CPU使用量 メモリ(RAM) DB容量 その他制限
Heroku(Free) 100ms 512MB 無料DBなし 起動時間の制限
Render(Free) CPU使用制限なし 384MB RAM 2GB マイクロサービス非対応
PythonAnywhere 無料枠は100MB 512MB 無料DBなし 動作時間の制限

Render Free Planでは、CPU使用量に制限がないが、メモリは384MBに固定です。Heroku Free Planは起動回数や実行時間が制限される点に注意。


パフォーマンス改善のヒント

  • 軽量なライブラリを使う
    Flaskに必要な機能のみをインストールし、不要なパッケージは排除。例:pip freeze > requirements.txtで依存関係を精査します。

  • キャッシュを活用する
    データベースクエリや静的コンテンツの読み込み時間を減らすことで、パフォーマンス向上が見込めます。

  • 無料DBは避ける(場合によっては)
    HerokuではPostgreSQLの無料プランが利用可能ですが、データ容量に制限があります。代替として、SQLiteやMongoDBなどローカルで管理可能なツールを検討します。


まとめ:あなたのFlaskアプリを本番へ公開しよう

  • HerokuへのデプロイではProcfileとGitプッシュがカギです
  • RenderやPythonAnywhereも無料で利用でき、手軽に公開可能です
  • WSGIサーバー(gunicorn)の構築は本番環境での必須知識です
  • Gitとの連携でバージョン管理とデプロイがスムーズに行えます
  • 無料プランの制限を理解し、パフォーマンス改善を図ることが大切です

今回の手順に従って、自身のFlaskアプリを本番環境へ公開してみてください。初期段階では制限があるかもしれませんが、将来的に有料プランへ移行する際の基礎が身につきます。


スポンサードリンク

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


-Flask