環境ファイルパーサー
環境ファイル(.env)は設定をキーバリューペアとして保存し、シークレットや設定をコードから分離します。twelve-factor appの方法論で普及し、Node.js、Python、Ruby、その他のエコシステムで使用されています。このツールは.envファイルを解析し、変数を構造化されたビューで表示します。
仕様
よくあるユースケース
- アプリケーション環境設定の検査
- デプロイ前の.envファイル構文の検証
- 環境間(dev、staging、prod)の環境ファイルの比較
- ドキュメント作成のために環境変数をJSONに変換
- ログに公開せずに設定をレビュー
機能
- 様々な形式のKEY=valueペアを解析
- 引用値の処理(シングルクォートとダブルクォート)
- コメント(#)と空行のスキップ
- シークレットの表示/非表示切り替え(password、token、api、secretなどに一致するキーをマスク)
- プログラム利用のためにJSONとYAMLに変換
- コメント数の表示
例
アプリケーション設定
試してみる →データベースとAPI設定を含む典型的な.envファイル。
# Database configuration
DATABASE_URL=postgres://localhost:5432/myapp
DATABASE_POOL_SIZE=10
# API Keys
API_KEY="sk-1234567890"
SECRET_KEY='super-secret-value'ヒント
- .envファイルはバージョン管理にコミットしないでください。代わりに.env.exampleを使用してください。
- 引用値は先頭/末尾の空白を保持します。
- 一部の実装は変数展開をサポートしています: ${VAR}。
- 環境ごとに別々の.envファイルを使用: .env.development、.env.production。
解説 環境ファイルパーサー
環境変数ファイル(.env)はアプリケーション設定をシンプルなKEY=VALUEペアとして1行に1つずつ保存します。このフォーマットはtwelve-factor appの方法論で普及し、設定をコードから厳密に分離することを提唱しています。データベースURL、APIキー、フィーチャーフラグをハードコーディングする代わりに、アプリケーションは環境変数からそれらを読み取り、.envファイルは開発中にそれらの変数を設定する便利な方法を提供します。
dotenvライブラリは元々Ruby用で、後にNode.js、Python、PHP、およびほぼすべてのエコシステムに移植され、.envファイルを読み取り値をプロセス環境に注入します。フォーマットは引用なしの値(DATABASE_HOST=localhost)、エスケープシーケンス付きのダブルクォート値(MESSAGE="Hello\\nWorld")、およびリテラルとして扱われるシングルクォート値(REGEX='^\\d+$')をサポートしています。コメントは#で始まり、空行は無視されます。
重要な実践として、.envファイルは通常シークレットを含むため、バージョン管理にコミットしないことです。代わりに、プロジェクトにはプレースホルダー値で必要なすべての変数を一覧表示した.env.exampleを含めます。CI/CDシステムやホスティングプラットフォームは、環境変数を安全に設定するための独自のメカニズムを提供しています。
変数展開(\${VAR}構文で他の変数を参照)は一部のdotenv実装でサポートされています。Docker Composeはネイティブにサポートしています。展開に依存する場合は、特定のdotenv実装がサポートしているか確認してください。動作は言語によって異なります。
.envファイルには通常、データベースパスワード、APIキー、暗号化キーなどのシークレットが含まれています。これらをgitにコミットすると、リポジトリアクセス権を持つ誰にでも公開され、削除後もgit履歴に残ります。.envを.gitignoreに追加し、プレースホルダー値で必要な変数を文書化した.env.exampleを使用してください。ダブルクォート値はエスケープシーケンスを解釈し(\\nは改行になります)、シングルクォート値はエスケープ処理なしの生のリテラルとして扱われます。引用なしの値は末尾の空白がトリムされ、最初の#文字でインラインコメントとして扱われます。
複数環境の管理には通常、別々の.envファイルが使用されます: デフォルト用の.env、マシン固有のオーバーライド用の.env.local(コミットしない)、環境固有の値用の.env.developmentまたは.env.production。Next.js、Vite、Create React Appなどのフレームワークはこれらを特定の優先順位で読み込みます。Dockerについては、ComposeはファイルからVariableを読み込むenv_fileと直接設定するenvironmentキーをサポートしています。プロジェクトルートのCompose .envファイルはdocker-compose.yml自体の変数置換に使用されます。ビルド時のARG変数はランタイムのENV変数とは異なり、シークレットを含むべきではありません。