2006 年 10 月 4 日 23 時 58 分

Asynchronous JavaScript + XML (Ajax)


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


XMLHttpRequest は、COM クラスであるため、
XMLHttpRequest は Intenet Explorer 上で動作する、
JavaScript や VBScript から利用することができる。

Intenet Explorer はセキュリティ設定を持っているため、
COM クラスは一般的に利用することはできないのだが、
XMLHttpRequest は、スクリプト言語等で利用する際に、
Web ブラウザのセキュリティ設定に従い、
安全な処理が可能であるという情報が登録されている。

そのため、XMLHttpRequest はインターネットゾーンで、
警告なく利用することが可能ということである。
(利用者側で、警告を出すように設定することも可能だ)

つまり、Web ページの製作者が、
XMLHttpRequest クラスを利用した JavaScript を書き、
「利用者の Web ブラウザ上で実行できる」ということだ。

これが何を意味するか。

XMLHttpRequest と Dynamic HTML を組み合わせると、
とんでもなく強力な UI 表現として機能するのだ。
この手法には最近になって名前がつき
Asynchronous JavaScript + XML (Ajax) と呼ばれる。

Ajax 自身は新しい技術ではなく、
以下の既存の技術の組み合わせである。

・XMLHttpRequest(非同期 HTTP 通信)
・JavaScript(クライアント側プログラミング)
・Dynamic HTML + DOM
・Web サービス(これは必須ではない)

Ajax の最大のポイントは、
Web ページの表示や画面遷移の効率化である。

利用者がボタンやリンクを選択した際に、
別の URL に遷移させることなく、
裏で XMLHttpRequest で非同期にデータを取得し、
データのダウンロードが完了したタイミングで、
Dynamic HTML + DOM で Web ページの一部を書き換える。
これにより、画面遷移が非常にスムーズになるのだ。

XMLHttpRequest は非同期に通信することができる。
利用者が Web ブラウザを操作している裏で、
データをダウンロードしたり、送信したりすることができる。
そのため、ダウンロード中であっても、
利用者は他の操作を継続することができる。

例えば、Ajax を使って Web メール機能を作った場合、
利用者が「送信」ボタンを押してメールを送信しても、
それを裏で行わせることが可能である。
その場合、メールを送信している最中でも、
利用者は、別のメールを読んだり書いたりすることができる。

従来では、リンクやフォームの送信を行う際は、
別の Web ページに遷移するため、
まず現在の Web ページの画面が消去されたあと、
新しいページがダウンロードされ、再度画面が表示された。

ブロードバンドの普及に伴い、通信速度は向上したが、
いくら回線速度が速くなっても、
Web ページの遷移で生じる画面のちらつきは防げない。

また、ページの遷移を行った場合、
利用者の入力したフォーム情報や画面のスクロール位置等は、
完全にリセットされてしまう。

Dynamic HTML を駆使すれば、それらを防ぐことができ、
通常のアプリケーションソフトウェアの表現力に
近いことが可能となるのだ。

XMLHttpRequest のこのような活用方法は、
常に Web 技術の先端を進んでいる Google が、
これを活用したデモを公開したことで、
一気に知名度が高まったといわれている。

■Google Suggest
http://labs.google.com/suggest/

これにより、XMLHttpRequest に注目が集まり、
現在では、先進的な Web ブラウザには
XMLHttpRequest が標準で搭載されている。

W3C もこの流れを受け、
XMLHttpRequest の標準化を進めているようだ。

■The XMLHttpRequest Object
http://www.w3.org/TR/XMLHttpRequest/

さて、Ajax には弱点も存在する。
Web ブラウザの種類や機能に大きく依存することだ。
これは、クライアント側プログラミングの宿命である。

DOM に関しては、実装がある程度安定しているが、
XMLHttpRequest に関しては、
まだ標準化への試行が始まった段階であり、
Web ブラウザによって流儀が異なる。

また、Ajax を最大限活用するためには、
JavaScript による UI イベント処理が必要不可欠だが、
これもなかなか難しく、一筋縄ではいかない。

JavaScript も言語機能だけしか標準化されておらず、
Web ブラウザ上で利用できるオブジェクトに関しては、
これまた各社実装が異なるのだ。

W3C も windows オブジェクトの標準化や、
DOM の改定でイベントモデルを明確化したりと、
色々と動いている様子はあるが、
このあたりはまだまだ混沌としている。

しかしながら、これほどの難問を抱えているとしても、
Ajax の持つ利点は非常に大きく、魅力的な技術である。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.