檜山さんの■[雑記/備忘]ブラウザでミニマムXML (1):全般的なこと、注意事項などの以下の部分を読んで思ったことがあります。(強調部分について)
ついでに、Ajaxへのコメントをひとつ付け加えておけば、Ajaxの'X'がXMLに由来するとしても、Ajax応用にXMLが必須というわけではありません。実のところ、AjaxとXMLのつながりは意外と希薄なのでは、と思っています。多くの場合、XMLより、JSON、YAML、CSVなどのほうが便利です。特に、JavaScriptとの相性ならJSONがベストでしょう。昨今、JSONやYAMLが台頭してきたのは、XMLにとっても良いことだと思います。なぜなら、XMLが適切に相対化されるためには、適切な非XML概念が必要ですから。
これと、xml-usersメーリングリストのAjaxの長所・短所・実装に関するメモ (暫定版)のスレッドの[xml-users 9292]以下のやり取りを対比させてみます。
まず何から手を付けるかという相違 §
この話の流れを見ると、私と大村さんの間には、決定的な違いがあることが読み取れます。
つまり、私はXMLHttpRequestオブジェクトにおいて、XML文書を扱うことが当然の前提であるという態度を取り、最初のテストプログラムで何のためらいも疑問もなくXML文書を扱うように組み、そしてトラブルにはまっています。
しかし、大村さん(と彼と同じメーリングリストの仲間)は、まずテキストファイルによる事例で試し、それが成功した時点で調査が完了してしまっています。
このような点から考えると、世間一般の目から見たAjaxにおけるXMLの存在感は、おそらく希薄であろうと思います。
しかし立場を変えてみるならば §
世間一般のこのような視点は、それはそれとして了解しましょう。
しかし、全く個人的な特定の人物の認識もそれに合わさねばならない必然性は無いと思います。私個人としては、XML文書をクライアントサイドで処理する手法の復権としてのAjaxに多いに好感を持っています。(その好感が、他人と互換性のないものであるとしても)
ある種のミニマリズム §
しかし、この好感は、必ずしも一般性がないとも思っていません。
というのは、AjaxアーキテクチャでXMLを使うことは、ある種のミニマリズムに対して合理性を持つという感触も感じているからです。
ここでいう「ある種のミニマリズム」とは、ざっくばらんに言えば、ある程度の複雑さを持った応用を実現するためのコード量の最小化です。
「ある程度の複雑さを持った応用」では、データ構造もそれ相応に複雑化します。そのようなデータ構造のデータを、生のテキスト形式で記述することは、それを解析するコード量の増加を招きます。それと比較すれば、WebブラウザにビルドインされたXMLパーサに解析させ、DOM経由で値を取得する方が、コード量を減らせると思います。また、XML以外のより良い別の言語を使うという選択は、それをパースするコードを追加する必要が生じて、やはりコード量を増加させる懸念があります。
つまり、テキストを前提に話ができるのは、「ある程度の複雑さ」に達していない段階での一時的な現象に過ぎず、それが分かっているからこそ、Ajaxの原典ではわざわざXMLの名前を強く出しているのではないかと思うのです。
更に、Ajaxの長所・短所・実装に関するメモ (暫定版)で表明した通り、Ajaxとは分散システムであるという立場を取るならば、ブラウザ側の都合だけで言語を決めることができなくなります。当然、サーバ側はJavaScriptではないことが多いと思うので、異種言語間のコミュニケーションという観点から、どの言語にもライブラリが用意されている可能性が高いXMLを採用することに、メリットを見出せる可能性があります。
余談 §
全く余談ですが。
実は、「変化を抱擁する」ネットワークアプリケーションのアーキテクチャとしてAjaxは優れているのではないかと感じています。
個人的には、他のどのような特徴もオマケのようなものに過ぎないかもしれないとすら思います。
つまり、「変化を抱擁する」データベースとしてのXMLデータベースと「変化を抱擁する」アーキテクチャとしてのAjaxが、「変化を抱擁する」開発方法論としてのエクストリームプログラミング(かもしれないもの)によって結び付けられたときに、相乗効果で大きな力を発揮する可能性があるかもしれないという感触です。
単なる感触で、それが正しいという根拠は全くありませんが。
というか、このような根拠のないたわごとは信じないのが健全な態度でしょう (笑。
余談の上塗り §
そうか。「余談」のような解釈を取るなら、次の課題はブラウザベースのコードに対するテスト駆動開発の方法論の確立だな……。既に取り組んでいる人達がいると思いますが。