最近、世間ではAjaxというものが流行っています。
これに私は興味があります。
それはなぜか。
それには2つの理由があります。
XMLの良好な応用事例として §
XMLの使い方には、たいていの場合、誤った使い方は存在しません。
それが的確にニーズを満たしていれば、それは誤った使い方とは言えないのです。
しかし、本来の使い方は存在します。
たとえば、XMLとは論理的な文書を作成するための技術であって、それに物理的な表現(色やフォントなど)を与えるのはスタイルシートを使うべきである、というのは本来の使い方の1つです。もっと言えば、論理的な文書に、表を記述するTABLE要素などというものを導入するのは好ましくないという考え方もあり得ます。つまり、それが価格表には「価格表」要素を、連絡先表には「連絡先表」要素を導入して、意味の違いを明示的に把握可能にせよ、という主張があり得るのです。
このような考え方は、これまで必ずしも理解されてこなかったと言えます。文書の論理表現と物理表現は、常に明確に分離されていたとは言い難いのです。
ところが、Ajaxを使うと、この2つは必然的に分離されます。なぜなら、AjaxはXML文書を非同期に取得してDynamic HTMLによってページ上に表現するために、物理表現は常に中間に入るJavaScriptコードが生成することになるからです。もちろん、物理表現を含むXML文書を受信して、そのままDynamic HTMLによってページに挿入してしまうことは可能であり、その場合は2つの表現は分離されません。しかし、Ajaxならではの長所を活かそうとするなら、物理表現はきめ細かくJavaScriptコードによって制御される必要があり、あらかじめ物理表現を入れたXML文書をサーバから送り出すことに、さしたる意味は感じられません。
つまり、今までと違うXMLの使い方が可能ではないか……、というのがAjaxに興味がある理由その1です。
それ、昔やってたよ! §
2番目の理由は、もっと個人的なものです。
日本で出版された最初のXML関連書籍は、おそらく村田真さんのXML入門だと思います。
おそらく、その次に出たのが私の書いた「XMLコンテンツの作り方」(東京電機大学出版局)です。なんと1998年、7年前に出た本です。
この書籍で紹介したサンプルソースは、HTMLとJavaScriptを使用したリッチなクライアントでした。MSXMLオブジェクトを使用してサーバよりXML文書を読み込み、DOMによりデータを得て、Dynamic HTMLによってページを組み立てます。
要するに、XMLHttpRequestオブジェクトを使用していないという点を除けば、ほとんどAjaxと言っても良いものを扱っていました。
このやり方は、すぐに廃れました。
その理由は2つあります。
1つは、これがInternet Explorerでしか利用できなかったこと。
もう1つは、すぐにXSLTという新しいトレンドが出てきて、多くの人達の興味はそちらに流れたこと。更に言えば、XSLTもInternet Explorerでしか利用できず、トレンドは最終的にサーバ側の処理に落ち着きます。
しかし、時代が一巡して、これらの弱点は消失しました。
今や、XMLHttpRequestオブジェクトは主要なWebブラウザの全てで使用できます。
また、インタラクティブ性の向上という目的にに照らせば、XSLTのような変換スクリプトでは目的に上手く適合しません。いやAjaxでもXSLTは使うようですが、やはり主役はJavaScriptになります。
つまりですね。
「おう、なんてこったい! すっかり時代遅れのロートルになったと思いきや、ふと気付くと最先端に立っていたのか!」
小さなこえでボソボソ言うだけの補足 §
でも上記の本は、XMLに関して間違いがたくさんあるから、全てて信じてはだめだよ~。
実は、明らかなバグも入ってるし。というか、初期のマイクロソフトのXMLパーサ(たぶんXMLが勧告される前のリリース)は、勧告に違反する実装になっているので、これに合わせて作ったらバグったというべきか…… (汗。