Ajax について

ちょっとここ最近、本の購入履歴と感想のブログみたいになってきてるので、ちょっとまじめなことも書こうかと思って「Ajaxとは」ってお題で書こうと思ってたのですがなかなか文章にならないんです。小奇麗に話の流れとかを考えてかっちょ良く書こうと思うと、いぃーーーってなってしまって(謎)いっつも途中でやめてしまってました。なので言いたいことだけ書きます。

Ajax ってのは Technology ではなく Technic です。

世間様ではたまに以下のようなことがまことしやかに言われてます。

まず「XmlHttpRequest をつかえば Ajax だ!」ですが、まったくどっちでもいい話です。いや、たしかに Ajax 的 Web アプリケーションは XmlHttpRequest をほとんど使っているのですが、じつはあの Ajax アプリケーションの代表格のような扱われ方をしている Google Map は XmlHttpRequest を使ってません。「非同期に地図情報を取得して・・」とよく書いてありますが、あれは HTML の img タグを生成したときにブラウザが読み込んできているのであって、わざわざ XmlHttpRequest でとってきてません。Google Map を Ajax という傍らで XmlHttpRequest が必要というのは矛盾しています。ちなみに IFrame を使っても似たようなことをするのは可能です。ですので AjaxXmlHttpRequest は必ずしも必要ありません。必要なのは「非同期である」事です。非同期であることでユーザーの操作をブロックせずフレンドリーな体験を実現することが重要なんです。

AjaxXML でやり取りするんだ!」ですが、こんなのめんどくさいです。ちなみにここでは XmlHttpRequest でやり取りすることを前提に書いてます。わざわざ XML 形式でとってきてわざわざパースするなんてめんどくさいッたらありゃしない。やり取りする相手の性質によって XML のほうがいい場合も確かにあります。いろんなクライアントから呼ばれることが前提で作られているサービスとかね。でも、そうでない場合 Ajax って名前がついてても所詮 HTTP でのやり取りなので テキストだろうが HTML だろうが送信できるのです。じゃ、 JSON 形式で送ってもらってそのまま JavaScript にバインドすれば言いやんとか、 HTML で送ってもらってそのままはりつければいいやんって結論に自然に至ってしまいます。なので Ajax の x が XML だからといって XML にしなければならない必要なんてこれっぽっちも無いのです。

Ajax をつかえばすごいことが出来る!」。これについては夢見すぎです。というより間違ってます。 「Ajax をつかえば」という表現自体が気持ち悪かったりします。Ajax という具体的な何かがあるわけではないのです。なにかの仕様やらライブラリがあるわけでは無いのです。既存技術の組み合わせでしかないのです。それをもってして「Ajax をつかえば」という表現は何も無いのにどうやって使うのよっていう疑問がわいてしまうのです。だから何も無いのですごいことも出来ないのです。再発見された救世主でも何でもありません。

Ajax の技術的要素は以前からある DHTML や CSSJavaScript です。XmlHttpRequest が大々的に取り上げられて認知されて情報が増えて、非同期のデータ取得が容易に可能であることが周知されたとはいえ、先にも書いている通り IFrame でも以前から同様のことが出来ていたのです。なにも特別に新しいこともすごいことも無いのです。既存の技術が複合的にしようされて、よりユーザーフレンドリーに、よりダイナミックするためのパターンやテクニックの上に構築されたアプリケーションそのものが Ajax だと考えています。