Flaskのアプリ設定ファイル(config.py)の作り方!初心者でもわかる環境設定の基本
生徒
「Flaskでアプリの設定って、どこに書くんですか?」
先生
「Flaskでは、アプリの設定をconfig.pyというファイルにまとめて管理するのが一般的です。」
生徒
「なんでそんなファイルを作る必要があるんですか?」
先生
「いい質問ですね。設定をまとめることで、アプリが大きくなったときでも見やすく管理しやすくなるからですよ。では、一緒に基本から学んでいきましょう!」
1. Flaskのアプリ設定ってなに?
Flask(フラスク)は、Python(パイソン)で作られたWebアプリケーションフレームワークです。Webアプリケーションとは、ブラウザからアクセスして動く仕組みのアプリのことです。
Flaskでアプリ開発をするときは、「動かし方のルール」や「環境ごとの切り替え」を決めるために、いくつかの設定(config)が必要になります。たとえば、開発中だけエラーを詳しく表示するか、セッションを守るための秘密のキーは何か、アップロードした画像やファイルをどこに保存するか、といった内容です。
これらをコードのあちこちに書いてしまうと、後から探しにくくなり、設定ミスも起きやすくなります。そこで、設定だけをまとめて書く専用ファイルとしてよく使われるのがconfig.pyです。設定を一か所に集めておくと、Flaskアプリの動作が整理され、環境設定の見通しも良くなります。
初心者向け:設定を「メモ帳」みたいにまとめるイメージ
まずは「設定は変数として持つだけ」と覚えると楽です。たとえば次のように、DEBUGやSECRET_KEYを用意しておくと、アプリ側から参照できる“設定の一覧”になります。
# config.py(設定だけを書いておくファイル)
class Config:
DEBUG = True
SECRET_KEY = 'mysecretkey'
DEBUGは「開発中は詳しいエラーを表示するかどうか」のスイッチです。SECRET_KEYは、ログイン状態(セッション)やフォーム送信などを安全に扱うための大事な値で、アプリのセキュリティに関わります。最初は「設定をまとめておくと管理しやすい」と理解できれば十分です。
2. config.pyを作ってみよう
ここからは実際に、Flaskの設定ファイルであるconfig.pyを作ってみましょう。やることはシンプルで、「アプリで使う設定を先にまとめて書いておくファイル」を1つ用意するだけです。
まず、プロジェクト(フォルダ)の中にconfig.pyという名前で新しいファイルを作成します。ここに、Flaskの環境設定をPythonの変数として書いていきます。初心者の方は、最初は“設定メモ”を作る感覚でOKです。
まずはこの2つだけ覚えよう
# config.py(Flaskアプリの設定をまとめる)
class Config:
DEBUG = True
SECRET_KEY = 'mysecretkey'
DEBUGは、開発中にエラー内容を詳しく表示するための設定です。Trueにしておくと原因調査がしやすくなります。SECRET_KEYは、ログイン状態(セッション)やフォーム送信などを安全に扱うために使われる「秘密のキー」で、Flaskのセキュリティに関わる大事な値です。
なお、SECRET_KEYは「人に知られると困る値」なので、サンプルでは分かりやすく固定の文字列にしていますが、実際の運用では推測されにくいものにします。まずはconfig.pyに設定を集める流れを覚えることが第一歩です。
3. Flaskアプリにconfig.pyを読み込ませる
config.pyを作ったら、次は「Flaskアプリ側でその設定を使えるようにする」作業です。といっても難しくはなく、app.pyなどのアプリ本体のファイルで、設定クラスを読み込んでFlaskに渡すだけです。
ポイントは2つです。①config.pyからConfigをインポートすること、②Flaskのappに対して「この設定を使ってね」と登録すること。この2ステップができれば、アプリ全体で同じ設定を参照できるようになります。
最小サンプル:読み込みはこの形を覚えればOK
from flask import Flask
from config import Config # config.py から設定クラスを読み込む
app = Flask(__name__)
app.config.from_object(Config) # アプリに設定を登録する
from config import Configは「config.pyに書いたConfigを持ってくる」という意味です。次のapp.config.from_object(Config)で、FlaskがConfigの中身(DEBUGやSECRET_KEYなど)を設定として扱えるようになります。
読み込みができているか不安なときは、設定値を1つだけ確認してみるのも手です。たとえば、app.configに値が入っていれば、ちゃんと読み込めています(確認のための一時的なチェックとして考えてください)。
print(app.config.get("DEBUG"))
もしTrueが出れば、config.pyの設定がFlaskアプリに反映されています。逆にNoneになる場合は、ファイル名やクラス名、インポートの書き方が合っているかを見直すと解決しやすいです。
4. config.pyを使うメリットって?
ここで「なんでconfig.pyをわざわざ作るの?」と疑問に思うかもしれません。
- 設定を一か所にまとめることで、どこに何があるか分かりやすくなる
- 他の人と一緒に開発するときも、共通の設定ファイルを使うことでミスが減る
- 環境によって設定を変えたいときも、ファイルを分けて対応できる
例えば、「開発環境」と「本番環境」で設定を分けたいときにも役立ちます。実際にそういった用途で使われることが多いです。
5. もっと設定項目を追加してみよう
Flaskでは、他にもさまざまな設定項目を追加できます。例えば、テンプレートやファイルのアップロード先のパス、セッションの設定なども可能です。
class Config:
DEBUG = True
SECRET_KEY = 'mysecretkey'
UPLOAD_FOLDER = 'uploads/'
SESSION_COOKIE_NAME = 'my_flask_app'
UPLOAD_FOLDERは、アップロードされたファイルを保存するフォルダの場所です。SESSION_COOKIE_NAMEは、ログイン状態などのセッション情報を記録するためのクッキーの名前です。
6. 初心者がつまずきやすいポイント
プログラミング初心者の方がconfig.pyを使うときに、よくあるミスは以下のとおりです。
- ファイル名が
config.pyでない(たとえばConfig.pyなど大文字にしてしまう) from config import Configのスペルミスapp.config.from_object()を忘れている
PythonやFlaskは、大文字と小文字を区別します。そのためConfigやconfigの綴りを間違えないように注意しましょう。
7. Flaskの基本的な構成とconfig.pyの位置
Flaskのアプリを作るときは、以下のようなフォルダ構成にすると整理しやすいです。
myapp/
├── app.py
├── config.py
├── templates/
└── static/
このようにapp.pyとconfig.pyは同じ階層に置くのが一般的です。こうすることで、configを簡単にインポートできます。
まとめ
Flaskでアプリケーションを作成するとき、設定情報をどのように整理するかはアプリ全体の運用性や拡張性に大きく関わってきます。今回の記事では、Flaskの設定情報をひとつにまとめるための重要な仕組みであるconfig.pyの役割や書き方、アプリへの読み込み方法まで詳しく学んできました。Flaskはシンプルな構造で扱いやすいフレームワークですが、アプリが成長していくにつれて、設定項目が散らばってしまうと管理が難しくなります。そこでconfig.pyを活用することで、設定を明確にし、コードの読みやすさと保守性を向上させられます。
記事で紹介した基本の設定項目であるDEBUGやSECRET_KEYは、Flaskを使った開発において最初に理解しておきたい重要な部分です。DEBUG = Trueを指定するとエラー内容がわかりやすく表示され、開発効率が高まります。また、SECRET_KEYはセキュリティ上必須の設定であり、不正アクセスからフォームデータやセッション情報を守るためにも欠かせません。さらに、アップロードフォルダやクッキーの設定といった追加の項目をconfig.pyにまとめることで、アプリが複雑になっても一目で設定を確認できるようになります。
Flaskアプリ側でapp.config.from_object(Config)を使って設定を読み込む方法も、理解しておきたい大切なポイントです。この仕組みによって、Flaskはconfig.py内の設定クラスを自動的に読み込み、アプリ内で利用できるようになります。初心者がつまずきやすいスペルミスやファイル名の大小文字の違いも、今回学んだ注意点を踏まえておくと防ぎやすくなるでしょう。
さらに、Flaskを使ったアプリのフォルダ構造を整えることも、アプリ開発における重要な要素です。app.pyとconfig.pyを同じ階層に置くことで設定のインポートがスムーズになり、テンプレートフォルダや静的ファイルの配置にも一貫性が生まれます。こうした基本の構成は、規模の大きなアプリを作る際にも役に立つ一般的なレイアウトです。
Flaskは自由度が高いぶん、開発者自身がルールを決めて整理しながら進める必要があります。その中でconfig.pyのような設定ファイルを使う設計は非常に重要で、今後アプリを改良したり機能を拡張したりするときの強力な基盤になります。今回の内容を踏まえて、次のステップとして「開発用」「本番用」「テスト用」など環境ごとに異なる設定クラスを作ることにも挑戦すると、より実践的なFlask開発ができるようになるでしょう。
■ config.pyのサンプルコード(応用バージョン)
class BaseConfig:
SECRET_KEY = 'base_secret_key'
SESSION_COOKIE_NAME = 'my_flask_app'
UPLOAD_FOLDER = 'uploads/'
class DevelopmentConfig(BaseConfig):
DEBUG = True
ENV = 'development'
class ProductionConfig(BaseConfig):
DEBUG = False
ENV = 'production'
# app.pyでの読み込み例
from flask import Flask
from config import DevelopmentConfig
app = Flask(__name__)
app.config.from_object(DevelopmentConfig)
このように、設定をクラスごとに分けて管理することで、開発環境ではデバッグモードを有効にし、本番環境では安全な設定を適用するなど、柔軟で安全なアプリ運用が実現できます。Flaskの設定管理は、アプリの品質に直結する大切な工程であり、初心者が早い段階で身に付けておくべきスキルと言えます。
生徒:「config.pyを使うと設定がこんなに整理できるんだと驚きました!」
先生:「そうですね。Flaskは自由度が高いぶん、自分で整理して設計する力が必要なんです。」
生徒:「DEBUGやSECRET_KEYの意味もようやく理解できました。特にSECRET_KEYの大切さは知りませんでした!」
先生:「セキュリティに関わる部分なので、本番環境では必ず安全な値にしておくことが大事ですね。」
生徒:「環境ごとにクラスを分ける方法も便利ですね!開発環境と本番環境で切り替えられるのは助かります。」
先生:「その通り。プロの現場でもよく使われる手法なので、今のうちに慣れておくと良いですよ。」
生徒:「次は、設定にデータベースのURLやメールサーバーの設定も追加してみたいです!」
先生:「とても良いですね。config.pyを使えばそれらも簡単に管理できるようになります。」