ENVからYAMLへの変換

.envファイルを構造化されたYAML形式に変換する方法を学びます。キーの命名規則、値の型推論、ネスト構造の再構築について解説します。

Basic Conversion

詳細な説明

ENVファイルをYAMLに変換するのは、環境変数ベースの設定から構造化されたYAML設定ファイルに移行する際に便利です。この方向の変換では、キーの大文字小文字、ネスト、型推論についての判断が必要です。

典型的な.envファイル:

APP_NAME=DevToolbox
APP_PORT=3000
APP_DEBUG=false
DATABASE_HOST=localhost
DATABASE_PORT=5432
DATABASE_NAME=production_db
DATABASE_PASSWORD=s3cret!
REDIS_URL=redis://localhost:6379

フラットなYAMLへの直接変換:

APP_NAME: DevToolbox
APP_PORT: 3000
APP_DEBUG: false
DATABASE_HOST: localhost
DATABASE_PORT: 5432
DATABASE_NAME: production_db
DATABASE_PASSWORD: "s3cret!"
REDIS_URL: "redis://localhost:6379"

ネストを伴うスマート変換(アンダースコアを区切り文字として使用):

app:
  name: DevToolbox
  port: 3000
  debug: false
database:
  host: localhost
  port: 5432
  name: production_db
  password: "s3cret!"
redis:
  url: "redis://localhost:6379"

変換時の重要な判断:

  1. キーの大文字小文字。 ENV変数はUPPER_SNAKE_CASEです。YAMLに変換する際、そのまま保持するか、lower_snake_caseまたはcamelCaseに変換できます。
  2. ネスト戦略。 ENV名のアンダースコア(DATABASE_HOST)はネスト構造(database.host)を示す場合がありますが、これは曖昧です -- APP_NAMEapp.nameまたはフラットキーapp_nameのどちらを意味する可能性もあります。
  3. 型推論。 ENV値は常に文字列です。スマートなコンバーターは、数値(3000 -> 数値)、ブール値(false -> ブール値)を検出し、それ以外は文字列のままにします。
  4. クォート処理。 YAML特殊文字(:#!@)を含む値はYAMLでクォートが必要です。

特別な注意が必要な値:

  • ://を含むURLはYAMLでクォートが必要
  • 特殊文字を含むパスワードはクォートが必要
  • 空の値(KEY=)は意図に応じてnullまたは""にすべき
  • 先頭/末尾にスペースがある値はホワイトスペースを保持するためクォートが必要

ENVからYAMLへの変換の主な課題は、ENVファイルが本質的にフラットで型なしであるため、ヒューリスティクスが必要な点です。

ユースケース

本番環境の.envファイルを構造化されたYAML設定テンプレート(機密値をプレースホルダーに置換したもの)に変換し、ドキュメントとして、または開発チーム向けの設定スキーマリファレンスとして使用する場合。

試してみる — YAML ↔ ENV Converter

フルツールを開く