AJAX [AJAX]
AJAX(Asynchronous JavaScript and XML)
以下の要素を用いインタラクティブなWebアプリケーションを 構築するための開発手法を表現した造語です。
- XHTML と CSS を使用した標準的なプレゼンテーション
- Document Object Model を利用した動的な表現およびインタラクション
- XMLとXSLTを利用したデータの送受、操作
- XMLHttpRequestを使用した非同期のデータの送受
- 上記を統合するためのJavaScript
AJAX という技術自体があるわけではありません。AJAXは、JavaScript の組み込みクラスである XMLHttpRequest の非同期通信を利用して、ウェブブラウザ上でインタラクティブなWebアプリケーションを実現するための開発手法です。これを Jesse Jaames Garrett氏が2005年の2月に AJAX という造語で表現したのがはじまりとなります。
AJAXという造語を提唱したギャレット氏の定義は上記のとおりですが、技術的な観点から捉えた
本質的な点は、「1つのWebページの中で非同期にサーバと通信をおこなうことで、Webページの
遷移とは依存せず動的にWebページを更新する技術」です。 (ギャレット氏もAJAXアプリケーションでは、XML および(または) XSLT を使用しないとならないわけではないと訂正されています。(AJAX: A New Approach to Web Applications参照))
AJAX を用いて構築されたWebアプリケーションの代表例には Google Suggest や Google Maps が挙げられます。Google Suggest は検索語句を一文字入力するごとに、絞りこんだ候補を表示します。システムでは、検索語句が入力されるたびにサーバと非同期通信をおこない、絞り込んだ候補を取得してます。初めて AJAX のアプリケーションを見たときには、FlashやJava Appletを使用せずに画面遷移を伴わず候補が絞り込まれていくことに非常に衝撃を受けました。 有用な用途としては以下のような分野が考えられます。
○有効な用途
- オートコンプリート
入力文字列を基に後続の文字列の候補を補完する機能(辞書、メールアドレス等) - 詳細情報の表示
郵便番号を入力したら、その住所を表示する機能等 - 可視性操作性の向上
ツリー表示、メニュー、プログレスバーを画面遷移することなく表示する - 表示データの更新
天気、株価など日々刻々と変化するニュースをサーバーに随時問い合わせ更新する - サーバー通知機能
一定時間ごとにポーリングすることで、サーバからの情報を取得して表示を更新する。
話題になっているAjaxですが、実際のプロジェクトに導入するためには現時点では以下のような考慮すべき点があります。
- 現時点では標準仕様とはいえない。
AJAXの中核となる技術である XMLHttpRequest は、現時点では W3C や ECMA の標準仕様には含まれておらず、一部のWebブラウザではサポートされていないことに注意する必要がある。 - Ajaxが動作するブラウザの範囲
Operaでは8からサポート, IEの古いバージョンでは未サポート。また、セキュリティ等の事情で JavaScript を無効に設定している Web ブラウザでは、もちろん AJAX アプリケーションは動作しない。 - デバッグの難解性
JavaScriptとサーバアプリケーションを連携させテストをおこなう必要があり、デバッグは容易とはいえない。 - セキュリティ
JavaScriptのコードを解析することでサーバ側のプログラムの構造を推測され、クラッキング等の不正アクセスに繋がる恐れがある。 - サーバに対する負荷
随時情報をサーバに問い合わせるため、サーバに与える負荷も大きくなることが予想される。
レスポンスと性能のバランスをどうするかを明確にする必要があると思われる。
最近の記事や関連アプリケーションに関して少し調査してみました。以下で、少し紹介してみます。
Articles
- AJAX: A New Approach to Web Applications
AJAXという造語が生まれた場所
http://www.adaptivepath.com/publications/essays/archives/000385.php - Ajax in Action のサンプル公開(Chapter 4)
http://www.theserverside.com/articles/article.tss?l=AjaxinAction_CH4_PT1 - Developing AJAX Applications the Easy Way(05/08/25)
複数ユーザのWEBベースのチャットサイトをDWRで構築した例
クライアントおよびサーバ両方のコードが100行程度で簡単なチャットサイトを実現しています。
http://today.java.net/pub/a/today/2005/08/25/dwr.html - AJAX(Wikipedia)
AJAX関連のリンクが一通りそろっているかと思います。
AJAXを使用したアプリケーション、記事、ライブラリ、各種言語版のツール(.NET, Java, PHP等)
http://en.wikipedia.org/wiki/AJAX - Ajax for Java developers: Java object serialization for Ajax
http://www-128.ibm.com/developerworks/java/library/j-ajax2/ -
Google and Yahoo maps APIs released
http://www.theserverside.com/news/thread.tss?thread_id=36240
Tools
- DWR 1.0 released(ライセンスはApache License, Version2)
AJAX のWEBサイトを構築することを支援するためのJava用のライブラリ
http://getahead.ltd.uk/dwr - ・Echo2
AJAXベースのWebアプリケーションフレームワーク
http://www.nextapp.com/products/echo2/
ライセンスはMozilla Public License(もしくは、もし好むならLGPL)との記述がある。 - 汎用デバッグ用Javascript(AJAXに限らない。) from Bobchin's Wiki
http://bobchin.ddo.jp/wiki/index.php?cmd=read&page=Javascript%2F%A5%C7%A5%D0%A5%C3%A5%B0
サンプル
- google map との連携をおこなう rails アプリケーション
http://map.rails2u.com/ - ObjectGraph:AJAXを利用した辞書アプリケーションの例(by google)
http://www.objectgraph.com/dictionary/
せいさく0319と申します。
掲載されている日記を興味深く拝見させていただきました。事後の御連絡となりましたが、当方の記事にリンクをはらせていただき、日記を紹介させていただきました。
リンクをはらせていただいた件について、何か差しさわりがございましたら、その旨、御連絡ください。何分、ブログ初心者なもので、ご容赦ください。
また、よろしければ、今後とも、そちらのサイトを拝見させていただくつもりです。よろしくお願いいたします。
せいさく0319
サイト名 気になるブログ10件
mail:noguchi0319@mail.goo.ne.jp
http://plaza.rakuten.co.jp/kininaruburogu10/
by せいさく0319 (2005-08-31 15:17)
ご丁寧にどうもありがとうございます。最近は自分のblogを見直す時間もあまり割くことができず、長らく気づきませんでした。大変失礼致しました。今後もできる限りの努力をしてまいりますので、ご支援頂けますと幸いです。よろしくお願い申し上げます。
by tomo008 (2005-09-13 19:27)
あなたは下で働いている場合。 NETは、フリーライブラリPokeInと呼ばれます。 http://pokein.codeplex.com
by Jashua Newway (2010-04-15 21:48)