みなさんはGmailやGoogleサジェスト、あるいはMapionやGooの地図サービス(いずれも実験中)を利用したことがあるだろうか?画面の切り替えが少なかったり、地図をマウスでドラッグできたり、これまでのウェブサイトにはなかった使い勝手が実現されている。
既存技術を組み合わせたAjax
これらのサイトではAjax (「エイジャックス」と読む。オランダの名門サッカーチーム、アヤックスのことではない)と呼ばれる新しい技術(の組み合わせ)が用いられている。Ajaxとは”Asynchronous JavaScript + XML”の略称である。JavaScriptとXMLという技術自体は新しいものではないが、これらの技術の組み合わせに特徴がある。
従来のウェブアプリケーションでは、ユーザは何か作業をするたびにページが切り替わるのを待たされていた。ブラウザはサーバとユーザを結ぶ単なる入出力インタフェースにすぎず、サーバとブラウザが通信している間は待つしかなかった(単純な入力文字のチェック程度はJavaScriptで実現していたが)。
Ajaxではブラウザ側にもアプリケーションの機能の一部を持たせる。ユーザのアクションのうち、ブラウザ側で処理できるものは処理をし、必要となったデータだけをサーバに要求する。通信中もユーザは作業を続行できるため、無駄な待ち時間を減らせる。地図サービスであれば、地図のスクロールはブラウザに任せ、その間に周辺の地図データをダウンロードするという具合だ。
ウェブアプリケーションのユーザビリティが向上
以前のTake IT Easyでもウェブアプリケーションの問題点を取り上げた。フォーム入力の問題解決への一つのアプローチとしてFlashを紹介したが、Ajaxにも期待したい。たとえば、入力データは入力と同時にバックグラウンドでチェックできるため、データ送信後の確認画面で問題点を指摘されて画面を戻る必要はない。また、画面を戻る必要がなければ、気づいたらフォームの中身がクリアされている、という恐ろしい事故もなくなる。
あるいは、こちらの書籍検索システムのように、ページの一部分だけを書き換えることもできる。Ajaxを利用しても検索速度自体が早くなるわけではないが、必要なデータだけを受信すれば通信時間が短くてすむし、画面の更新に伴うちらつきが少ないので、精神衛生上も好ましい。
個人的にはグループウェアが使いやすくならないか、と期待している。今のシステムでスケジュールを入力しようと思うと、「新規スケジュール」をクリック→開始時刻・終了時刻の設定→内容入力→保存という手順を踏む。Ajaxを利用すれば、開始時刻〜終了時刻をドラッグで指定→内容入力(自動保存)という非常に簡単な手順にすることも可能なはずだ。
同様の機能はFlashを用いれば実現できるが、Ajaxはプラグインが不要、かつ、技術がオープンな標準にのっとっている(FlashはMacromedia社の技術である)という点で優れているといえよう。
互換性とセキュリティには注意が必要
なんとも便利そうなAjaxであるが、いくつか問題もある。
まず、開発者にとっては新しい考え方なので技術の理解が必要である。また、サーバとブラウザの双方にプログラムを記述するため、どうしても見通しの悪いプログラムになってしまう。さらに、高機能を求めて大量のJavaScriptを1つのページに書き込むことによって最初のページ読み込みが遅くなる可能性がある。サーバとブラウザの機能の切り分けは難しそうだ。技術の普及とともに解説書や開発フレームワークが整備されることを期待したい。
また、Ajaxの中心的な役割を果たしているJavaScriptには以前から互換性やセキュリティの問題が指摘されている。JavaScriptの互換性の問題のために、ウェブアプリケーションが特定のブラウザでしか動作しない、ということはよくあることだ。AjaxではJavaScriptの占める割合が高まるため、より注意しながら開発する必要がある。
セキュリティには新しい問題がある。従来であればアドレスバーを見ればどこのサーバにアクセスしているのかわかったが、Ajaxではバックグラウンドで通信しているサーバがどこのサーバなのかわかりにくい。もしかすると悪意のあるサーバと交信するようプログラムされているかもしれない。この問題に対しては、(セキュリティ対策の基本だが)怪しいサイトにはアクセスしない、重要な情報を書き込まない、という意識をユーザが持つしかない。
Ajaxは新しい概念である。利点も欠点もあるが、応用方法はアイディア次第だ。成熟しきってしまったかと思われたウェブアプリケーションにもまだまだ進歩の余地がありそうだ。普通のアプリケーションと同等以上の操作感を持ったウェブアプリケーションの登場もそう遠くはないだろう。