Day9:環境変数と設定管理 中盤
テーマ:.env を“実務レベル”で使いこなし、環境差異を完全に吸収できるアプリ構成を作る
中盤では、前半で学んだ
「環境変数とは何か」「.env の役割」
をさらに深掘りし、実務で必須となる
- .env の正しい作り方
- .env.example の重要性
- Docker Compose との連携
- セキュリティ上の注意点
- 開発・本番で設定を切り替える方法
を、初心者でも迷わず理解できるように解説します。
.env を“正しく設計する”ことが環境差異吸収の第一歩
.env は「設定の辞書」
アプリが動くために必要な設定を、
すべて .env に集約する のが実務の基本です。
例:
APP_ENV=development
APP_PORT=3000
DB_HOST=db
DB_USER=user
DB_PASSWORD=secret
DB_NAME=myapp
重要ポイント
アプリ本体は 環境変数しか参照しない ようにします。
これにより:
- 開発 → .env.dev
- テスト → .env.test
- 本番 → .env.prod
と切り替えるだけで、
同じアプリがどの環境でも動く ようになります。
.env.example を作る理由を深掘りする
.env は Git に含めてはいけない
理由:パスワードや秘密情報が入るため。
しかし .env がないと、他の開発者は動かせません。
そこで .env.example を作ります。
.env.example の例
APP_ENV=development
APP_PORT=3000
DB_HOST=db
DB_USER=user
DB_PASSWORD=your_password_here
DB_NAME=myapp
これが実務で必須な理由
- チーム全員が同じ設定項目を共有できる
- 新メンバーがすぐ環境構築できる
- 本番の秘密情報は漏れない
.env.example は プロジェクトの説明書 の一部です。
Docker Compose と .env の連携を深掘りする
Compose は .env を自動で読み込む
docker-compose.yml:
services:
api:
image: myapp
environment:
APP_ENV: ${APP_ENV}
DB_HOST: ${DB_HOST}
DB_USER: ${DB_USER}
DB_PASSWORD: ${DB_PASSWORD}
DB_NAME: ${DB_NAME}
YAML.env:
APP_ENV=development
DB_HOST=db
DB_USER=user
DB_PASSWORD=secret
DB_NAME=myapp
Compose は ${DB_HOST} を .env の値で置き換えます。
つまり
docker compose up するだけで、環境変数が自動で注入される。
DB 接続設定を環境変数で管理する“実務例”
Node.js の例:
const config = {
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME
};
JavaScriptPython の例:
import os
config = {
"host": os.getenv("DB_HOST"),
"user": os.getenv("DB_USER"),
"password": os.getenv("DB_PASSWORD"),
"database": os.getenv("DB_NAME")
}
Python重要ポイント
アプリは 環境変数しか参照しない。
これにより:
- 開発 → ローカル DB
- 本番 → クラウド DB
- テスト → テスト用 DB
と切り替えても、コードは一切変更不要。
.env を使うと「環境差異」が完全に吸収される
例:開発と本番で DB が違う場合
開発(.env.dev):
DB_HOST=localhost
DB_USER=dev
DB_PASSWORD=devpass
本番(.env.prod):
DB_HOST=prod-db.internal
DB_USER=prod
DB_PASSWORD=supersecret
アプリは同じコードで動く。
違うのは .env の中身だけ。
これが Docker と .env の最大の強みです。
セキュリティ上の注意点を深掘りする
.env を Git に絶対入れてはいけない
理由:
- パスワード
- APIキー
- DB接続情報
- 秘密鍵
これらが漏れると 重大なセキュリティ事故 になります。
.env を守る方法
.gitignoreに.envを追加.env.exampleを共有- 本番の .env はサーバー側で管理
- Docker Secret や AWS Parameter Store を使う(上級編)
中盤まとめ
あなたがここまで理解できていれば、中盤はクリアです。
- .env は「設定の辞書」であり、アプリ本体は環境変数だけ参照する
- .env.example はチーム開発で必須
- Docker Compose は .env を自動で読み込む
- DB 接続設定は環境変数で完全に管理する
- 開発・本番で .env を切り替えるだけで環境差異を吸収できる
- .env は Git に絶対入れない(セキュリティ上の最重要ポイント)
