Ajax
テンプレート:Otheruseslist Ajax(エイジャックス[1][2]、アジャックス[3]、テンプレート:要出典範囲)は、ウェブブラウザ内で非同期通信とインターフェイスの構築などを行う技術の総称[4]。XMLHttpRequest(HTTP通信を行うためのJavaScript組み込みクラス)による非同期通信を利用し、通信結果に応じてダイナミックHTMLで動的にページの一部を書き換えるというアプローチを取る[5]。
AjaxはAsynchronous JavaScript + XML の略で、2005年2月18日に米国のインフォメーションアーキテクトであるJesse James Garrettにより名付けられた[5][6][7]。
概要
従来のWebアプリケーションでは、サーバにリクエストを送信後、レスポンスを新たにウェブページとして受け取ることで画面遷移が発生していたが、Ajaxにより画面遷移を伴わない動的なWebアプリケーションの製作が実現可能になる[1]。 例えばWeb検索に応用することで、従来は入力確定後に行っていた検索を、ユーザがキー入力をする間にバックグラウンドで行うことによってリアルタイムに検索結果を表示していくといったことが可能になる。
上記の機能は、Webブラウザのみで動作する(別途プラグインを要求しない[4])、既存の技術の組み合わせであることが特徴[4]。技術自体はこの用語が発生する前から存在していたが、Ajaxという名前が付けられたこと[6]、GoogleがGoogle マップやGoogle サジェストにこの技術を利用したことで有名になり[6]、Webアプリケーションの可能性を広げるものとして注目され始めた。さらに、Googleでは、デスクトップアプリケーションと遜色のない電子メールクライアントであるGmailやGoogle Calendarでも積極的にAjaxを採用し、Ajaxの実用性がGoogleのWebアプリケーションを通じて世間に認知されはじめている。
AjaxによるWebプログラミング(Webアプリケーション製作)が注目されだした背景には、この従来のページ遷移のみに頼ったWebの使い勝手の悪さ[1][7]に対する不満や、XML、DOMなどのWeb関連技術の標準化(ウェブ標準)、および高い機能を持ったWebブラウザの普及などが挙げられる。
また、ダウンロード型アプリケーションは、マニア層から先に広がりにくい、競合がOSメーカーとなったときに競争に負けてしまう、といった問題を抱えているため、ダウンロード型アプリケーションからWebアプリケーションに切り替える技術として、Ajaxが利用されている。
DHTMLが登場した当時は、単にお遊び要素に過ぎないと考えられていた動的ページだが、JavaScriptをより効果的に使うことで、業務や実用に耐える優秀なインターフェースを備えたアプリケーションをHTMLで作ることが可能であったという事実を世の中に知らしめたという意義を持つ技術である[6]。
問題点
従来の技術の組み合わせであるため、それぞれの持つ問題をそのまま内包する。 例えば、各種Webブラウザ間のDHTMLの実装の違いをコードで吸収する必要がある。
実際、Ajaxを実現する技術はブラウザ間で実装に違いがあり、基幹技術であるXMLHttpRequest実装の元となったInternet Explorerの実装の解説ではXMLHttpRequestという用語は見あたらず、ActiveXでMicrosoft XML (MSXML)機能を呼び出して実行する。Internet Explorer 6では、Microsoft XML 3.0が付属しているため[8]、ActiveXを無効にしていない限りこの機能が使える。Microsoft XMLの実装ではバイト配列を取り出せるなど機能的な違いもある。言語としてVBScriptが使える点も異なる。
また、Ajaxアプリケーションでは動的にページの一部が書き換えられる為、デザインとコードが以前のように単純に分離できないという開発上の問題点がある(Model View Controllerも参照)。このため、現在では通常のWeb開発に比べ開発により時間がかかると言われている。
Ajax の必要性が叫ばれるにつれこうした問題を解決すべく、アプリケーションフレームワークの開発が進み、これらを利用することで、こうした問題は解決しつつある。
Ajax 用アプリケーションフレームワーク
Ajaxフレームワークとしては以下のようなものがあり、それぞれについて特徴がある。
これらを利用することで、ブラウザの互換性に関する問題を解決することが出来、またデザインとコードの分離といった Web 開発の効率性を高める工夫を取り入れることも可能になるとされている。
Spry は、Adobe CS のような統合開発環境に組み込まれていたり、Prototype は、Ruby on Rails などの Web アプリケーションフレームワークの一部として統合されるなど、さまざまな Web 開発ソフトウェアの一部として組み込む動きも広がっている。
補足
非同期メソッドはAjax独自のものなのかと勘違いしやすいが、HTML DOMにはXMLHttpRequest以外に以下のような非同期メソッドが存在する。
- Image#src, HTMLImageElement#src
- Window#location (HTMLIFrameElement, HTMLFrameElement)
- HTMLScriptElement#src
- DHTML Behavior (#default#download)
現在はAjax関連技術としてXMLHttpRequestを全く使わないプログラムまでが取り上げられるようになっており、JavaScriptを効果的に使用して動的なWebサイトを作る手法全般をAjax関連と広く捉える傾向も巷に存在する。
参照
関連項目
- Web 2.0
- XML
- JavaScript
- ダイナミックHTML
- Document Object Model
- Model View Controller
- ECMAScript
- XML-RPC
- WDDX
- Adobe Integrated Runtime
- Silverlight
- オープン標準
- Comet
- Ext JS
- Prototype JavaScript Framework
- ZK (フレームワーク)
- MooTools
- jQuery
- WebSocket
外部リンク
- Google マップ(Google ローカル)
- Google Suggest - 日本語 Google サジェスト
- Ajax掲示板
- Ajaxな日々
Toolkits
- Ajax Toolkits, AJAX toolkits.
- Ajax.NET Professional, first .NET framework.
- Atlas、マイクロソフトのAJAXツールキット。
- Dojo Toolkit、AJAX/DHTMLツールキット。
- DWR
- Ext JS
- Prototype, open-source framework.
- Sajax, Simple AJAX toolkit
- Rialto, Rich Internet AppLication TOolkit.
- ZK, Ajax but no Javascript. Demo
- Google Web Toolkit, Build AJAX apps in the Java language.
- jsLINB, OOP ajax toolkit.
- jQuery, jQuery.テンプレート:Link GA