カテゴリ: Flask 更新日: 2025/12/17

Flaskアプリでconfig.pyを活用する方法!初心者でもわかる設定管理と切り替えテクニック

Flaskアプリでconfig.pyを活用する方法!設定の管理と切り替えテクニック
Flaskアプリでconfig.pyを活用する方法!設定の管理と切り替えテクニック

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

生徒

「Flaskでアプリを作っているんですが、設定ファイルってどうやって管理するんですか?」

先生

「Flaskではconfig.pyという設定専用のファイルを使うと便利です。これを使うと、本番用や開発用の設定を簡単に切り替えられます。」

生徒

「えっ?開発用と本番用ってそんなに違うんですか?」

先生

「そうですね。例えば開発中はデバッグ機能をオンにしますが、本番環境ではセキュリティのためオフにする必要があります。今から初心者でもわかる方法で解説しますよ!」

1. Flaskとconfig.pyとは?

1. Flaskとconfig.pyとは?
1. Flaskとconfig.pyとは?

まず、Flask(フラスク)とはPythonで動作する軽量なWebアプリケーションフレームワークです。フレームワークとは、WebサイトやWebサービスを効率よく作るための道具や仕組みのことです。Flaskを使うと、少ないコードで動くWebアプリが簡単に作れます。

次にconfig.pyですが、これはFlaskアプリの設定をまとめて管理するファイルです。例えば、アプリのデバッグモードのオン・オフ、データベースの接続先、秘密のキーなどをここに書きます。設定をひとつのファイルにまとめることで、管理が楽になり、環境ごとの切り替えも簡単になります。

2. config.pyを作ってみよう

2. config.pyを作ってみよう
2. config.pyを作ってみよう

まずはconfig.pyというファイルを作ります。ここに開発用と本番用の設定を書きます。実際の例を見てみましょう。


class Config:
    DEBUG = False
    SECRET_KEY = "これは秘密のキーです"

class DevelopmentConfig(Config):
    DEBUG = True

class ProductionConfig(Config):
    DEBUG = False

ここでのポイントは3つです。

  • Configクラスに共通の設定を書きます。
  • DevelopmentConfigは開発用。デバッグをオンにしています。
  • ProductionConfigは本番用。デバッグはオフです。

クラス(Class)とは、設定をひとまとめにするための箱のようなものです。

3. Flaskアプリでconfig.pyを読み込む方法

3. Flaskアプリでconfig.pyを読み込む方法
3. Flaskアプリでconfig.pyを読み込む方法

次に、Flaskアプリのメインファイル(例:app.py)で、この設定を読み込んでみます。


from flask import Flask
from config import DevelopmentConfig

app = Flask(__name__)
app.config.from_object(DevelopmentConfig)

@app.route("/")
def index():
    return "こんにちは!これは開発用設定です。"

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

from_objectメソッドを使うことで、config.pyで作った設定を簡単に読み込めます。ここでは開発用の設定を読み込んでいるので、デバッグモードがオンになります。

4. 環境変数で切り替える方法

4. 環境変数で切り替える方法
4. 環境変数で切り替える方法

でも、いちいちDevelopmentConfigProductionConfigを手で切り替えるのは面倒ですよね。そこで役立つのが環境変数(かんきょうへんすう)です。これは、コンピュータが持っている外部の情報で、アプリが起動する時に設定を読み込めます。

例えば、こんなコードで環境に応じて自動的に設定を切り替えられます。


import os
from flask import Flask
from config import DevelopmentConfig, ProductionConfig

app = Flask(__name__)

config_type = os.getenv("FLASK_CONFIG", "development")

if config_type == "production":
    app.config.from_object(ProductionConfig)
else:
    app.config.from_object(DevelopmentConfig)

@app.route("/")
def index():
    return f"現在の設定: {config_type}"

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

ここではos.getenvを使ってFLASK_CONFIGという環境変数を取得しています。もし何も指定しなければdevelopmentをデフォルトで使います。

5. 実際に環境変数を設定してみよう

5. 実際に環境変数を設定してみよう
5. 実際に環境変数を設定してみよう

WindowsとMac/Linuxではコマンドが少し違います。

Windowsの場合:


set FLASK_CONFIG=production
python app.py

Mac/Linuxの場合:


export FLASK_CONFIG=production
python app.py

これで本番用の設定が自動的に読み込まれます。

6. よくある質問とエラー対策

6. よくある質問とエラー対策
6. よくある質問とエラー対策

初心者の方からよくある質問をまとめました。

  • Q: config.pyが読み込まれません。
    → ファイル名が正しいか、同じフォルダにあるか確認してください。
  • Q: 環境変数が反映されません。
    → コマンドを入力したあとに新しいターミナルで実行していないか確認してください。
  • Q: デバッグモードがオフになりません。
    ProductionConfigが正しく読み込まれているか確認しましょう。

エラーが出たときは、エラーメッセージをよく読んでキーワードをGoogle検索すると、解決方法が見つかることが多いです。

まとめ

まとめ
まとめ

Flaskアプリケーションで設定管理を行う際に重要となるのが、ひとつの設定ファイルに必要な項目を整理してまとめる工夫です。特にconfig.pyを活用する方法は、開発環境や本番環境で異なる設定を切り替える場面で大きな力を発揮します。設定を分ける理由としては、開発時にはデバッグを有効にして確認作業をしやすくする一方で、本番環境では安全性や安定性を保つために余計な情報を表示しないようにする必要があるためです。こうした差異をクラス構造で整理し、継承という仕組みを使うことで設定の重複を避けながらより見通しの良い構造にまとめることができます。また、環境変数を使用して状況に応じて設定を切り替える方法は、運用現場でも広く使われている実践的な技術であり、Flaskアプリケーションでも自然に取り入れることができます。環境変数はシステム側が持っている外部の情報を参照するため、コードを直接編集せずに運用環境を変更できるという利点があります。特に複数の環境を扱うプロジェクトでは、環境ごとに異なる設定を柔軟に切り替えることが求められますが、config.pyと環境変数を組み合わせることで、そうした要件にも対応しやすくなります。さらに、本番と開発が混ざってしまうミスを防ぐためにも、設定ファイルを明確に分けておく仕組みは大切で、設定名やクラス名を整理しておくと管理しやすくなります。アプリの構造が複雑になっても、設定ファイルが整理されていれば全体の見通しもぐっとよくなり、保守性の向上にもつながります。 ここでは、実際に設定ファイルをどのように活用するのかという流れを振り返りながら、より深い理解につなげるためにサンプルコードも交えて説明します。

設定管理のサンプルコード


class BaseConfig:
    SECRET_KEY = "基本の秘密キー"
    DEBUG = False

class DevConfig(BaseConfig):
    DEBUG = True

class ProdConfig(BaseConfig):
    DEBUG = False

上記のようなクラス設計で設定を分けると、開発環境ではログやデバッグ情報を細かく確認でき、本番環境では必要な機能だけが動作する安定した構成になります。Flaskアプリケーションでこれらの設定を読み込む際には、from_objectを使い、必要な設定クラスを読み込むだけで切り替えが完了します。また、環境変数の設定を使えば、状況に応じて自動的に適切な設定が反映されるため、運用の効率化に大きく貢献します。こうした構成は、アプリケーションを長く安全に運用していくためには欠かせないポイントです。

先生と生徒の振り返り会話

生徒
「きょう勉強したconfig.pyの使い方ですが、設定をクラスでまとめることで環境ごとの切り替えがしやすくなるという点がとてもわかりやすかったです。特に環境変数で自動的に切り替わる仕組みは便利ですね。」

先生
「そうですね。設定管理はアプリケーションを運用する上で欠かせない部分です。適切に整理しておくと、あとで修正が必要になったときにもスムーズに対応できるようになりますよ。今回の学びをアプリ制作の中で活かしていくと、より安定したシステムを作ることができるようになります。」

生徒
「はい。これから本番環境用と開発環境用の設定を分けて、しっかり管理できるようにしていきたいと思います。」

先生
「その調子です。設定は見えない部分ですが、とても大切な役割を持っています。今後も丁寧に扱っていきましょう。」

カテゴリの一覧へ
新着記事
New1
Django
Djangoのプロジェクトとアプリの違いを徹底解説!初心者でも迷わない構造の考え方
New2
Flask
FlaskでRQ(Redis Queue)を使って非同期タスク管理を行う方法|初心者向けやさしい解説
New3
Flask
FlaskでCookieを安全に使う方法!HttpOnly・Secureフラグの使い方を徹底解説
New4
Flask
Flask‑RESTfulでREST APIを構築する手順まとめ!初心者向けにやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Django
DjangoとFlaskの違いを完全比較!初心者でもわかるPythonフレームワーク入門
No.3
Java&Spring記事人気No3
Flask
Flaskアプリの環境変数設定方法!安全で柔軟な構成を実現しよう
No.4
Java&Spring記事人気No4
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.5
Java&Spring記事人気No5
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.6
Java&Spring記事人気No6
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.7
Java&Spring記事人気No7
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説
No.8
Java&Spring記事人気No8
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説