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

Flaskアプリで環境変数を管理するベストプラクティスまとめ!初心者でもわかる安全で便利な方法

Flaskアプリで環境変数を管理するベストプラクティスまとめ
Flaskアプリで環境変数を管理するベストプラクティスまとめ

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

生徒

「Flaskでアプリを作っているんですが、パスワードや秘密の情報ってどこに書けばいいんですか?」

先生

「そういう大事な情報はコードに直接書かず、環境変数(かんきょうへんすう)として管理するのが安全なんです。」

生徒

「環境変数ってなんですか?難しそう…。」

先生

「大丈夫。環境変数は、アプリに外から情報を渡すための“メモ”のようなものです。安全に管理できて、切り替えも簡単なんですよ。今から詳しく説明しますね!」

1. 環境変数とは?

1. 環境変数とは?
1. 環境変数とは?

環境変数とは、パソコンやサーバーの中に設定できる「名前と値のペア」のことです。例えば「SECRET_KEY=abc123」という形で、Flaskアプリに秘密のキーを渡せます。

これを使うメリットは次の通りです。

  • パスワードや秘密キーをソースコードに書かなくて済むので安全
  • 開発環境・本番環境ごとに簡単に切り替えできる
  • チーム開発でも、他の人に見せたくない情報を守れる

たとえるなら、冷蔵庫の扉に貼るメモのようなものです。冷蔵庫の中身(アプリ本体)には触れずに、「今日は牛乳を買う」と外に書いておく感じです。

2. WindowsやMacで環境変数を設定する方法

2. WindowsやMacで環境変数を設定する方法
2. WindowsやMacで環境変数を設定する方法

Flaskアプリで環境変数を使うには、まずパソコンに値を設定します。

Windowsの場合


set SECRET_KEY=abc123
set FLASK_ENV=development

Mac/Linuxの場合


export SECRET_KEY=abc123
export FLASK_ENV=development

この状態でFlaskアプリを起動すると、アプリは設定した環境変数を読み取ることができます。

3. Flaskで環境変数を使う方法

3. Flaskで環境変数を使う方法
3. Flaskで環境変数を使う方法

Pythonには標準でosというモジュールがあり、これを使うと簡単に環境変数を取得できます。


import os
from flask import Flask

app = Flask(__name__)
app.config['SECRET_KEY'] = os.getenv('SECRET_KEY', 'default_key')

@app.route("/")
def index():
    return f"SECRET_KEYは {app.config['SECRET_KEY']} です"

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

os.getenvの第二引数にデフォルト値を書いておくと、環境変数が設定されていない場合でも動作します。

4. .envファイルで管理する方法(おすすめ)

4. .envファイルで管理する方法(おすすめ)
4. .envファイルで管理する方法(おすすめ)

毎回コマンドでsetexportを打つのは面倒ですよね。そこで便利なのが.envファイルです。このファイルにまとめて書いておけば、自動で読み込ませられます。

.envファイルの例


SECRET_KEY=abc123
FLASK_ENV=development
DEBUG=True

Pythonコード

まず、python-dotenvというライブラリをインストールします。


pip install python-dotenv

その後、アプリのコードで読み込みます。


import os
from flask import Flask
from dotenv import load_dotenv

# .envファイルを読み込む
load_dotenv()

app = Flask(__name__)
app.config['SECRET_KEY'] = os.getenv('SECRET_KEY')

@app.route("/")
def index():
    return f"現在のSECRET_KEYは {app.config['SECRET_KEY']} です"

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

この方法なら、開発用・本番用で別々の.envファイルを使うだけで簡単に切り替えられます。

5. ベストプラクティスまとめ

5. ベストプラクティスまとめ
5. ベストプラクティスまとめ

環境変数を安全に管理するためのコツを整理します。

  • .envファイルをGitなどにアップしない(.gitignoreに追加)
  • 本番環境と開発環境で値を分ける
  • 必須の環境変数はデフォルト値を書かない(設定忘れを防ぐため)
  • チーム開発ではサンプル用.env.exampleを共有

このルールを守れば、安全で管理しやすいFlaskアプリが作れます。

6. よくあるエラーと解決方法

6. よくあるエラーと解決方法
6. よくあるエラーと解決方法

初心者がつまずきやすいポイントをまとめました。

  • エラー: SECRET_KEYがNoneになる
    → .envファイルが正しい場所にあるか確認しましょう。
  • エラー: モジュールdotenvが見つからない
    pip install python-dotenvを忘れていないか確認してください。
  • 本番環境で値が反映されない
    → サーバー側の環境変数を正しく設定しているか確認しましょう。

まとめ

まとめ
まとめ

Flaskアプリで環境変数を活用する方法を振り返ると、開発の安全性と柔軟性を高めるうえで非常に重要な仕組みであることが理解できます。特に、SECRET_KEYやデータベース接続情報のような機密性の高い値をソースコードに直接書かず、環境ごとに外部設定として管理することで、運用上のリスクを大幅に下げることができます。開発環境・本番環境・検証環境など、用途に応じて設定を簡単に切り替えられる点も大きなメリットです。 また、.envファイルによる管理は、値をひとつのファイルにまとめられるため非常にわかりやすく、python-dotenvを使うことでアプリ起動時に自動読み込みが行われ、毎回手動で環境変数を設定する手間から解放されます。実際の開発現場でも広く利用されている方法であり、チーム開発でも統一した形式で設定を共有できる点は大きな強みです。さらに、.gitignoreへ.envを登録しておくことで、誤って機密情報を公開してしまうトラブルも防ぐことができます。 Flaskではos.getenvを利用して環境変数を取得しますが、デフォルト値を設定しておけば想定外の未設定にも対応でき、アプリが急に動かなくなる事態を避けることができます。一方、重要な値はデフォルトを設定せず、設定漏れに気付けるようにしておくなど、場面に応じた使い分けも求められます。開発者が意識すべきポイントとして、単に環境変数を使うだけでなく、アプリ全体の流れと動作を理解しながら管理する姿勢が欠かせません。 初心者がつまずきやすい問題として、dotenvのインストール忘れ、.envファイルの配置ミス、サーバー側の環境変数未設定などが挙げられますが、基本的なルールを理解していれば落ち着いて原因を突き止められます。今回学んだ内容はFlaskだけにとどまらず、他のWebフレームワークやサービスでも共通して活用できる知識であり、アプリ開発の基礎力を高める大切なステップになるはずです。

サンプルプログラム


from flask import Flask
import os
from dotenv import load_dotenv

# .envを読み込む
load_dotenv()

app = Flask(__name__)
app.config["SECRET_KEY"] = os.getenv("SECRET_KEY", "sample_default")
app.config["FLASK_ENV"] = os.getenv("FLASK_ENV", "development")
app.config["DEBUG"] = os.getenv("DEBUG", "False")

@app.route("/")
def home():
    return f"現在のSECRET_KEYは {app.config['SECRET_KEY']} です"
先生と生徒の振り返り会話

生徒

「環境変数を使うと、どうしてこんなに管理しやすくなるんですか?」

先生

「コードと大切な値を分けて管理できるからですね。環境が変わってもファイルを書き換える必要がなく、外部設定を切り替えるだけで済むんです。」

生徒

「たしかに、.envを使うと見通しも良くなりました。python-dotenvが自動で読み込んでくれるのも便利ですね。」

先生

「そのとおりです。そして、.envをGitに含めないよう注意しておけば、機密情報が外に漏れるリスクも減ります。」

生徒

「今回学んだ方法を使えば、安心してFlaskアプリを開発できますね!」

先生

「ええ。環境変数は多くのWebアプリで使われる基本技術なので、しっかり身につけておくと必ず役に立ちますよ。」

カテゴリの一覧へ
新着記事
New1
Flask
Flaskでデータベースエラーを処理する方法!初心者にもわかる例外の使い方
New2
Flask
FlaskでリダイレクトやURL生成を行う方法!便利な関数の使い方を解説
New3
Flask
FlaskでPOSTリクエストを受け取る方法!初心者でもわかるJSONデータの受け取り方
New4
Flask
Flask‑Mailの使い方!アプリからメールを送信する基本方法を解説
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Django
DjangoとFlaskの違いを完全比較!初心者でもわかるPythonフレームワーク入門
No.3
Java&Spring記事人気No3
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
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でHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.7
Java&Spring記事人気No7
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説
No.8
Java&Spring記事人気No8
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説