JSON・XML・YAMLの違いと使い分け|記法・可読性・型・用途を比較
JSON・XML・YAMLは、いずれも「構造を持つデータ」を文字で表すための形式です。よく似ているようで、記法・可読性・コメントの可否・型の扱い・得意な用途が違います。本記事では3形式の特徴を比較し、設定ファイル・データ交換・APIでの使い分け、相互変換、そして最終的にどれを選べばよいかの目安までやさしく解説します。
設定ファイルを開いたら波カッコが並んでいたり、APIのレスポンスがタグに囲まれていたり、インデントだけで構造が表されていたり――プログラミングをしていると、似たような役割なのに見た目の違うデータ形式に出会います。その代表がJSON・XML・YAMLの3つです。どれも「構造を持つデータを文字で表す」ための形式ですが、記法・可読性・コメントの可否・型の扱い・得意分野が異なります。本記事では、この3つの違いと使い分けを順を追って整理します。
3つのデータ形式とは
まずはそれぞれが何者なのかを押さえておきましょう。いずれも「人間が読めるテキストで、入れ子になったデータ構造を表現する」点は共通しています。
- JSON(JavaScript Object Notation):JavaScriptのオブジェクト記法をもとにしたデータ形式。波カッコ・角カッコ・コロンで構造を表します。軽量で機械処理しやすく、Web APIのデファクトスタンダードです。
- XML(Extensible Markup Language):開始タグと終了タグで要素を囲むマークアップ言語。属性や名前空間など表現力が高く、古くから企業システムや文書フォーマットで使われてきました。
- YAML(YAML Ain\'t Markup Language):インデント(字下げ)で階層を表す形式。記号が少なく人間にとって読み書きしやすいため、設定ファイルで広く採用されています。
同じ「名前と値のまとまり」を表すにも、形式によって見た目はかなり変わります。実際にどう違うのか、次の章で具体的な記法を見比べてみましょう。
記法と見た目の違い
「名前」と「年齢」、そして「趣味のリスト」を持つ人物データを、3形式で書き比べてみます。同じ内容でも印象がまったく違うことが分かります。
JSONは波カッコでオブジェクト、角カッコで配列を表し、キーと値をコロンで結びます。文字列はダブルクォートで囲む必要があります。
{ "name": "Taro", "age": 30, "hobbies": ["reading", "tennis"] }
XMLはすべてをタグで囲みます。要素ごとに開始タグと終了タグが必要なため記述量は多くなりますが、構造の境界は明示的です。
<person><name>Taro</name><age>30</age><hobbies><hobby>reading</hobby><hobby>tennis</hobby></hobbies></person>
YAMLはインデントで階層を表し、リストはハイフンで列挙します。カッコやタグがほとんど不要で、もっとも文章に近い見た目になります。
name: Taro
age: 30
hobbies:
- reading
- tennis
このように、JSONは記号で構造を、XMLはタグで構造を、YAMLは字下げで構造を表すのが基本的な違いです。XML形式とJSON形式の相互変換を試したいときはJSON XML変換ツールを、JSONとYAMLを行き来したいときはJSON YAML変換ツールを使うと、同じデータが各形式でどう表されるかを一目で確認できます。
可読性・コメント・型の比較
見た目の次は、実務で効いてくる3つの観点――可読性・コメントの可否・型の扱い――を比較します。
| 観点 | JSON | XML | YAML |
|---|---|---|---|
| 可読性 | 標準的 | 冗長になりがち | 高い(インデント依存) |
| コメント | 不可(標準仕様) | 可能 | 可能(#) |
| 型 | 文字列/数値/真偽/null/配列/オブジェクト | 原則すべて文字列 | JSON相当の型を自動推論 |
| 記述量 | 少なめ | 多い | 少ない |
可読性では、記号が少なく字下げで構造を表すYAMLが読みやすいとされます。ただしインデントのズレがそのままエラーになるため、書き間違いには注意が必要です。XMLはタグで意味が明確な反面、終了タグの分だけ冗長になりがちです。
コメントは意外と重要な差です。JSONは標準仕様としてコメントを書けません。一方、XMLとYAMLはコメントを残せるため、設定の意図やメモを書き込みたい設定ファイルではこの差が効いてきます。
型については、JSONは文字列・数値・真偽値・null・配列・オブジェクトを区別します。YAMLもほぼ同等の型を自動で推論しますが、その自動推論が思わぬ落とし穴になることもあります(後述)。XMLは基本的にすべてが文字列で、型は受け取る側が解釈する前提です。
用途別の向き不向き
3形式には、それぞれ得意な現場があります。代表的な3つの用途で見てみましょう。
1. 設定ファイル
人が手で書き換える設定ファイルでは、コメントが書けて読みやすいYAMLが好まれます。コンテナやCI/CD、各種ツールの設定でYAMLが多用されるのはこのためです。コメント不要で機械的に扱うなら、JSONを設定に使う構成もよく見られます。
2. データ交換
システム間でデータをやり取りする場面では、軽量で各言語のライブラリが充実したJSONが主流です。一方、厳密なスキーマ検証や属性・名前空間といった高度な表現が必要な企業間連携・文書系では、今もXMLが選ばれます。
3. Web API
現代のWeb APIはJSONが事実上の標準です。JavaScriptとの相性がよく、ブラウザでもサーバーでも扱いやすいことが理由です。古くからのSOAPなどタグベースのAPIではXMLが使われますが、新規開発ではJSONを選ぶのが一般的です。
相互変換するときの注意
3形式は構造の表現方法こそ違え、表せるデータの世界はおおむね重なるため、相互に変換できます。ただし、形式ごとの「得意・不得意」のズレから、変換時にいくつか注意点があります。
- コメントは消える:YAMLやXMLのコメントをJSONに変換すると、JSONはコメントを持てないため失われます。
- 型の解釈に差が出る:YAMLは「yes」「no」「on」「off」を真偽値とみなしたり、先頭ゼロの数字を意図せず数値化したりすることがあります。文字列として扱いたい値はクォートで囲むと安全です。
- XMLの属性の扱い:XMLにはタグの中身(要素)とは別に「属性」があります。JSONには属性の概念がないため、変換ツールによって属性をどうキー化するかのルールが異なります。
こうした差を実際に手を動かして確かめるのが理解の近道です。JSON XML変換ツールでタグと波カッコの対応関係を、JSON YAML変換ツールでインデントと記号の対応関係を確かめると、各形式がどんなデータを得意とするのかが体感的につかめます。
どれを選ぶかの目安
最後に、迷ったときの選び方を整理します。「優劣」ではなく「用途への適合」で選ぶのが基本です。
| こんなとき | おすすめ |
|---|---|
| Web APIやアプリ間のデータ交換 | JSON |
| 人が手で編集する設定ファイル | YAML |
| 厳密なスキーマ検証・文書・企業間連携 | XML |
ざっくり言えば、機械が読むならJSON、人が書くならYAML、厳密さと表現力が要るならXMLが出発点になります。とはいえ実務では、既存システムやチームの慣習、利用するツールが対応する形式によって決まることも多く、唯一の正解はありません。大切なのは、それぞれの長所と短所を理解したうえで、目の前の要件に合うものを選ぶことです。
3形式の感覚をつかむには、同じデータを変換して見比べるのが一番です。JSON XML変換ツールやJSON YAML変換ツールで実際にデータを入れ替えながら、記法・可読性・型の違いを目で確かめてみてください。
なお本記事は一般的な情報の提供を目的としたものです。各形式の仕様やライブラリの挙動は更新されることがあるため、実際の採用やデータ変換にあたっては最新の公式仕様やドキュメントを確認したうえで判断してください。
よくある質問
JSONとXMLとYAMLの一番の違いは何ですか?
構造の表し方が異なります。JSONは波カッコや角カッコなどの記号、XMLは開始タグと終了タグ、YAMLはインデント(字下げ)で階層構造を表します。記述量はXMLが多く、JSONとYAMLは少なめです。可読性はYAMLが高いとされますが、インデントのズレがエラーになる点に注意が必要です。
コメントを書けるのはどの形式ですか?
XMLとYAMLはコメントを書けますが、JSONは標準仕様としてコメントを書けません。設定の意図やメモを残したい設定ファイルでは、コメントを書けるYAMLやXMLが有利です。JSONでメモを残したい場合は、コメント対応の拡張形式を使うか、データ内に説明用のキーを設ける方法がとられます。
Web APIではどの形式を使うべきですか?
現代のWeb APIではJSONが事実上の標準です。軽量で各プログラミング言語のライブラリが充実しており、JavaScriptとの相性も良いためです。SOAPなど古くからのタグベースのAPIではXMLが使われますが、新規開発では特別な理由がない限りJSONを選ぶのが一般的です。
JSON・XML・YAMLは相互に変換できますか?
おおむね相互に変換できます。ただしコメントはJSONに変換すると失われ、YAMLでは「yes」「no」などが真偽値と解釈されるなど型の扱いに差が出ます。XMLの属性はJSONに対応概念がないため、ツールごとに変換ルールが異なります。WAZA TOOLSの変換ツールで実際の対応関係を確認できます。
変換ツールに入力したデータはサーバーに送信されますか?
WAZA TOOLSのJSON XML変換ツールやJSON YAML変換ツールはすべてブラウザ内で処理され、入力したデータがサーバーに送信・保存されることはありません。スマートフォンでも利用でき、機密情報を含むデータでも安心して、何度でも無料で変換できます。