JSONとXMLの詳細、パート1:各標準の歴史
公開: 2022-03-11デスクトップからWeb、モバイルに至るまで、現在使用しているほぼすべてのコンピューターアプリケーションは、JSONとXMLという2つの主要なメッセージ標準のいずれかに依存しています。 今日、JSONは最も広く使用されている形式ですが、過去5年以内にXMLを追い抜いただけです。 「JSONvs。XML」をオンラインですばやく検索すると、2つの標準を比較する無数の記事やブログ投稿が表示され、JSONの単純さを称賛し、XMLの冗長性を批判するバイアスが徐々に拡大します。 多くの記事は、JSONはその簡潔なセマンティクスのためにXMLよりも優れていると主張し、XMLを過去の非効率的で紛らわしい標準として割り引いています。 一見すると、JSONが最も人気があるようです。それで、JSONはXMLよりも単純に優れているのでしょうか。 「JSONvs。XML」の戦いは、表面的にはJSONに及ぶ可能性がありますが、詳細には、目に見える以上のものがあります。
この記事のパート1では、次のことを行います。
- Webの歴史を詳しく調べて、XMLとJSONの本来の目的を明らかにしてください。
- 近年のソフトウェアトレンドの進化を考慮して、JSONがXMLよりも人気になった理由を確認してください。
JSONとXMLの歴史
XMLよりもJSONが人気の理由を明らかにするために、Webの歴史と、Web1.0からWeb2.0への進化が開発のトレンドにどのように影響したかを調べてみましょう。
Web 1.0:HTML
1990年代初頭は、Web1.0の黎明期でした。 HTMLは1991年に導入され、大学、企業、政府機関でWebの言語として広く採用されました。 HTMLは、1970年代にIBMによって発明されたSGML、つまり「StandardGeneralizedMarkupLanguage」に由来します。 大量採用に加えて、HTMLは大量適応を見ました—マルチメディア、アニメーション、オンラインアプリケーション、eコマースなどをサポートするために拡張機能が埋め込まれました。 SGMLの派生物として、HTMLには、企業が元の概念を超えた要件を満たすために自由に拡張することを制限するための厳密な仕様がありませんでした。 NetscapeとMicrosoftの間で最も人気のあるWebブラウザをめぐる争いは急速な進歩をもたらしましたが、それはまた、標準の絶え間ない断片化につながりました。 激しい競争の結果、2社によるHTMLの拡張により、ブラウザが独自のバージョンのHTMLをサポートするようになったため、「発散の大惨事」が発生しました。 開発者がブラウザ用の相互運用可能なコードを書くのに苦労したため、この分岐の大惨事はWebアプリケーションにとって大きな問題になりました。
Web 1.1:XML + HTML = XHTML
1990年代後半、Jon Bosak、Tim Bray、James Clarkなどの人々のグループが、「eXtensibleMarkupLanguage」というXMLを思いつきました。 SGMLと同様に、XML自体はマークアップ言語ではなく、マークアップ言語の定義の仕様です。 XMLはSGMLからの進化であり、構造化されたコンテンツを定義および実施する手段を提供するように設計されています。 「コンピューティングの聖杯」と見なされている1XML言語は、「異種システム間の普遍的なデータ交換の問題を解決する」ために努力しました(Dr. Charles Goldfarb) 2 。 HTMLの継続的な断片化の代わりに、ワールドワイドウェブ委員会(W3C)が設立され、ワールドワイドウェブの新しい標準の採用における業界間の互換性と合意を促進しました。 3 W3Cは、HTMLをXMLアプリケーションとして再形成し、その結果XHTMLになりました。
XHTMLは、XMLに注目を集めた大きなイニシアチブでしたが、XMLのほんの一部にすぎません。
XMLは、業界があらゆるアプリケーションにカスタムマークアップ言語を厳密なセマンティクスで指定する方法を提供しました。 キーワードが「厳密なセマンティクス」であるため、XMLは、任意のXMLサブ言語の任意のXMLドキュメント内のデータの整合性を主張できる標準を定義しました。 異種システムとインターフェイスする分散型エンタープライズアプリケーションを開発しているソフトウェア会社にとって、データの整合性を主張できるマークアップ言語は重要でした。 XMLを使用して構造化コンテンツを定義することにより、企業はこのテクノロジーの機能を活用して、任意のプラットフォームと相互運用し、すべてのデータ交換のデータ整合性を強化し、システムのソフトウェアリスクを体系的に削減しました。 業界にとって、XMLは、あらゆる種類のデータを保存、通信、および検証するテクノロジーを、あらゆるプラットフォーム上のアプリケーションが簡単に読み取って処理できる形式で提供しました。 HTMLの場合、XMLは「発散の大惨事」を解決することを約束しました。
Javaと.NET
2000年代初頭、WebはSunとMicrosoftの2つの会社によって管理されていました。 当時、プログラミング言語の状況はサーバー側に大きく傾いていました。 Webアプリケーションの一般的なアーキテクチャは、ブラウザに配信されるバックエンドでHTMLページをレンダリングするサーバーに依存していました。 このアプローチはバックエンドテクノロジーを浮き彫りにし、それが今度は主要なバックエンドプラットフォームであるJavaとC#.NETを普及させました。 サンマイクロシステムズによって開発されたJavaは、新しい世代のオブジェクト指向プログラミング言語を主導し、その斬新な「どこでも実行したら書き込み」 4アプローチでアーキテクチャ間の問題を解決しました。 Microsoftは、.NET、C#、および共通言語ランタイム(CLR)に続き、データの相互運用性のパズルを解決するための選択アプローチとしてXMLに注目しました。 Microsoftは、XMLの最大の支持者となり、同社は、その著名な.NETイニシアチブの不可欠な部分としてXMLを選択しました。 「 XMLWebサービスのプラットフォーム」として宣伝されている5.NETアプリケーションは、他のプラットフォームとの通信にXMLを使用するように設計されています。 Microsoftのデータ交換標準として選択されたXMLは、SQLServerやExchangeなどの主力サーバー製品に統合されました。
Web 1.2:AJAX
事前にレンダリングされたHTMLページのブラウザへの配信はスケーラブルではなく、Webには代替手段が必要でした。 サーバーから新しいページをロードする必要があるユーザーアクションごとに、より多くの人々がWebを拡大するにつれて、プロセスの負荷と帯域幅の消費が懸念事項になりました。
NetscapeとMicrosoftは、ActiveXとJavaScriptの非同期コンテンツ配信でこの問題に取り組むよう努めました。 1998年、Microsoft Outlook WebAccessチームはActiveX6の背後にある概念を開発しました。これは、後にMozilla、Safari、Opera、およびその他のブラウザによってJavaScriptでXMLHttpRequest
オブジェクトとして実装されました。
AJAXは、MicrosoftのActiveXとNetscapeのJavaScriptから生まれました。
「非同期JavaScriptおよびXML」の略であるAJAXという用語は、ページをリロードすることなくバックグラウンドでサーバーと通信するWebアプリケーションを実装するために使用できる幅広いWebテクノロジーを表すようになりました。 AJAXという用語を作り出した記事で、 7 8 JesseJamesGarrettが主な概念を概説しました。
- プレゼンテーション用のHTML(またはXHTML)とCSS。
- データの動的表示およびデータとの相互作用のためのドキュメントオブジェクトモデル(DOM)。
- データ交換用のXML、およびその操作用のXSLT。
- 非同期通信用の
XMLHttpRequest
オブジェクト。 - これらのテクノロジーを統合するJavaScript。
サーバーの負荷を軽減し、かなりの帯域幅を節約することが証明された非同期コンテンツ配信により、AJAXはゲームチェンジャーでした。 ブラウザへのXMLHttpRequest
の導入により、開発者はフロントエンドでより複雑なロジックを実装できるようになりました。 Googleは、2004年にGmail、2005年にGoogleマップを使用して標準に準拠したクロスブラウザAJAXを幅広く展開しました。9そして、2004年10月、Kayak.comのパブリックベータリリースは、AJAXの最初の大規模なeコマース使用の1つでした。 10
Web 2.0:シングルページアプリケーション
WebアプリケーションのスケーラブルなアーキテクチャとしてAJAXが採用されたことで、Web 2.0の夜明けが始まりました。シングルページアプリケーション(SPA)です。 11ユーザーとの対話ごとにページ全体をリロードする代わりに、SPAはブラウザ内で現在のページを動的に書き換えます。 サーバーの負荷と帯域幅の消費を大幅に削減することに加えて、SPAアプローチでは、ユーザーとの対話中にシームレスで中断のないエクスペリエンスを実現することで、Webアプリケーションをデスクトップアプリケーションに似せることができました。
2002年4月、 StuartMorrisはslashdotslash.com12で最初のSPAの1つを作成し、同じ年の後半に、Lucas Birdeau、Kevin Hakman、Michael Peachey、およびEvanYehが米国特許8,136,109でシングルページアプリケーションの実装について説明しました。 13この特許は、JavaScriptを使用してユーザーインターフェイスを表示し、アプリケーションロジックを実行し、Webサーバーと通信するWebブラウザーについて説明しています。
GoogleのGmail、Googleマップ、およびKayakのパブリックベータは、Webアプリケーション開発の新時代を引き起こしました。 AJAXで有効化されたブラウザーにより、開発者はWeb用の豊富なアプリケーションを作成できます。 JavaScriptの簡単なセマンティクスにより、あらゆるレベルのプログラマーがアプリケーション開発を行うことができました。 ソフトウェア開発への参入障壁は大幅に軽減され、世界中の個々の開発者が独自のライブラリとフレームワークで貢献し始めました。 さまざまなメーカーのブラウザ間でAJAXの動作を正規化するjQueryのような人気のあるライブラリは、AJAX革命をさらに前進させました。
JSONの台頭
2001年4月、ダグラスクロックフォードとチップモーニングスターは、モーニングスターのベイエリアガレージにあるコンピューターから最初のJSONメッセージを送信しました。 CrockfordとMorningstarは、「AJAX」という用語が造られるずっと前にAJAXアプリケーションを構築しようとしていましたが、彼らが達成しようとしていたことに対するブラウザーのサポートは良くありませんでした。 彼らは、ページが読み込まれた後にデータをアプリケーションに渡すことを望んでいましたが、これをすべてのブラウザーで機能させる方法を見つけられませんでした。
2001年、AJAXの開発は始まったばかりで、Internet Explorer5とNetscape4には相互運用可能なXMLHttpRequest
オブジェクトがまだありませんでした。そのため、CrockfordとMorningstarは、両方のブラウザーで機能する異なるアプローチを使用しました。
最初のJSONメッセージは次のようになりました。
<html><head><script> document.domain = 'fudco'; parent.session.receive( { to: "session," do: "test," text: "Hello world" } ) </script></head></html>
このメッセージは実際にはJavaScriptを含むHTMLドキュメントであり、今日私たちが知っているように、メッセージのごく一部だけがJSONに似ています。 CrockfordとMorningstarは、上記のようなHTMLドキュメントを返すURLを<iframe>
にポイントすることで、データを非同期で読み込むことができました。 応答を受信すると、HTMLのJavaScriptが実行され、サブウィンドウが親にアクセスできないようにするブラウザー保護を回避することで、オブジェクトリテラルがアプリケーションのメインフレームに戻されました。 このフレームベースの手法は、「隠しフレーム手法」と呼ばれることもあり、 XMLHttpRequest
が広く実装される前の90年代後半に一般的に使用されていました。 14

このアプローチは、すべてのブラウザー間で相互運用性を提供するため、開発者にとって魅力的でした。 メッセージは単なるJavaScriptであるため、特別な解析は必要ありません。 このようにJavaScriptを使用するという考えは非常に単純だったため、Crockford自身は、彼が最初にそれを行った人物ではないと述べました。彼は、Netscapeの誰かが早くも1996年にJavaScriptを使用して情報を伝達していたと主張しています。15
CrockfordとMorningstarは、あらゆる種類のアプリケーションで使用できるものがあることに気づきました。 彼らはフォーマットに「JavaScriptObjectNotation」の略であるJSONという名前を付けました。 彼らはそれを顧客に売り込み始めましたが、すぐに多くの人が公式の仕様を欠いた新しい技術にチャンスをつかむことを望まないことに気づきました。 それで、クロックフォードは彼がそれを書くことに決めました。 2002年に、CrockfordはドメインJSON.orgを購入し、JSON文法とパーサーのリファレンス実装を作成しました。 ウェブサイトはまだ稼働していますが、2013年に承認されたJSON ECMA標準への目立つリンクが含まれています。16ウェブサイトを公開した後、CrockfordはJSONを宣伝するためにほとんど何もしませんでしたが、すぐにさまざまなプログラミング言語のJSONパーサー実装を提出する人々を見つけました。 JSONの起源は明らかにJavaScriptと結びついていますが、JSONが任意の言語間でデータを交換するのに適していることが明らかになりました。
AJAXのJSON
2005年、ジェシー・ジェームズ・ギャレットはブログ投稿で「AJAX」という用語を作り出しました。AJAXは1つの新しいテクノロジーではなく、「それぞれが独自の方法で繁栄し、強力な新しい方法で統合されるいくつかのテクノロジー」であると強調しました。 16彼のブログ投稿では、開発者がJavaScriptとXMLHttpRequest
を活用して、通常のWebページよりも応答性が高くステートフルな新しい種類のアプリケーションを構築する方法について説明しました。 彼は、AJAX技術を使用したWebサイトの例として、Gmail、Googleマップ、およびFlickrを指摘しました。 「AJAX」の「X」はXMLを表していますが、Garrettは完全に受け入れ可能な代替手段としてJSONを指摘しました。 彼は、「XMLはAJAXクライアントにデータを出し入れするための最も完全に開発された手段ですが、JavaScriptObjectNotationや同様のデータ構造化手段を使用して同じ効果を達成できない理由はありません」と書いています。 17
JavaScriptとJSONは、明確に一緒になることを意図していました。 JSONのセマンティクスはJavaScriptに直接マッピングされ、言語のネイティブデータ交換形式になります。 開発者はすぐに、JSONはJavaScriptでの操作が簡単であることに気付き、多くの人がXMLよりもJSONを好むようになりました。
JSONがブロゴスフィアの注目を集めるにつれて、JSONの急増が始まりました。
JSONがXMLよりも人気になった理由
JSONは、JavaScriptアプリケーションのデータのネイティブ形式です。 過去10年間のJavaScriptの普及により、他のどのデータ形式よりも多くのJSONメッセージが作成されました。 JavaScriptでアプリケーションを作成するには、データ交換にJSONを使用する必要があります。 他の形式も可能ですが、JSONよりも多くの労力が必要です。 JavaScriptがアプリケーション開発で人気を博しているため、JSONは、使いやすく、ネイティブに統合されたデータ交換形式として、それに続いています。
ブロゴスフィアに関する限り、JavaScript(したがってJSON)については、他のどのプログラミングプラットフォームよりも多くの記事、サンプル、チュートリアルが作成されています。
Webの歴史と進化の道は、JSONの普及に重要な役割を果たしてきました。 Stack Overflowによると、JSONについては、他のデータ交換形式よりも多くの質問が寄せられるようになりました。 18
Googleトレンドによると、JSONとXMLの検索インタレストを比較した同様のプロファイルが見られます。 19
JavaScriptの急増は、JSONがXMLよりも優れていることを意味しますか?
開発者コミュニティは、JSONは、その簡潔な宣言型スコープと単純なセマンティクスのために、XMLよりも人気が高まったと主張しています。 Douglas Crockford自身が、JSON.orgでのJSONの利点のいくつかを要約しています。「JSONは、構文が最小限で構造が予測可能であるため、人間とマシンの両方にとって理解しやすいものです。」 20 XMLに対する他の批評家は、「アングルブラケット税」としてのXMLの冗長性に焦点を当てています。 21 XML形式では、各開始タグを終了タグと一致させる必要があります。その結果、非圧縮時にXMLドキュメントが同等のJSONドキュメントよりも大幅に大きくなる可能性のある冗長な情報が生成されます。 そして、おそらくもっと重要なこととして、開発者は次のように述べています。「XMLドキュメントが読みにくくなります。」 22
JSONは、その単純さと簡潔なセマンティクスのためにすぐに賞賛され、XMLは、その冗長性と一見過度の複雑さのために、過去の時代遅れの標準としてラベル付けされています。 多くの記事やブログ投稿では、JSONをXMLと比較する際の視点が限られているため、読者はJSONがXMLの代わりになると信じています。 これはそうではありません!
記事やブログ投稿によって提供される限られた視点により、読者はXMLを廃止されたものとして割り引くようになり、ソフトウェアのアーキテクチャと変更に対する回復力を向上させ、ソフトウェアのリスクを体系的に削減するのに役立つ強力な機能に多くの人が気づいていません。
今日最も広く使用されている言語としてJavaScriptが優勢であるため、JSONはXMLよりも人気があります。 過去10年間のJavaScriptのソフトウェアトレンドの影響により、JSONは他のどのデータ交換形式よりもますます注目を集め続けています。 ブロゴスフィアは、「JSONはXMLよりも優れている」とすぐに反響しますが、ほとんどの場合、これらのステートメントは正当化されないままであるか、セマンティクスと冗長性に関する単純な比較に裏打ちされています。 では、どちらの標準ももう一方の標準よりも優れていますか? この質問への答えは、各規格のより深い評価からのみ得られます。
結論
1990年から今日まで、ウェブは長い道のりを歩んできました。 NetscapeとMicrosoftの間のブラウザ戦争は、HTMLの分岐の大惨事を引き起こし、Webを保存するためのソリューションが必要でした。 XMLはXHTMLを形式化するために発明され、全体としてコンピューティングのための聖杯ソリューションを提供しました。 バックエンドサーバーによる完全なHTMLページのレンダリングからAJAXやSPAに至るまで、Webアーキテクチャとブラウザー開発のトレンドによりJavaScriptに焦点が当てられ、世界中の開発者がJSONに向かっています。
JSONの人気はJavaScriptの人気と相関しています。 JavaScriptは、使いやすさと学習曲線が短いため、他のどの言語よりも多くの新しい開発者がソフトウェアを作成できるようになりました。 JSONが最も人気のある開発プラットフォームとネイティブに統合されているため、Stack OverflowでのJSONについて、他のどのデータ交換形式よりも多くの質問が寄せられるのは当然のことです。
近年のソフトウェアトレンドにより、より多くのJavaScript開発者が業界に登場し、JSONは「最も人気のあるデータ交換フォーマット」の称号を獲得しました。
表面的には、「JSON対XML」の戦いはJSONに行きますが、深くは、目に見える以上のものがあります。
この記事のパート2では、JSONとXMLの技術的な長所と短所を詳しく調べ、一般的なアプリケーションと企業に対する各標準の適合性を評価します。 「データ交換」を詳しく見ると、アプリケーション全体のソフトウェアリスクに対するその影響の幅が明らかになります。 JSONとXMLの根本的な違いをより深く理解することで、開発者はプロジェクトの要件に関連して各標準のソフトウェアリスクをより適切に評価できるようになり、開発者はより安定していて、バグや将来に対してより耐性のあるソフトウェアを構築できるようになります。不明。
ちなみに、JSON仕様の興味深い癖は、子プロパティが親プロパティを参照する双方向の関係を持つJavaScriptオブジェクトをJSONに変換できないことです。 これを行うと、 Uncaught TypeError: Converting circular structure to JSON
する結果になります。 この制限を回避するためのハックについては、JSONでの双方向関係のサポートを参照してください。
参考文献
1.インターネット:歴史百科事典。 年表、第3巻、p。 130(ABC-CLIO、2005)
2.メタデータ、セマンティクス、オントロジーのハンドブック、p。 109(世界科学、2013年12月)
3. WebDiy.org-World Wide Webコンソーシアム(W3C)-歴史
4.「JavaSoftはJava1.0を出荷します」(SunMicrosystems、1996年1月)
5.次世代インターネットを空間的に有効にする(David Engen、2002年1月)
6. XMLHTTPのストーリー(AlexHopmann.com、2007年1月)
7. Ajaxの開始-2ページ(Wiley Publishing、2007年3月)
8. Ajax:Webアプリケーションへの新しいアプローチ(Jesse James Garrett、2005年2月)
9. Ajaxの簡単な歴史(Aaron Swartz、2005年12月)
10.「Kayak.comとは何ですか?」 (企業の背景説明、2008年10月)
11.内部ブラウジング:ブラウジングナビゲーションパラダイムの拡張(Netscape、2003年5月)
12.「DHTMLを使用した自己完結型のWebサイト」(SlashDotSlash.com、2012年7月)
13.クライアント側の操作を可能にするデータとフォーマット情報の配信(米国特許局、2002年4月)
14.「Ajaxとは何ですか?」 Professional Ajax、第2版。 (Wiley、2007年3月)
15. Douglas Crockford:JSON Saga(Yahoo!、2009年7月)
16. ECMA Standard 404(ECMA International、2017年12月)
17. Ajax:Webアプリケーションへの新しいアプローチ(Jesse James Garrett、2005年2月)
18.スタックオーバーフローの傾向(スタックオーバーフロー、2009-2019)
19. Googleトレンド(Google、2004-2019)
20. JSON:XMLの無脂肪代替手段(Crockford、2006年)
21. XML:アングルブラケット税(コーディングホラー、2008年5月)
22. Xml Sucks(WikiWikiWeb、2016)