Skip to content
Latchkey

YAML vs JSON: どちらのconfigフォーマットか?

YAMLはコメントとanchorをサポートする人間に優しい設定フォーマット、JSONはコメントのない厳格で普及したデータ交換フォーマットです。

YAMLはインデントを使い、コメント、anchor、複数行文字列をサポートするため、設定(CIのworkflow、Kubernetes、Compose)で人気です。JSONはより厳格でコメントがなく、APIやマシン間交換の共通語です。YAMLは人間による記述を、JSONは曖昧さのないマシンパースを重視します。なおYAMLはJSONのスーパーセットなので、JSONは有効なYAMLです。

YAMLJSON
可読性高い(インデント)中程度(波括弧)
コメントありなし
再利用anchor / aliasなし
厳格さ緩い、落とし穴あり厳格、予測可能
最適な用途config、CIのworkflowAPI、データ交換

ユースケースと落とし穴

YAMLは、コメントと構造が可読性を助ける手編集の設定に適しますが、落とし穴に注意が必要です。意味を持つ空白、ノルウェー問題(noがfalseとしてパースされる)、タブのエラーなどです。JSONは、厳格さと普遍的なパースが重要となるAPIペイロードや生成データに適します。多くのツールは両方を受け付けます。

CIでは

YAMLをlint(yamllint)し、schemaに対して検証してインデントと型の落とし穴を早期に検出します。JSONはJSON Schemaに対して検証します。どちらもmanaged runner上で動作し、より高速なrunnerはlintとschema検証のステップを短縮します。

結論

コメントと再利用を伴う人間が記述する設定: YAML。ただし空白と型の落とし穴に注意します。厳格で曖昧さのないパースを必要とするマシン間交換とAPIペイロード: JSON。設定はYAML寄り、データ交換はJSON寄りです。

関連ガイド