閉じる

JSON・XML・YAMLの違いと使い分けをやさしく解説

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の例:

JSON
{
  "name": "Taro",
  "age": 20,
  "student": true,
  "languages": ["ja", "en"]
}

XMLの例:

XML
<person>
  <name>Taro</name>
  <age>20</age>
  <student>true</student>
  <languages>
    <lang>ja</lang>
    <lang>en</lang>
  </languages>
</person>

YAMLの例:

YAML
name: Taro
age: 20
student: true
languages:
  - ja
  - en

このように、YAMLは最も短く、XMLはタグが多く丁寧、JSONは機械と人のバランスがとれた表記になりやすいです。

JSON・XML・YAMLの違いを比較

全体像をつかむために、主要な観点で比較します。

用途に応じて強みが変わることを押さえておくと選びやすくなります。

観点JSONXMLYAML
可読性/書きやすさ中〜高(記号は明確)中(タグ多め)高(最も簡潔)
データ型/表現力基本型が十分文書向き・属性で拡張柔軟なスカラー解釈
厳密さ文法が厳密タグ整合が必須インデント厳密・柔軟
コメントなしあり(<!– –>)あり(#)
サイズ小さめ大きめ小さめ〜中
処理速度速いことが多いやや遅いことが多い遅めなことがある
ツール/普及度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で始め、必要に応じて切り替えると学習も実務もスムーズに進みます。

プログラミング - データ表現と数値

この記事を書いた人
エーテリア編集部
エーテリア編集部

このサイトでは、プログラミングをこれから学びたい初心者の方に向けて記事を書いています。 基本的な用語や環境構築の手順から、実際に手を動かして学べるサンプルコードまで、わかりやすく整理することを心がけています。

クラウドSSLサイトシールは安心の証です。

URLをコピーしました!