JSON、XML、それともCSV? 用途に応じた正しいデータ形式の選び方
2026年10月13日
JSON、XML、CSVはいずれも、システム間で構造化データをやり取りするために存在します。しかし、これらを互換可能なものとして扱ってしまうことが、連携プロジェクトでデータの欠落、インポートの失敗、あるいは肥大化したファイルを生む原因になります。それぞれの形式は、作られた時代とそれが解決すべき課題に応じて、現実的な設計上のトレードオフを行っています。そのトレードオフを知っておけば、あるタスクに正しい形式を選ぶことは容易になります。
CSVは実際に何が得意で、どこで破綻するのか?
CSV(カンマ区切り値)は、構造化フォーマットとしてはこれ以上ないほどシンプルです。プレーンテキストで、1行に1レコード、値はカンマで区切られています。これにより、表計算ソフト、データベース、これまでに作られたほぼすべてのデータツールで普遍的に読み込むことができます。すべての行が同じフィールドを持つレコードの一覧のような、フラットで表形式のデータには非常に適しています。しかし、フラットな表を超える実質的な構造がデータにあった瞬間に破綻します。ネストしたオブジェクト、一対多の関係、あるいは正当にカンマや改行を含むフィールド(CSVの実装によって扱いが一貫していません)は、いずれもCSVが本来想定していた範囲を超えてしまいます。
なぜJSONは、特にWeb APIのデフォルトになったのか?
JSONのオブジェクトと配列という構造は、現代の多くのプログラミング言語がメモリ上でデータをすでに表現している方法とほぼ直接対応しており、JSONのペイロードは最小限の変換作業でネイティブなデータ構造に直接パースできることが多いです。これは、データの生成と消費の両方における速度と簡潔さが重要なWeb APIにとって大きな実用上の利点です。また比較的コンパクトで人間にも読みやすく、そのバランスの良さから、Web APIが普及するにつれて自然なデフォルトとなり、XMLの方が先に存在していたにもかかわらず、新しいAPI設計ではXMLをほぼ置き換えることになりました。
XMLにできて、JSONには構造上できないこととは?
XMLは、要素に対する属性(その内容とは別に、タグ自体に付随するメタデータ)、名前空間(異なる出所の語彙を組み合わせる際の名前の衝突を避ける仕組み)、そして有効な文書が正確に何を含んでいなければならないかを厳格に定義・強制するための、成熟した正式なスキーマ検証の仕組み(XSD)をサポートしています。これらは、よりシンプルなオブジェクト/配列モデルであるJSONがネイティブには提供していない機能です(JSON Schemaも存在しますが、登場したのが後で、普及度もそれほど高くありません)。これが、厳格な文書検証、複数の語彙が混在する文書、あるいはJSONの台頭以前から存在する古くからのエンタープライズや政府系のデータ標準を必要とする領域で、XMLが今も使われ続けている理由です。
なぜCSVをJSONのようなネスト構造に変換するには、単なる機械的な変換以上のものが必要なのか?
CSVにはネストという概念がなく、すべての行はフラットです。そのため、CSVのデータを階層構造をサポートする形式(例えば、複数の明細行を持つ注文をJSONで表現するような場合)に変換するには、フラットな行をどのようにネスト構造に対応させるかという実質的な判断が必要になります。各行を個別のトップレベルのオブジェクトにするのか、それとも同じIDを共有する複数の行を、ネストした配列を持つ1つのオブジェクトにまとめるのか、といった判断です。このマッピングの判断は、CSVのデータだけからは復元できません。データの実世界における関係性を理解している必要があり、だからこそ「CSVをJSONに変換して」と依頼しただけでは、構造が指定されていない場合、技術的には有効でも実際には使い物にならない結果になることがあります。
ファイルサイズやパース速度は、3つの形式で意味のある違いがあるのか?
本当にフラットで均一なデータであれば、CSVが一般的に最もコンパクトです。構造上のオーバーヘッドがほとんどなく、レコードごとに繰り返されるタグ名やキー名がないからです。JSONは、XMLの閉じタグの冗長性がないため、同じネストしたデータに対してXMLよりもコンパクトですが、より簡潔な配列ベースのエンコーディングを使わない限り、各オブジェクトでキー名が繰り返されるため、CSVよりはオーバーヘッドが大きくなります。XMLは通常、開始タグと終了タグが冗長なため、同等のデータに対して3つの中で最も大きくなりますが、これが決め手になることはめったにありません。それよりも、その連携作業に実際に必要な構造的な機能とツールのエコシステムの方が重要です。
