Ajaxという未来をWEBという歴史にどう接続するか

Pragmatic Ajaxという本のベータ版が公開されている。これはAjaxという今最も注目されているWEBの技術についての解説書だが、徹底的に技術指向でありながら、深く考えさせる内容を含んでいる。

技術解説書というのは、読者に新しい技術を勉強させよう目論むものだから、「Ajaxって凄いよ!あれもできるよ!これもできるよ!こんなに嬉しいよ」という話に終始しがちなのだが、この本の最後の「7.2 It isn’t all Just Wine and Roses...」という章は、Ajaxの暗黒面に焦点を合てている。

技術の長所と同時に短所もきちんと理解して使うのが、まさに " Pragmatic "なやり方なのだが、同時に、そこには「未来をどうやって歴史に接続するか」という、技術を超えた難問に対する思索の結果が見えてくる。

この章は、まず「WEBとは何だったのか、なぜここまで受け入れられたのか」という問題提起から始まる。


Even though Ajax has this power to change the web so radically, it behooves us all as developers to remember why the web enjoys such broad acceptance. It is based around certain standards (technical and visual) that have allowed users of all stripes to take advantage of services provided there. Those standards, some written and some simply understood, are vital to the success of all applications on the web,whether or not they use Ajax.


(試訳)AjaxがWEBを急激に変革する力を持っているの確かだが、WEBがなぜこのように広く受けいれられたのかを忘れてはならない。WEBは、技術的にもビジュアル面でも確固とした標準の上に確立されている。だからユーザは、提供されているサービスをフルに活用できるのだ。その標準は、文書化されたものもあるし、ただそのまま理解されているものもあるが、それらが成功の核心である。Ajaxを使っていようがいまいが、WEB上の全てのアプリケーションの成功の鍵は、その標準(にいかに準拠できるかということ)なのだ。

Ajaxは、ただ便利になるだけではなくて、この標準をなるべく壊さないようにしないといけない。そのためには、我々が今立っている「歴史」の本質を理解し尊重しなくてはならない。それが著者の暗黙の主張だと思う。

その暗黙の標準、つまりWEBの歴史と、Ajaxという新しい技術が葛藤を起こすテーマとして、以下の項目を論じている。

  • Watch that back button!
  • Bookmarking makes the web
  • GET is for getting, POST is for doing
  • Tell People When Updates are Happening
  • Don’t Reinvent the Wheel

まず「戻る」ボタンについて、著者は次のように言う。


The back button isn’t just a button; its a symbol of freedom.


(試訳)「戻る」ボタンは単なるボタンではない。それは自由の象徴なのだ。

「戻る」ボタンがあることによって、ユーザは安心してある画面から次の操作を試すことができて、その結果、予期しない都合が悪いことが起きたら、いつでも「戻る」ことができる。つまり、「戻る」とは情報の探検におけるUNDO(「取り消し」)なのだ。

WEBの中では、いつでも「戻る」ことができるので、ユーザは、気軽にどこへも進める。それが「自由のシンボル」という意味である。

Ajaxでは、最初にページを開いてから、ユーザの操作によって、同じページの中で内容が更新される。場合によっては、サーバから持ってきた新たな文書が、まるまるそのページに埋めこまれる。その時、もしユーザがその操作を「取り消し」したいと思ったら、ブラウザの「戻るボタン」を押すことで、ページの内容を復帰できると期待するだろう。

しかし、期待に反して、そのページの前に見ていた全く関係の無いページまで戻ってしまう。「取り消し」の「取り消し」つまり「進む」ボタンを押すと、問題のページを最初に開いた状態に戻る。

これは、世界中のどのWEBページを見ていても、常にそこにあった「戻る」自由という、ユーザが暗黙にWEBブラウジングに持っていた期待を裏切る動作だ。

そして、これと似たような問題で、さらに深刻な問題がブックマークにある。


we use bookmarks for deep linking. This means capturing the state of the application or site at some point after you have begun interacting with it. Perhaps the results of a search at Amazon, or the report of your current holdings at your financial institution, or some particular article at the New York Times. Deep linking means that users have the complete ability to pause and return to your application.


(試訳)我々は(Googleによって大半のサイトのトップページに到着できる現在においては)主としてディープリンクの為にブックマークを使う。これは、自分が好き勝手にいじった後で、そのアプリケーションの状態を保存することだ。アマゾンの検索結果、あなたの財政状態とそれについてのアドバイスニューヨークタイムズの特定の記事。ディープリンクができるということは、その(WEBブラウズという)アプリケーションにおいて、いつでも状態を保存しておいて、好きな時にその状態を復帰できるということなのだ。

RESTという言葉こそ使ってないが、これは、REST=コミュニケーション指向BBもRemixableにされてPax Googlicaに飲みこまれるでしょうという記事で私が述べている、RESTの価値に通じる話だと思う。

WEBブラウジングというアプリケーションの状態は、ブックマークとして保存できるだけではなくて、URLによって他の人と共有できることに価値がある。ほとんど全てのWEBサイトが共通に持っている、こういう特性をAjaxは破壊してしまう可能性があるのだ。

Ajaxは、ひとつのページ(=URL)の画面の中で、対話的な操作を行ない、場合によってはサーバから持ってきた新しいデータでそのページの内容を書き換えていく技術だ。ということは、そのURLというのは、そのアプリケーションの中では、「開始時点」という意味しかない。

Ajaxなページの中で、対話的な操作を行なって、望むような、特定の結果が得られたとする。「その画面をブックマークに保存したい」とか「その画面を誰かに見せたい」という要求をかなえることができるのか。不注意なAjaxの使用は、それを不可能にしてしまう。

残りの3つの項目は、やや技術的に細かい内容だが、同様に「歴史に未来をどう接続するか」というテーマの具体的な問題を取りあげている。

もちろん、全てのクリック、全てのキーボード入力のたびに、新しいURLが割りあてられて、何がなんでも状態をブックマークできるべきであり、常に状態を「取り消し」できるべき、というのも非現実的だ。

完全に、「昔通りの懐しいWEB」しか許さないのであれば、Ajaxに限らず、新しい技術は導入できない。重要なのは、そこで少しだけ立ちどまって、それが本当にユーザにとって使いやすいものになるか、大局的に考えることだ。


Tactically, the change might increase the usability of this single page,but strategically, reduce the usability of the application as a whole.


(試訳)戦術的には、その変更によってそのページ単独の使い勝手はよくなるだろう。しかし、戦略的な目、より広い目で見てみると、その変更は、アプリケーション全体(サイト全体)の使い勝手にとっては、マイナスとなっているかもしれない。

自分がやろうとしていることが何なのか、それをユーザの立場から見ることができれば、それによって得るものと失うものを正しく比較検討することができる。

「続きを読む」が開いている画面をブックマークして、その「状態」を復帰した時に、「続きを読む」が閉じていても、問題ではない。しかし、ブックマークした時と別の文書がそのに現れたらユーザは混乱する。Ajaxによる操作でも、保存すべきものとそうでないものがあるだろう。

WEB全体に対してユーザが暗黙に期待しているものに、うまく適合させて、新しい操作を導入することは可能だ。Ajaxが、FLASHJavaアプレット、Active-Xと言った、過去の「動くWEBコンテンツ」と違う長所があるとしたら、そのような「未来を歴史に接合すること」において、構成要素が同じHTMLエレメント(+CSS)である分だけ有利であるということだろう。

しかし、それを使いこなすには、WEBの歴史に対して大局的な理解が必要になる。

未来を現在につなげるには、歴史を知り自分を知ることが必要なのだ。