YAML と JSON: どの設定形式を選び、どう安全に変換するか

2025-05-20

YAML 1.2 は JSON 互換を目標としており、妥当な JSON は YAML としても解釈可能です。運用設定は YAML、アプリ間交換は JSON が多く、変換時には型と構文の落とし穴に注意が必要です。

主な違い

JSON はコメントなし、キーはダブルクォート、形が厳密。YAML はインデント、# コメント、柔軟なスカラー表現が特徴です。

JSON
{ "server": { "port": 8080 } }
YAML
server:
  port: 8080

設定ファイルにはどちらを使うべきか

手編集する運用設定(K8s、Docker、CI)は YAML、機械生成マニフェストやアプリ間交換は JSON が向いています。

変換時の落とし穴

yes/no が真偽値化される、バージョン文字列が数値化される、JSON にはアンカーがない、YAML のタブは無効などに注意します。

CLI 変換

yq、js-yaml、PyYAML を使い、変換後は必ず JSON.parse でチェックしてサイレントな型変化を検出します。

Kubernetes 実務のヒント

リポジトリでは YAML を維持し、JSON 専用コンシューマー向けに CI で変換する運用が扱いやすいです。巨大 JSON マニフェストの手書きは避けます。

まとめ

人が読むなら YAML、機械処理なら JSON。ツールのバージョン固定と変換後の検証を徹底しましょう。