JSON、XML、YAMLは、データをテキストで表すための代表的な形式です。
どれも似て見えますが、得意分野や書き方が少しずつ異なります。
本記事では、初心者でも迷わないように違いと使い分けをやさしく解説し、実務での選び方のコツを紹介します。
JSON・XML・YAMLとは?初心者向けの基本
JSONとは
JSON(JavaScript Object Notation)は、キーと値を組み合わせたシンプルな構造でデータを表す形式です。
配列やオブジェクト(連想配列)が記述しやすく、Web APIやフロントエンドで標準的に使われています。
JavaScriptにとても馴染みがあり、ほとんどの言語で読み書きライブラリが用意されています。
JSONは括弧やカンマ、ダブルクォーテーションなどの明確な文法ルールがあり、学習コストが低い一方で、末尾カンマを許さないなど厳密さも持ち合わせています。
機械的に処理しやすいので、サイズや速度の面でも有利になることが多いです。
XMLとは
XML(eXtensible Markup Language)は、タグで囲む階層構造でデータや文書を表す形式です。
タグ名に意味を載せやすく、要素と属性を使い分けることで複雑な入れ子やメタ情報も表現できます。
文書構造に強く、RSSや一部の設定ファイル、Office系の内部フォーマットなどで使われます。
XMLは閉じタグが必須で、階層の整合性が崩れていないかなど厳格な整形(Well-formed)が求められるのが特徴です。
可読性は慣れると安定しますが、タグが多くなりがちで、短いデータでは冗長に感じることがあります。
YAMLとは
YAML(YAML Ain’t Markup Language)は、インデントで階層を表す読みやすさ重視の形式です。
記号が少なくシンプルに書けるため、設定ファイルによく採用されます。
配列や辞書(マップ)の表現が簡潔になり、人間が目で追いやすいのが利点です。
一方で、インデントの深さやコロンの位置など書式に厳密な決まりがあり、ズレるとエラーになります。
特にタブではなくスペースを使う点や、文字列の引用方法に注意が必要です。
書き方の違い
同じ内容をJSON、XML、YAMLで書くと次のようになります。
見比べると記号や書き味の違いがよく分かります。
JSONの例:
{
"name": "Taro",
"age": 20,
"student": true,
"languages": ["ja", "en"]
}
XMLの例:
<person>
<name>Taro</name>
<age>20</age>
<student>true</student>
<languages>
<lang>ja</lang>
<lang>en</lang>
</languages>
</person>
YAMLの例:
name: Taro
age: 20
student: true
languages:
- ja
- en
このように、YAMLは最も短く、XMLはタグが多く丁寧、JSONは機械と人のバランスがとれた表記になりやすいです。
JSON・XML・YAMLの違いを比較
全体像をつかむために、主要な観点で比較します。
用途に応じて強みが変わることを押さえておくと選びやすくなります。
| 観点 | JSON | XML | YAML |
|---|---|---|---|
| 可読性/書きやすさ | 中〜高(記号は明確) | 中(タグ多め) | 高(最も簡潔) |
| データ型/表現力 | 基本型が十分 | 文書向き・属性で拡張 | 柔軟なスカラー解釈 |
| 厳密さ | 文法が厳密 | タグ整合が必須 | インデント厳密・柔軟 |
| コメント | なし | あり(<!– –>) | あり(#) |
| サイズ | 小さめ | 大きめ | 小さめ〜中 |
| 処理速度 | 速いことが多い | やや遅いことが多い | 遅めなことがある |
| ツール/普及度 | Webで最強 | 企業/文書系で厚い | DevOps設定で広い |
可読性と書きやすさ
可読性は人がどれだけ読みやすいか、書きやすさはミスなく記述できるかの観点です。
YAMLは文章のように書けるため人には最も読みやすい一方、インデントを間違えると動きません。
JSONはダブルクォーテーションやカンマの位置が明確で、慣れると安定して書けます。
XMLはタグで意味が見える反面、短いデータでも行数が増えがちです。
データ型と表現力
JSONは数値、文字列、真偽値、配列、オブジェクトという実用的な基本型に絞った表現で、プログラムに渡しやすいです。
XMLはタグで包む文書構造に強く、属性の使い分けで表現力を高められます。
YAMLはアンquotedの値でも真偽や数値などに解釈されやすく、設定値を短く書ける利点があります。
厳密さ
厳密さはエラーを早く見つけやすいかの裏返しでもあります。
JSONは文法が厳密でパースエラーを早期に検出できます。
XMLはタグの整合が崩れるとすぐエラーになります。
YAMLは柔軟に見えて、実はインデントや記号の位置が厳密です。
特にYAMLではタブ文字を使わないことに注意してください。
コメントの可否
ドキュメントとして残したいとき、コメントの可否は重要です。
YAMLとXMLはコメントが書けるのに対し、JSONにコメントは書けません(仕様上)。
設定ファイルで説明を書きたい場合は、YAMLやXMLの方が扱いやすいことが多いです。
サイズと処理速度
通信や保存のコストを考えると、JSONは短くて速いことが多いです。
XMLはタグ分の文字が増えるためサイズが大きくなりがちです。
YAMLは人にやさしい分、パーサーが複雑で速度が落ちる場合がありますが、設定ファイルの規模なら問題にならないことも多いです。
ツール対応と普及度
Webやモバイルを含む多くの言語とフレームワークがJSONを標準対応しています。
XMLは長年の蓄積があり企業システムや文書系で強い一方、YAMLはGitHub Actions、Kubernetes、Docker ComposeなどDevOpsの設定分野で広く使われています。
プロジェクトの周辺ツールがどれに強いかを確認すると失敗が減ります。
用途別の使い分け
Web APIはJSONが基本
ブラウザやスマホアプリ、サーバー間通信などのAPIでは、JSONを選べばまず間違いありません。
HTTPと組み合わせやすく、各言語でのシリアライズ/デシリアライズが簡単です。
エコシステムが厚く、ドキュメント生成やバリデーションの仕組みも整っています。
設定ファイルはYAMLが読みやすい
人が手で編集する設定は、YAMLが短く読みやすくコメントも書けるため適しています。
複数環境の設定やフラグのオン/オフを見比べるのも容易です。
インデントが意味を持つので、タブを使わずスペースに統一し、行頭のズレに気をつけましょう。
複雑な文書や入れ子はXML
構造の深い文書、要素と属性を丁寧に分けたいケース、順序や混在コンテンツ(文字列とタグの混在)がある場合は、XMLが表現しやすいです。
タグ名で意味を明確にでき、ツールによる検証や変換も行いやすくなります。
小さく簡単ならJSONで十分
小規模な設定やスクリプトの入出力、シンプルなデータ交換なら、JSONだけで十分に実用的です。
コメントが不要で、人より機械が主に読む場面では、扱いやすさと速度のバランスが良い選択になります。
選び方の手順
何を優先するかを決める
最初に軸を1〜2個に絞ると迷いません。
人が読みやすいか、厳密でミスに強いか、コメントが要るか、サイズや速度が重要かを考えます。
優先度がはっきりすれば形式は自然に決まります。
| 優先したいこと | 向いている形式 |
|---|---|
| 人が読みやすい/コメントを書きたい | YAML |
| 厳密で機械処理しやすい/高速 | JSON |
| 複雑な文書構造や入れ子が深い | XML |
チームやツールの対応を見る
プロジェクトで使う言語、フレームワーク、CI/CD、エディタやLint/フォーマッタの対応状況を確認します。
チームが読み書きしやすく、ツールが自然にサポートしている形式を選ぶのが最短距離です。
既存の資産やガイドラインに従うと移行コストも下がります。
学ぶ順番
初心者は、JSON → YAML → XMLの順で学ぶのがおすすめです。
まずJSONでデータ構造に慣れ、次にYAMLで設定の書きやすさを体験し、必要に応じてXMLで文書的な表現に触れると無理なく理解が進みます。
変換と混在の注意点
形式を変換する場面では、型や表現の差によるズレに注意します。
YAMLは未引用の値が真偽や数値に解釈されることがあり、XMLは属性と要素のどちらに置くかで意味が変わることがあります。
コメントはJSONに移しにくいため、全自動変換は過信しないのが安全です。
まとめ
3つの形式はどれも広く使われていますが、目的に合った強みを持つものを選ぶのがコツです。
APIやデータ交換はJSON、人が触る設定はYAML、複雑な文書や入れ子はXMLが基本の目安になります。
迷ったらまずJSONで始め、必要に応じて切り替えると学習も実務もスムーズに進みます。
