Dotenvファイルのパースルールとそれに対応するYAML
.envファイルのパースルール(クォート、コメント、複数行の値、export)を詳しく解説します。各dotenv機能がYAML構造にどのようにマッピングされるかを学びます。
ENV to YAML
詳細な説明
dotenvフォーマットは一見シンプルですが、多くのエッジケースがあります。.envとYAMLの間の変換において、正確なパースルールを理解することは不可欠です。特に、異なるdotenvライブラリの挙動が微妙に異なるためです。
包括的な.envファイル:
# アプリケーション設定
APP_NAME=DevToolbox
APP_PORT=3000
APP_URL="https://www.dev-toolbox.tech"
# クォート文字列(ホワイトスペースを保持)
GREETING=" Hello, World! "
SINGLE_QUOTED='no $expansion here'
# コメント
INLINE=value # これがコメントになるかはパーサー次第
HASH_VALUE="value # not a comment"
# 複数行(ダブルクォートのみ)
PRIVATE_KEY="-----BEGIN RSA KEY-----
MIIBxTCCAWug...
-----END RSA KEY-----"
# exportプレフィックス(一部のパーサーがサポート)
export EXPORTED_VAR=exported_value
# 空とホワイトスペース
EMPTY=
WHITESPACE=" "
YAML対応:
# アプリケーション設定
APP_NAME: DevToolbox
APP_PORT: 3000
APP_URL: "https://www.dev-toolbox.tech"
# クォート文字列
GREETING: " Hello, World! "
SINGLE_QUOTED: "no $expansion here"
# コメント
INLINE: value
HASH_VALUE: "value # not a comment"
# 複数行
PRIVATE_KEY: |
-----BEGIN RSA KEY-----
MIIBxTCCAWug...
-----END RSA KEY-----
# exportプレフィックス
EXPORTED_VAR: exported_value
# 空とホワイトスペース
EMPTY: ""
WHITESPACE: " "
dotenvパースルールのYAMLマッピング:
| .env機能 | .env構文 | YAML対応 |
|---|---|---|
| シンプルな値 | KEY=value |
KEY: value |
| ダブルクォート | KEY="value" |
KEY: "value" |
| シングルクォート | KEY='value' |
KEY: 'value' または KEY: "value" |
| コメント | # comment |
# comment |
| 空の値 | KEY= |
KEY: "" または KEY:(null) |
| 複数行 | KEY="line1\nline2" |
KEY: |\n line1\n line2 |
| exportプレフィックス | export KEY=val |
該当なし |
| 変数展開 | KEY=$OTHER |
ネイティブではサポートなし |
パーサー間の違いに注意:
- Node.js dotenv: インラインコメント非対応、複数行非対応、exportプレフィックス非対応、変数展開非対応
- Python dotenv: インラインコメント対応(
#の前にスペースが必要)、複数行対応、exportプレフィックス対応、変数展開対応 - Docker: インラインコメント対応、複数行非対応、exportプレフィックス非対応、基本的な変数展開対応
- Ruby dotenv: コマンド置換を含むフルサポート
.envからYAMLに変換する際は、アプリケーションが使用するのと同じパーサーで必ずテストし、動作が一致することを確認してください。
ユースケース
既存の.env.exampleファイルから包括的なYAML設定スキーマを作成し、チームオンボーディング用にすべての利用可能な設定オプションの型、デフォルト値、説明をドキュメント化する場合。