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設定スキーマを作成し、チームオンボーディング用にすべての利用可能な設定オプションの型、デフォルト値、説明をドキュメント化する場合。

試してみる — YAML ↔ ENV Converter

フルツールを開く