オルタナティブ・ブログ > 栗原潔のテクノロジー時評Ver2 >

知財、ユビキタス、企業コンピューティング関連ニュースに言いたい放題

AJAXで一番大事なのはAでは?

»

新野さんのエントリーを読んで思ったのですが、AJAX(Asynchronous+Javascript+XML)で一番大事なのはA(非同期通信)なのではないでしょうか?Google Mapやgoo MapなどのAJAX系のWebアプリケーションを使うと、あたかもローカルなアプリケーションのようなスムーズさに感動しますが、これは、ユーザーの入力と関係なしに(非同期的に)、今見ている画面の周辺データをバックグラウンドで先読みしてるからですよね。これに慣れてしまうと、ボタンをクリックして、サーバとやり取りして、画面が更新されるのを待つという従来型のWebアプリケーションのUIがずいぶんとまだるっこしいものに感じます。

AJAX系のUIははユーザーとシステムがヘビーに対話する領域に向いていますので、オフィス系のアプリケーションにはベストフィットですよね。マイクロソフトのWebベースのメールクライアントであるOWA(Outlook Web Access)も、AJAX的な仕組みで動いているようです。前の会社でOWA使ってましたが、(ネットワーク帯域幅が潤沢にあるという条件で)ローカル・アプリケーションと遜色ない使い心地に感心しました。

そうなると、ワープロやスプレッドシートをAJAXで実装しようという考えが出てくるのは当然です。グーグルとサンの提携が発表された時にも、「Google Office登場か?」みたいな憶測がありました。ところが、サン社長のジョナサン・シュワルツ氏は、OpenOfficeのAJAX化にはあんまり乗り気ではないようで、自身のブログのエントリーで「アプリケーションの価値はプログラミング言語には関係ない」なんて主張をしています。

確かに、AJAXのJA(JavaScript)だけを考えればそうかもしれません。Java言語で書いたアプリケーションをJavaScriptで単純に書き換えただけではメリットはないでしょう(単に、ソースコードがわかりにくくなるだけ)。しかし、A(非同期通信)によるWebアプリケーションのUIの大幅向上を考えると、必ずしもそうは言えないのではと思います(シュワルツ氏本人にメール打って教えてあげたいくらいです)。システム・アーキテクチャ的には同期的にやり取りするのも非同期的にやり取りするのもそんな大きな違いはないかもしれませんが、ユーザー・エクスペリエンス的な違いは結構大きいのではないか(evolutionalではなくrevolutionalな違いがある)と思います。

さらに、非同期通信の効果を出すためには、ネットワークやエッジ・サーバの処理能力が高いことが求められますから、サンに限らずエンタープライズ系のベンダーにとって、AJAXは自社製品のデマンドを増加させる推進要因としても重要なのではと思ったりします。

Comment(11)

コメント

livinginabox

AJAX で "A"(非同期)が重要というのは、大いに同意します。"JA" 部分は、OWA もそうですが、開発環境としても ASP.NETで(たぶん JSF でも)実現されていることですしね。
ただ、「アプリケーションの価値はプログラミング言語には関係ない」ということにも、私も同意します。アプリが同じように動くのなら、「ユーザー」にとっては、どんな言語が使われたかということは関係ないと思います。
そして、OpenOffice の AJAX 化というのは、つまり Web 化ということですよね。これは AJAX を使うかどうかに関わらず、ハードルが高いと思います。OWA がよくできているといっても、ネイティブアプリとしての電子メールソフトが使えるなら、普通はそちらを使いますよね。Web 化された Office は、ネット接続が必須ですから、必ずしもネイティブアプリより価値あるものになるとは断言しにくいです。
余談ですが、AJAX という表現が出始めた頃の google サジェストも、ブラウザの履歴機能が無効になるので使わなくなりました。Web アプリの操作性の向上という点で、"A" がどのように効果を与えられるのかは、ほんとうに UI 設計者次第でしょう。もちろん、選択の範囲が広がるという重要な意味は持っていますね。

HN

というか、Aが強調されたアプリケーションは、既にウェブである必要はなく、通常のアプリケーションの優位性が確認されたに過ぎないでしょう。

最近でてきたWeb2.0というのは、どうも本質をとらえていない。私が見て取れた変化というのは、アプリケーションの拡張性、プラグインでプラットフォームを自由自在に扱える、という点にあると考えています。それはウェブの動きに関わらず、ソフトウェア全般にいえることであって、ことさらWebということを強調するのは、全体を見誤ってる印象があります。

HN

思うに、ちまたでは、Web2.0とかいっていろいろ強調されているけど、Contribute の一言でかなりのことが説明できるんだと思うんです。Contribute というと、これは Eclipse プロジェクトでよく目にする単語で、要するに、あるアプリケーションに、動的読み込み・プラグイン機構をソフトウェアに設定して、寄与したい人に門を開いておく、というものです。こんなのは、Photoshop のプラグイン機構をはじめとして、随分昔から普通にあったことです。それがOOPの広範な理解が広まったことや、実際に実装されるにいたる2005年に至って細かい改善もいきとどいてきました。その考え方がWebに入ってきた、ということなんでしょう。

インターネットの普及によって、その Contribute の傾向が強調される面はあると思いますし、これはソフトウェア開発の考え方を大きく変えることではあるでしょう。Contribute を受け付けないソフトウェアが大量にあり、プログラマも利用者も、Contribute を可能にするソフトウェアについてのメリットに、無自覚な面はかなりあって、このことについて議論しておかなければならないことは、多方面にわたってあるんでしょうね。

livinginabox

> Aが強調されたアプリケーションは、既にウェブである必要はなく
これはちょっとよくわかりません^_^; AJAX は Web ですよね。いくらWeb、Webといっても、Webアプリより、OSネイティブなアプリケーションの方が便利ということであれば、それに反論はありませんが。

HN

> ワープロやスプレッドシートをAJAXで実装しようと
> いう考えが出てくるのは当然

ユーザ・インターフェースの設計をしてきた専門家として申し上げると、そのような考えは、ありえないということです。

ウェブベースでHTTPリクエストと非同期なアプリケーションが有効なシーンは、かなり限定的なシーンにならざるをえません。

yoguro

Async → ページ全体を再描画することなく
JAvascript → WebBrowser上で動く(枯れた)言語で
Xml → (HTMLを含む)標準フォーマットのデータ形式で通信する技術ですから。どれも重要だと思います。元々はLAMPを推進するための、ウルトラポジティブな1つの手法にすぎないのに拡大解釈されすぎていて実態が見えにくいのだと思います。

またCPUのパワーバランスがPC>サーバになりつつあり、クライアントサイドのソリューションが増えるのもいいと思うのですが、FireFoxを使ってもjavascriptを正しく書くのがとても難しいので、利用するのは楽だけど作るのが大変な技術だと思いました。

それと、AJAXが有効なのはクライアントに一度にもってこれないほど変化の激しく莫大なデータを部分的に参照する作業に限られると思いました。
それ以外はDynamicHTMLとそう大きく変わらないなと思います。

livinginabox

まあ、"JAX" は、今まででも使われていたので「A があってこその AJAX」ということではないかと思います。
AJAX の実装はブラウザ・サーバー間のアプリケーションとして閉じるはずなので、データ交換に「標準」を持ち込むことがそれほど重要なのかどうかは、ちょっと疑問。
やはり "A"。
それが Office を Web 化しようという話につながるとは思えない、という点では HN さんに同意。

yoguro

サーバサイドのプログラミングを固定化しないという意味でX部分が重要なのです。CGI-PerlでもASP.NETでもX部分に互換性があれば後々サーバ側だけ書き換えることができます。
こういった流行的な技術では互換性が無視されがちなのに、最初から組み込まれていることが重要なのです。
もっとも、Ajaxの目指すところへ行くために「MSの作ったXMLHttpRequestクラスを利用しただけ」という見方もあるわけで、もどかしく感じます。
実際にいくつかのAjaxを謳うものをみたり、コーディングしてみた感触では、私の中でのAjaxはXMLHttpRequestもしくはそれと互換のあるものを利用していることが必須条件になっています。
Ajaxを謳っていてもブラックボックスなものは本末転倒じゃありませんか?個々のコンポーネントをいちいち評価するのは面倒なので、暫くの間、GoogleMap以外は本格的に利用することは無さそうです・・・

栗原潔

AとJAとXで何が一番大事かと言われれば、答えは「全部大事」しかあり得ませんので、エントリーのタイトルそのものがちょっとミスリーディングだったかもしれません。アプリケーションをJavaScriptで実装すればAjaxという雰囲気が世間的にあった(ジョナサンシュワルツ氏のブログ・エントリーでAjaxを単にプログラミング言語の問題としていることからも推定できるように)ので、それに対するアンチテーゼとして書いたつもりです。
ところで、ここおよび新野さんのエントリーにおけるAjaxの有効性に関する議論ですが、ちょっと話が拡散しているようなのでまとめます。
1)AjaxによりWebアプリケーションをローカルアプリケーション並みに使いやすく出来るか?
これは無理というか、議論してもしょうがないお話だと思います。Webアプリケーションならではのメリットを享受しつつ、できるだけUIを使いやすくするためにAjax(特にA)を使いましょうということであって、使いやすさだけを考えればローカル・アプリケーションの方が良いに決まっています。
2)AjaxのAによるUIの向上は限定的か?
Google Mapにおけるスムーズスクロール、Google Suggestによるキー入力単位のイベント処理と非同期検索、MSのOWAの旧バージョンと新バージョンの操作性の違いを見るだけでも「限定的」とは言えないと個人的には思います。
3) ワープロ、スプレッドシート等のAjax化は当然の動きか?
正しい動きかどうかは別として、米国を中心にこういうことをやろうとしている人々が増えているのは現象としてはありますよね。では方向性として正しいかというと、http://www.goofice.com なんかを見ると、機能を絞れば結構使えそうな気はします。
4) MS OfficeのAjax化には意味があるか?
これは意味があるか以前に、開発負荷と性能的に課題が大きすぎて非現実的でしょう。

個人的には、Google Map くらいが限界で。ここから先、複雑なユーザインターフェースが必要となる場面では、ウィンドウベースのアプリケーションで作ることを薦めたいんです。技術基盤を決定する際の決定的に重要なところですしね。

Google Map と Google Earth の違いを考えると分かりやすいですし。Outlook Web Access にしても、個人的にはやりすぎで、ちょっと不自然な気がします。Office についてくるあの Outlook のアプリケーションのほうが、使いやすいし、作りやすい。

無駄にサーバサイドの機能を使ってるシステムが多いのも事実で、適材適所というありきたりな話になっちゃうんですけど。限定的とはそういう意味で、Ajax が技術の中核になるシステムって、そんなに多くはないっていうことです。

yoguro

GoogleMapは以前のエントリーで書きましたので、
GoogleSuggestとMSのOWAについて少々。

GoogleSuggestも前のエントリでの書いたことと同じですが、大量かつ更新頻度の高いデータにアクセスするシーンですから、限定的だと思います。更新が月次バッチのマスター参照にAjaxを適用する意味は無いでしょう?
一般的には一覧参照系で絞り込みやソート切り替えを行うようなシーンでAjaxが活用できると良い物ができると思いますが、サーバ側の処理でアクセスパスとか動的なパフォーマンス劣化をどう対処するかが問題ですね。OLAP系をWeb化するには丁度いいかもしれません。

MSのOWA(Outlook Web Access)は従来からあるWebMailサービスにActiveXコントロールの追加とアドレス帳のオンライン化が進化したものだと捕らえています。ActiveXコントロール(OWA+IEの時)はAjaxと違って・・・という説明は不要ですね。(Mozilla系だとjsらしい)

javascriptが(ActiveXよりも、またはJavaAppletに近づいて、さらにソースをユーザが見れることで)だいぶセキュアになってDOM処理のパフォーマンスを容認できるくらいPCの平均能力が上がってきたことが、Ajaxを後押しする要因になっていると思っています。

コメントを投稿する