【超ざっくり解説シリーズ4】 データフォーマットとは?XML、JSON、CSVの違いや特徴についてわかりやすく解説するよ
とよももだよ!!
プログラミングを学習している人は「JSON」や「XML」、はたまた「データ形式」という言葉を聞いたことあると思う。だけど「データ形式とは何か」、や「JSON」と「XML」の違いなどについて知っているかな?
今日は「データ形式(データフォーマット)」についてと、「XML・JSON・CSV」の違いや特徴について説明するよ!
■ データフォーマット (データ形式) とは
「データフォーマット」は、特定の形式 (フォーマット) に当てはめられたデータの集まりのことだよ。その形式に入ったデータの集まりは、データ形式として、私たちが一度にたくさんのデータを簡単に扱うことができるようになるよ
いろんなデータフォーマットがあるけれど、現在の主流のデータフォーマットは「XML」「JSON」「CSV」の3つだよ
それぞれ特徴や使われる場面や違ったり、強みや弱みがあるので、一つずつ説明していくね
■ XML
「XML (Extensible Markup Language) 」は、1970年代にIBMの開発者によって生み出されたデータ形式だよ
HTMLのタグ(<a>や<img> <href>など)と似た「タグ」を使ってデータを表現するよ
もう少し詳しくいうと、HTMLは画像を表示したいときは<img>タグ、リンクを貼りたいときは<href>タグを使うなど、使えるタグとその機能がもう既に指定してあるよね
XMLはそれとは違い、私たちでタグの名前と機能を自由に定めることができるんだ。例えば下の図の「<CATALOG>」「<CD>」「<ARTIST>」などは、私が勝手に定めたタグだよ
XMLはもともとWEBサイト上でデータを表現するために開発されたんだけど、IT産業が発展していくにつれどんどん使われる幅が広がるに比例して、XMLを使用したプロトコルがどんどん作られていったんだ
だけど、XMLは独自の「タグ」や「属性」「名前空間」を作るので、データ送受信時にネットワークの帯域幅を大きくとってしまうという大きな欠点があるよ
そのため、代替案が考え出されたんだ。それが「JSON」だよ
■ JSON
「JSON (JavaScript Object Notation)」 は、2001年に開発されたデータ形式だよ。名前にJavaScriptと入っているように、JavaScriptから派生して生まれたんだ
XMLと比べてJSONはファイルサイズがとても小さくて軽いので、XMLに替わる通信用データ形式として、一気に人気が高まったんだ
「名前」と「値」をワンペアとしてデータを表現する構成になっているよ
下の図で言うと「"firstName"」が名前、「"Momoko"」が値だね
面白いことに、上の図ような形式のデータ構造はプログラミング言語によって呼び名が違ってRubyでは「ハッシュ」、JavaScriptでは「オブジェクト」と呼ばれているよ
■ CSV
最後に紹介するのが「CSV (Comma-separated Values) 」だよ。一番馴染みのあるデータ形式じゃないかな?
実は3つの中でCSVが一番歴史が古く、1972年にIBMがサポートを始めたんだ
名前の通り「コンマ ( , ) 」で区切って一つ一つのデータを表現するんだ。「シンプル&コンパクト」がCSVの一番の特徴だよ
複数の階層でデータが表現される「XML」や「JSON」とは違い、CSVは「一階層のみ」でデータ表現するという、とてもシンプルな構成なんだ。使いやすい反面、複雑なデータの表現はできないという欠点があるよ
さらにコンマとコンマの間の値(データ)が何を示しているのかわかりにくかったり、データ構造の変更に弱いという弱点もあるんだ。
これらの理由から、CSVは使うことのできる幅が狭いんだよね。結果的に、ビジネスの場面など一般のユーザが使うデータはCSVがよく使われるけど、HTTP通信など、深くて複雑な技術的な場面では、JSONやXMLが使われるよ
■ まとめ
「XML」「JSON」「CSV」の違いをそれぞれ理解できたかな?
プログラミングをしていると、「JSONファイルが〜・・・」という言葉をよく聞くけど、それは「JSON」が一番軽く、技術的な使用用途に適していたからなんだね
この3つ以外にも、ゲーム業界でよく使われる「MessagePack」など、色々なデータ形式があるよ。興味があれば調べてとよももに是非教えてね!
■ お世話になった参考資料たち
■ Quora: What are some popular data formats?
■ Quora: What is a CSV file and its uses?
■ Quora: What is XML?
■ A brief history of the CSV
■ Youtube: XML vs JSON
■ stack overflow: What is JSON and why would I use it?
■ 広告だじょ〜
株式会社X-HACKではプログラミング初学者向けの勉強会や、複数回に渡るプチスクールを開催しています興味がある方はこちらのconnpassページをご確認ください
Twitterで「#xhack勉強会」と検索しても色々と情報が見れます!
■ この記事はTwitterでも公開しています
Qiitaでも記事書いてます!