開発ツール

YAMLとJSONの違いと相互変換方法

YAMLとJSONは、設定ファイルやデータ交換で広く使われるデータ形式です。Docker Compose、Kubernetes、GitHub ActionsなどではYAMLが標準的に使われる一方、Web APIのレスポンスにはJSONが主流です。この記事では、両者の違いと使い分け、そして相互変換の方法を解説します。

YAMLとJSONの基本

JSON(JavaScript Object Notation)は、JavaScriptのオブジェクト構文をベースにしたデータ形式です。波括弧({} )とダブルクォートを使い、厳密な構文を持ちます。

YAML(YAML Ain't Markup Language)は、インデントベースの人間が読みやすいデータ形式です。コメントが書ける、クォートが不要など、設定ファイルに適した特徴があります。

構文の違いを比較

同じデータをJSON・YAMLそれぞれで表現した例です:

JSON形式

{
  "name": "my-app",
  "version": "1.0.0",
  "dependencies": {
    "express": "^4.18.0",
    "lodash": "^4.17.0"
  },
  "scripts": ["build", "test", "deploy"]
}

YAML形式

# アプリケーション設定
name: my-app
version: "1.0.0"
dependencies:
  express: "^4.18.0"
  lodash: "^4.17.0"
scripts:
  - build
  - test
  - deploy

主な違いの比較表

特徴JSONYAML
可読性普通高い(インデントベース)
コメント不可可能(#記号)
データ型文字列・数値・真偽値・null・配列・オブジェクトJSON全型 + 日付・タイムスタンプ
ファイルサイズやや大きい(括弧・クォート)コンパクト
主な用途API通信・Webアプリ設定ファイル・CI/CD
パース速度高速やや遅い

どちらを使うべきか

JSONが適している場面:APIレスポンス、ブラウザとの通信、データベース保存、パフォーマンスが重要な場面

YAMLが適している場面:Docker Compose、Kubernetes manifests、GitHub Actions、Ansible playbooks、人間が編集する設定ファイル全般

YAMLの注意点

  • インデント:タブは使えず、半角スペースのみ対応(通常2スペース)
  • 文字列の暗黙変換yes/noが真偽値に解釈される場合がある
  • 複数行文字列|(改行保持)と>(折りたたみ)の違い

よくある質問

YAMLはJSONのスーパーセットですか?

YAML 1.2以降、有効なJSONはすべて有効なYAMLとして解釈できます。ただし実際のパーサーによっては完全な互換性がない場合もあります。

YAMLのインデントはスペース何個が標準ですか?

2スペースが最も一般的です。4スペースも使われますが、Kubernetes やDocker Composeの公式ドキュメントは2スペースを採用しています。

TOML(Tom's Obvious Minimal Language)との違いは?

TOMLはINIファイルに近いフラットな構文で、Rust(Cargo.toml)やPython(pyproject.toml)の設定で使われます。深いネストにはYAMLのほうが適しています。

YAML ⇔ JSON変換ツールを使ってみる

ブラウザ上でYAMLとJSONを即座に相互変換。インストール不要・完全無料。

ツールを開く →