Asynchronous JavaScript + XML
Webブラウザに実装されているJavaScriptのHTTP通信機能を使って、Webページのリロードを伴わずにサーバとXML形式のデータのやり取りを行なって処理を進めていく対話型Webアプリケーションの実装形態。
従来、Webブラウザを使ったWebアプリケーションでは、データをサーバに通知して処理結果を得るにはページ全体をロードしなおさなければならず、ネイティブアプリケーションのような操作性を得ることは難しかった。Ajaxでは、指定したURLからXMLドキュメントを読み込む機能を使い、ユーザの操作や画面描画などと並行してサーバと非同期に通信を行なうことで、サーバの存在を感じさせないシームレスなWebアプリケーションを実現することができる。
ちなみに、JavaScriptのHTTP通信機能自体は同期通信にも非同期通信にも対応しており、受信するデータ形式もXMLとプレーンテキストの両方を選べるため、プレーンテキストを同期通信する従来型のWebアプリケーションをページ遷移を伴わずに実現するといった使い方もできる。
この機能をたくみに使って、画面の切り替えなしにダイナミックに変化させるアプリケーションでギークたちの注目を浴びたのがGoogle Suggest, Google Mapsであった。この時点では、Ajaxというコトバは使われておらず、それが最初にブログ上に現れたのが、2005年2月18日であった。ユーザビリティで有名な米AdaptivePathのJesse James Garrettによる「Ajax: A New Approach to Web Applications」だった。
この有名なブログエントリーにあるAjaxの定義を転載しておく。
Defining Ajax
Ajax isn’t a technology. It’s really several technologies, each flourishing in its own right, coming together in powerful new ways. Ajax incorporates:
このAjax実現の仕組みは1999年から実装されており、手段となるJavascriptはそのはるか昔からある。その意味では新しいテクノロジーではなく、既存のツールをいかに使いこなすかという応用技術の問題であろう。日本においても、Googleが注目を集める以前からAjax手法を使ったアプリケーションが開発されている。JavaScriptだけでここまで実現できるのかと驚くほどのアクションRPGWebゲーム「TRIGRAV」(http://www.smokymonkeys.com/triglav/)は、2002年に開発されている。
Ajaxのデメリット
* XMLHttpRequestには「標準」がないため、文字コードやMIMEタイプの扱いについて、ブラウザによって微妙な違いがある
* JavaScriptの動作についても、ブラウザによって微妙な違いがある
* ブラウザのローカルキャッシュがAjaxの動作に影響を与える場合がある
* Ajaxエンジンからアクセスできるのは、元ページと同じドメイン内のURLに限られる
* プログラムの中身がユーザーに丸見えになる
Ajaxのメリット
* 柔軟な動作のRIAを実現できる
* ユーザー側にはプラグインが必要ない
* 商用の開発環境がなくても開発できる