.envファイルのベストプラクティス|機密情報を安全に管理する
.env 環境変数 セキュリティ 開発
結論
必ず.gitignoreに追加。 KEY=value形式。値にスペースや=を含むならクォートで囲む。本番はクラウドのシークレット管理を推奨。
.envとは
.envは、環境変数を定義するファイルです。KEY=value形式で1行に1つずつ書きます。
DATABASE_URL=postgresql://user:pass@localhost:5432/mydb
API_KEY=sk-xxxxxxxxxxxxx
SECRET_KEY=your-secret-key
アプリケーションは起動時にこのファイルを読み込み、process.env.API_KEYのように参照します。Node.jsではdotenv、Pythonではpython-dotenvなど、各言語にライブラリがあります。
絶対にやること
.envには機密情報が含まれるため、必ず.gitignoreに追加してGitにコミットしないようにします。うっかりコミットしてしまうと、Gitの履歴に残り、リポジトリをクローンした人全員が機密情報を取得できてしまいます。
フォーマットの注意点
| ケース | 対処法 |
|---|---|
| 値にスペースを含む場合 | ダブルクォートで囲む:`API_KEY="my key with spaces"` |
| 値に=を含む場合 | クォートで囲む:`CONNECTION_STRING="host=localhost;port=5432"` |
| 改行 | 通常は1行1変数。複数行にしたい場合は、ライブラリの仕様を確認 |
| コメント | #で始まる行は無視されることが多い |
.envの形式が崩れていると、アプリが起動しないことがあります。.envフォーマッターを使うと、typoや形式ミスを防げます。
環境ごとの切り替え
1
開発・ステージング・本番で異なる値を使う場合、.env.development、.env.productionのように分ける
2
フレームワークによっては、NODE_ENVに応じて自動で読み込むファイルを切り替えてくれる
3
本番環境では、.envファイルをサーバーに置くのではなく、クラウドのシークレット管理(AWS Secrets Manager、Vercelの環境変数など)を使うことが推奨される
🧪 .envフォーマッターで試す
形式ミスを防ぎ、typoをチェックできます
試す