JavaScriptのパラダイムシフト「Ajax」
JavaScriptに何が起きているの?
最近、Ajaxという言葉が流行っています。「Ajax」は、Asynchronous JavaScript + XML(非同期なJavaScriptとXML)の略 ですが、技術そのものではなく、JavaScript+CSS+DOM+XML+XMLHttpRequest+サー バーサイド(PHP、Perl、Java、DB、、、)といった、いわゆるWeb関連の技術を新しいやり方で組み合わ せ連携させることを指しています。
具体的には、現在は、Google Maps や Google Suggest、amazon A9.comなどがその 実例として取り上げられることが多いようです。
実際に使ってみると理解が早いと思いますが、Google Mapsでは、まるでFlash で作ったかのようなリッチな地図アプリがぐりぐりと動作します。Google Suggestでは検索入力を一文字入れる毎に検索候補リストとヒット数が即座に書き換わり表示 されていきます。
ここで「へぇ! JavaScriptでやってるんだぁ。」と感心しつつも、ふと、疑問 が頭をよぎります。
「でも、、、何が新しいの?」
All aboutのJavaScript読者の方々には「今までも、できたよね。」と感じる人 も多いでしょう。確かに、フレームやsrc属性などを利用した、ページを書き換 えないダイナミックなロードテクニックは昔から存在しました。
そして、XMLHttpRequestオブジェクトのようなHTTPクライアントな仕様も、 WindowsがMSXMLではじめて実装して以降、 2.6(2000年1月[*1])でバージョンアップし、MozillaがIEに互 換サポート(2001年11月[*2])してからでもすでに4年(2005年現在)も経っています。また、 Microsoft.XMLDOMのDOMDocumentオブジェクトなどにも同様の機能が実装されて います。
なにが、変ったのでしょう? 私は、おそらくは、Googleが見せたような、こ の技術群を使った特徴的なWebアプリが目に見える場所で生まれ始めたというこ とと、まさにそれらに触発され「Ajax」という命名が行われた、ということかな? と感じています。
Ajaxの提唱
Ajaxという「ことば」が生まれた場所ははっきりしています。 Jesse James Garrettが書いたコラム「Ajax: A New Approach to Web Applications」 (2005.2.18/[和訳*5])です。Googleなどを例にあげて、Web アプリケーション開発における新しいアプローチの 実例として紹介し、そのサイト Adaptive Path で彼らが「 Ajax と 呼んでいる」と述べたその単語が、またたくまに世界に広がりました。2005.2.18は大げさかもしれませんが、それまで、世界中の多くの人々が漠然 と思っていた概念に名前が与えられた日となりました。
標準化へ
そもそも、このような機能は、W3CのDOM3にあるLoad and Saveによって勧告さ れています。しかし、2004になって勧告されるはるか以前にIEとMozillaは、まっ たく異なる形でXMLHttpRequestを実装しており、amazonやGoogleなどは、すでに存在する安定 したこれらの技術を積極的に利用し始めたのです。その結果、MacのデフォルトブラウザSafariは1.2においてXMLHttpRequestオブ ジェクトのサポートし[*3]、OperaはGoogle Gmailに対応すると明言しつつ2005 年4月リリースのOpera8.0でサポートしました[*4]。Linuxなどのkonqueror3.3 などでも使えるようになってきています。
そして、これらの実装を追いかけるように、たとえば、W3CではThe XMLHttpRequest Objectが草案として検討されつつあり、また、 whatwg が作成している Web Applications 1.0の草案でも、「8.2. Scripted HTTP: XMLHttpRequest」 があり、各ブラウザがIEに互換しつつ実装してきたプロパティとメソッドがその まま、すべて定義されています。Webで起きた多くの事柄と同様に、実装が標準仕様に先行していくかたちです。
次ページ
[*1]【IE】Windows
MSXML 2.6(msxml2.dll 2000年1月web配布、同梱はIE6、WinXP、SQL Server 2000から)
Microsoft XML パーサーのバージョン一覧
http://support.microsoft.com/default.aspx?scid=kb;ja;269238
MSXML IXMLHTTPRequest
http://msdn.microsoft.com/library/en-us/xmlsdk/html/xmobjxmlhttprequest.asp
[*2]【Gecko】Windows,Mac,Linux,etc... (Mozilla/Firfox/etc...)
XML Extras
http://www.mozilla.org/xmlextras/
nsIXMLHttpRequest Interface Reference
http://unstable.elemental.com/mozilla/build/latest/mozilla/extensions...
[*3]【KHTML】Mac,Linux,etc... (Safari,Konqueror)
Dynamic HTML and XML: The XMLHttpRequest Object
http://developer.apple.com/internet/webcontent/xmlhttpreq.html
[*4]【Opera】Windows,Mac,Linux,etc...
An Interview with Opera
http://operawatch.blogspot.com/2005/01/interview-with-opera.html
search for "XMLHttpRequest"
http://www.opera.com/search/search.cgi?words=XMLHttpRequest&start=1&end=17
[*5] Ajax: A New Approach to Web Applications
http://www.adaptivepath.com/publications/essays/archives/000385.php
和訳 Ajax: Web アプリケーション開発の新しいアプローチ
http://antipop.zapto.org/docs/translations/ajax.html
[*6]パラダイム-シフト [paradigm shift]<
科学者集団に共有されているパラダイムが、ある時点で革命的・非連続的
に変化する局面のこと。 『大辞林 第二版 (三省堂)』