第30回 Ajaxはじめて物語、そしてサーバでも動くJavaScript
株式会社ピーデー
川俣 晶
2008/2/25
ハイライト1・連載30回企画「Ajaxはじめて物語」
連載30回を記念して、Ajaxの歴史を簡単に振り返り、Ajaxが流行した理由について考えてみたいと思います。
■ 先日、3歳になった「Ajax」という言葉
「Ajax」という名前は、2005年2月18日に公開されたJesse James Garrett氏の「Ajax: A New Approach to Web Applications」によって、初めて世に送り出されました。これ以前に、Ajaxという言葉は使われていません。しかし、Ajaxは便利かつ強力であるため、即座に爆発的な普及を始めました。この勢いは、いまに至ってもまだ止まっていません。盛り上がりそのものはやや落ち着いてきたものの、新しい技術、新しい提案、新しい応用は出現し続けています。
■ Googleマップの出現で始まった「Ajaxブーム」
Ajaxブームの火付け役になったのは、Googleが提供した地図サービスの「Googleマップ」です。GoogleマップはそれまでのWeb上の地図と違って、マウスでドラッグすることで自由にスクロールできるという革新的な機能を実現していました。これは、「スクロール地図」という新しいジャンルを生み出し、マイクロソフトやYahoo!といったライバルも巻き込んで激しい競争を繰り広げるようになります。
拡大地図を表示 |
Googleマップの例(実際にこのまま動かせます) |
さて、ここで重要なポイントは、Googleマップは「Ajax」を実現するために作られたものではなく、Googleマップのようなサービスを示す言葉として「Ajax」という名前が後付けされたことです。
Webアプリのユーザビリティを改善しまくるAjax Ajax うきうき Watch(1) Ajaxという流行技術の定義を明確にしながら、Ajaxの動向からうきうきするような面白いもの、確実に押さえておきたいものを厳選してお届けしていく 「リッチクライアント
& 帳票」フォーラム 2005/11/2 |
つまり、Ajaxアプリケーションは、「Ajax」という言葉が生まれる前から存在することができたのです。
■ 約10年前から存在していた「Ajax」的なもの
Ajaxを構成するHTML/XHTMLやCSS、DOM、XML、XSLT、XMLHttpRequest、そしてJavaScriptといった技術の大半は20世紀が終わってしまう前にすでに出現しています。事実として、Webブラウザ上でページの再ロードを行うことなくリッチな操作性を実現するWebアプリケーションは1998年ごろからすでに出現しています。
例えば、筆者が1998年07月に出版した「XMLコンテンツの作り方」(東京電機大学出版局)という書籍は、そのようなWebアプリケーションの作成方法を説明したものです。また、日本XMLユーザーグループのXMLデザイナーメーリングリストでも、メーリングリストが開設された1999年より数年間、そのような特徴を持つWebアプリケーションが積極的に作成されていました。
■ Webブラウザの「舌戦」
それらが、なぜ普及することなくフェードアウトしたのかといえば、実質的にそれらのWebアプリケーションがInternet Explorer(以下、IE)でしか動作しなかったからです。ライバルのWebブラウザは、十分な機能を提供することよりも、IEの不公正さを非難するという「舌戦」に熱心だったのです。そして、サービス提供側はIEでしか動作しないサービスはユーザーニーズを満たせないためになかなか採用できなかったのです。
このような流れが明確に変わったのは、「舌戦」ではなく優れたサービスを寡黙に提供することにまい進するGoogleの発展と、理念よりも有用性を重視する新しいWebブラウザFirefoxの出現によります。GoogleはIEを非難するのではなく、IEユーザーにも便利に使用できるサービスを提供してユーザーを獲得し、Firefoxはマイクロソフト独自技術であったはずのXMLHttpRequestと互換性のあるオブジェクトを提供することで、より便利なサービスを支える基盤となりました。
■ なぜAjaxはブームだけで終わらないのか
さて、このようなAjaxの歴史を見ると、明確な「技術主導」という流れが見えます。つまり、美辞麗句を並べて自らを称揚しライバルをおとしめる「舌戦」よりも、技術を1つ1つ積み重ねて、実際に使えるサービスを構築して利用者の支持を得ることによって、Ajaxはブームになったということです。正しいか正しくないかではなく、動くか動かないか、便利か不便かという価値観がAjaxを普及させてきたといえます。
このような特徴は、なぜAjaxが一過性の流行としてフェードアウトしていかないのか、という理由をよく示しています。実際に動くこと、それが便利であることを駆動力として普及を続けるAjaxは、実際に役に立つが故にユーザーの支持を失いません。逆にいえば、Ajaxの行く末を「舌戦」に委ねる時代が来ると、Ajaxが衰退していく可能性も考えられます。
いずれにしても、われわれは健全な猜疑(さいぎ)心を持ち、サービス提供者のいい分を信用せず、実際に動作するサービスを使った結果だけを納得するように心掛けるべきでしょう。
ハイライト2・サーバサイドでもJavaScript!?
Aptana Jaxerのページ |
Ajaxの長所の1つは、プログラム言語に対する偏見を持ちにくいところだと思います。クライアント側はJavaScriptでほぼ決まっていますが、サーバ側でJavaScriptが使われることはあまりなく、かといって決まった定番プログラム言語もありません。そのため、大多数のAjaxプログラマはクライアント側とサーバ側で異なる言語を使うバイリンガル生活を余儀なくされます。そのような立場は、どのプログラム言語も一長一短であり、適材適所だと知るチャンスが多くあります。そして、それはたった1つのプログラム言語しか知らないために、ほかのプログラム言語がすべて誤って見えるという典型的な偏見を除去するのに役立ちます。
……という話は1つの事実ではありますが、やはり2つの言語を混用すると間違いやすく生産性も上がりません。例えば、サーバ側でやっていた処理をクライアント側で実行させようと思っただけで、そのためのコードはすべて書き直しになってしまいます。それを考えると、サーバ側もJavaScriptで書くのもありではないかと思います。Aptana Jaxerは、それを行うソフトウェアです。
さらにAptana Jaxerで面白いのは、1つのファイルの中にHTMLコード、サーバ側で実行するJavaScriptコード、クライアント側で実行するJavaScriptコードをまとめられる点です。Ajaxアプリケーションでは、緊密に連携するコードが複数ファイルに分散していることも多いので、コンパクトに1つにまとめられると扱いやすくなるかもしれません。
ハイライト3・人のつながりを検索するSocial Graph API
Google Social Graph APIのページ |
昔、FOAF(Friend of a Friend)という言語を紹介したことがあります。これは、「私」と「誰」が友達関係であるかを記述する言語です。各人がこの言語で記述したデータを公開していると、それらを集めて人間関係のネットワークデータベースを作ることができます。それの何が面白いのかというと、例えば「私とあなたの共通の知り合い」が分かるのです。以前試したときは、まったく意外な人が、私と別の人との共通の知り合いであることが分かって驚いたことがあります。
しかし、この手の人間関係の記述がはやったという話は聞きません。FOAFを紹介した某社は、それを契機になぜかまったく関係ないSNSソフトの開発に着手してしまいました。ですから、いまごろになって、Googleがそのような情報を活用して検索するAPIを作り出したという話は、少しだけうれしかったりします(参考「ブログやSNSを結び付ける『Social Graph API』をグーグルが公開〜FOAFやXFNをクロールしてAPI化〜」)。
1-2 |
INDEX | ||
第30回 Ajaxはじめて物語、そしてサーバでも動くJavaScript | ||
Page1 連載30回企画「Ajaxはじめて物語」 サーバサイドでもJavaScript!? 人のつながりを検索するSocial Graph API |
||
Page2<そのほかのみどころ> Ext JSでできたWebブラウザベースのマッシュアップエンジン Twitter風の新サービスが続々と GoogleマップとVirtual Earth、2つの地図の違いとは? 快適なレスポンスを得る1つの方法として「CSS Sprite」をAjaxへ応用 なぜリッチクライアントの必要性が問題になるのか |
- GASで棒、円、折れ線など各種グラフを作成、変更、削除するための基本 (2017/7/12)
資料を作る際に、「グラフ」は必要不可欠な存在だ。今回は、「グラフの新規作成」「グラフの変更」「グラフの削除」について解説する - GET/POSTでフォームから送信された値をPHPで受け取る「定義済みの変数」【更新】 (2017/7/10)
HTMLのフォーム機能についておさらいし、get/postメソッドなどの内容を連想配列で格納するPHPの「定義済みの変数」の中身や、フォーム送信値の取り扱いにおける注意点について解説します【PHP 7.1含め2017年の情報に合うように更新】 - PHPのfor文&ループ脱出のbreak/スキップのcontinue【更新】 (2017/6/26)
素数判定のロジックからbreak文やcontinue文の利点と使い方を解説。for文を使ったループ処理の基本とwhile文との違い、無限ループなども併せて紹介します【PHP 7.1含め2017年の情報に合うように更新】 - Spreadsheetデータの選択、削除、挿入、コピー、移動、ソート (2017/6/12)
Spreadsheetデータの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|