Webで扱うデータの変遷・テキスト、XML、そしてJSONへ | SiTest (サイテスト) ブログ

メニューボタン閉じるボタン

Webで扱うデータの変遷・テキスト、XML、そしてJSONへ

こんにちは、プロダクト開発チーム エンジニアの森永です。

Web上でデータのやり取りを行う際に皆さんはどのようなデータフォーマットを使用しているでしょうか?テキストでやり取りしたり、あるいは XML 形式のデータをやり取りするケースもあるかと思いますが、最近は JSON を使うケースが増えてきているような感があります。

スポンサーリンク

弊社でも SiTest 内でのデータのやり取り、あるいは mongoDB とのデータのやり取りにおいてJSONを使うことが多いです。

今回はWeb上でやり取りするデータの変遷、およびテキスト、XML、JSON 各方式の特徴について述べていきます。

なお、それぞれの形式について、以下のサンプルデータを各形式で表記した場合の表記例を併せて記載いたします。

サンプルデータ

テキスト

Webの黎明期は Plain Text をそのままやり取りするケースが中心でした。改行やスペースなどで区切り、サーバー側やクライアント(JavaScript)で処理を行ってブラウザ上での表示を行っていました。中でもカンマで区切る CSV は Excel との親和性が高く、使っていた方も多かった形式です。

記載例(CSV)

日本語,英語
犬,dog
猫,cat

テキストと区切り文字だけなのでサイズとしては小さく済むのですが、サーバー側での処理プログラムを作成するコストが大きく、特殊なケース(データ中に区切り文字が入った場合など)での不具合リスクが高いという問題点もありました。処理系によって文字化けが頻繁に発生していたという苦い思い出を持つ方も多いかと思います。

XML

汎用マークアップ言語 SGML の流れを受け継ぎ W3C のワーキンググループで仕様が策定された XML。 W3C が XML 1.0 を最初に勧告したのは1998年で(リンク先は2008年の最新改訂版である Fifth Edition です)、文書の構造化フォーマットとして評価が高いものでしたが、Web上でのデータのやり取りの手段として一気に広がったのはやはり Ajax が使われだした2005年頃からと言えるでしょう。

XML は、タグ(要素)でデータ(コンテント)を囲み、さらにデータを入れ子構造にできます。また、タグの名前を自由に設定することもできます。従って、構造やデータの可読性がテキストのみの場合よりもはるかに高いといえます(ただしインデントなどの工夫は必要です)。

さらに、文字コードも1行目に宣言するので処理系による文字化けのリスクはテキストの処理に比べると格段に減りました。

記載例(XML)

<?xml version="1.0" encoding="utf-8"?>
<data>
  <item>
    <日本語>犬</日本語>
    <英語>dog</英語>
  </item>
  <item>
    <日本語>猫</日本語>
    <英語>cat</英語>
  </item>
</data>

様々な処理系で XML パーサーが開発され、さらに先にも述べた Ajax の普及によりクライアント側でも JavaScript による処理が容易なため、今でも XML による処理を行っている所も多いかと思います。

JSON

上述したようにデータ処理として一気に広まった XML ですが、タグを挟む必要があるためデータ量はテキストよりも多くなり、その分処理のパフォーマンスも下がるという問題点がありました。

JSON はデータをタグではなく JavaScript のオブジェクトの形式で記述したものです。タグを記載する必要がない分データサイズは XML よりも削減することができます。さすがにテキストだけのデータよりは記述量は若干多くなりますが、オブジェクトと同じ記法であるため(インデントなどの工夫は XML 同様に必要ですが)可読性はテキストよりは高いといえます。

記載例(JSON)

[
  {"日本語" : "犬", "英語" : "dog"},
  {"日本語" : "猫", "英語" : "cat"}
]

JSON の仕様は2006年に RFC4617 で最初のものが規定され、2014年に最新版が RFC7159 で規定されました。文字コードについては RFC で UTF-8 の使用が指定されています。

JSON 最大の特徴はやはり JavaScript との親和性の高さでしょう。XML では JavaScript で扱う場合も何かしらの方法を使ってパースする必要がありましたが、JSON は JavaScript のオブジェクトで構成されているため、そのまま JavaScript で記述したプログラムで扱うことができます。また、JavaScript 以外を使った処理系でも JSON をパースして取り扱うケースが増えてきています。

また、XML よりもデータサイズが削減できることによりパフォーマンスの向上も期待できます。 json.org 内の比較ページでは「The Fat-Free Alternative to XML」という攻めた感のあるタイトルで XML と比較した時の JSON の優位性を説明しています。

Webで扱うデータ・イメージ画像

まとめ

ここまで述べてきたように、JSON は Web でのデータのやり取りで主流となりつつありますが、もちろん現在でも用途次第でテキストや XML を使うケースもあります。正しくデータを扱うために、それぞれのフォーマットの長所と短所を把握し、業務に活かしていきましょう!