シンプルなYAMLからENVへの変換
フラットなYAMLキーバリューペアを.envファイル形式に変換する基本を学びます。YAMLマッピングが環境変数の代入にどのように変換されるかを解説します。
Basic Conversion
詳細な説明
YAMLをENV形式に変換するのは、環境変数を読み込むアプリケーションの設定を準備する際によく行われるタスクです。フラットなYAMLファイルは、最小限の変換でENVのキーバリューペアに直接マッピングされます。
シンプルなYAML設定:
database_host: localhost
database_port: 5432
database_name: myapp
debug: true
log_level: info
この.envファイルに変換されます:
DATABASE_HOST=localhost
DATABASE_PORT=5432
DATABASE_NAME=myapp
DEBUG=true
LOG_LEVEL=info
主な変換ルール:
- キーは大文字に変換される。 ENV変数名は慣例的にUPPER_SNAKE_CASEを使用します。
database_hostのようなYAMLキーはDATABASE_HOSTになります。 - シンプルな値にはクォートは不要。 YAMLでは文字列をクォート有無どちらでも記述できますが、ENVファイルではスペースのないシンプルな値にはクォートを省略するのが一般的です。
- 等号でキーと値を区切る。 YAMLは
:(コロン+スペース)を使用しますが、ENVはスペースなしの=を使用します。 - インデントやネストなし。 ENVファイルは厳密にフラットで、1行に1つのキーバリューペアです。
データ型の処理:
- ブール値(
true/false)はENVファイルではリテラル文字列として保持されます。それをどうパースするかは、使用するアプリケーション次第です。 - 数値はそのまま:
5432は5432のままです。 - YAMLのnull値は通常、空文字列になります:
DATABASE_PASSWORD=。
重要な注意点:
- ENVファイルはすべてのパーサーで値の後のインラインコメントをサポートしているわけではありません(一部は
#コメントをサポート)。 - スペース、特殊文字、または
#を含む値はクォートが必要です:APP_NAME="My Application"。 - ENVファイルには標準規格がなく、ツール(Docker、dotenv、systemd)間で動作が異なります。
フラットなYAML構造の変換は簡単ですが、ネストされたキーが関係すると複雑になります。
ユースケース
YAML設定ファイルからHeroku、Railway、Vercelなどの環境変数で設定を行うプラットフォームへのデプロイのために、シンプルなアプリケーション設定を環境変数に移行する場合。