第17回 新しい技術を模索するYahoo!、Google、MS

株式会社ピーデー
川俣 晶

2007/1/26

Yahoo!やGoogle、MSが新技術を活用した検索システムを試験的にスタートさせている。今月の国内外のAjax関連7本をお届けする(編集部)

 ハイライト1・新しい技術を模索する検索サイト

 今回最初に紹介するのは、Ajaxの技術で作られた検索システムです。AllTheWeb Livesearchといいます。検索キーワードを入力していくと、検索ボタンを押さずともそこまでの入力された単語を手掛かりに、検索結果を表示してくれるという優れものです。

 残念ながら、動作対象とするWebブラウザの種類が少なく、Internet Explorer 7.0で見に行くと使えません(6.0なら使える)。しかし、検索エンジンの未来像を考えるうえで、あえて使ってみる価値はあります。

Yahoo!のAllTheWeb(上)とGoogleのSearch Mash(中)、
MicrosoftのMS.DEWEY(下)

 さて、AllTheWeb? 聞いたこともないぞ……と思った読者も多いと思いますが、これはYahoo!の実験サイトであるようです。実際、アクセスするとYahoo!のロゴを見ることができます。このように、新しい技術の検証のために別の名前を持った別サイトを持つことは珍しくないようです。例えば、GoogleにはSearch Mashがあり、MicrosoftにはMS.DEWEYがあります。

 こういったサイトを見ることの価値は、多岐にわたります。単に面白いというだけでも、見に行く強力な理由になるでしょう。しかし、それだけではありません。「どうせ明日も今日と同じ代わり映えのしない日が来るに決まっている」といったあきらめの心への特効薬となるのです。

 あのサイトが、毎日毎日同じような画面しか見せてくれないからといって、永遠に同じというわけではない。別の場所でいつか訪れる本サイトの変化に備えて切磋琢磨しているということに気付かせてくれるわけです。

 ハイライト2・飲食店情報の検索機能というニーズ

 

 WebサービスのAPIは、何でもAPIとして提供すれば利用される訳ではありません。やはり、ニーズが多いもの、便利なものでないと、なかなか使われないのです。そういう意味で、地図を提供するGoogle Mapsがヒットしたのは、ニーズが多い地図という対象を、便利な形で提供したからだといえるでしょう。

 では、地図のほかにどのようなAPIが便利でしょうか?

飲食店情報のAPI活用は可能性が拡がるかも

 実は、最近になって、飲食店情報の検索機能はニーズが多いのではないか……と思うようになってきました。例えば、見知らぬ土地を歩きながらちょっと食事がしたいと思ったとしましょう。そこで、いま一つ趣味には合わないが、拒絶するほどでもないラーメン屋に遭遇したとします。このまま歩き続けた場合、もっと趣味に合う店と出合うかもしれませんし、この先飲食店がなく、あの店に入っておけば良かったと思うかもしれません。そういうとき、モバイルデバイスから利用できる飲食店の検索があると便利です。

 しかし、問題はそれだけでは解決しません。モバイルデバイスは機能に制限が多いので、検索サービスがあっても利用できないかもしれません。また、単に店が見つかるだけでは不十分で、その店についてのさまざまな意見や付加情報も見たいかもしれません。

 このような問題をクリアするためには、飲食店情報をAPI化し、さまざまな付加価値にマッシュアップ可能とすればいいわけです。

 そういったことを漠然と思っていましたが、このAPIを見たとき、それが明確に見えた気がしました。

 さて、具体的にどのようなマッシュアップが可能なのでしょうか?

 もしかしたら、それを見せてくれるかもしれないコンテストが開催されます。リクルートとサン・マイクロシステムズによるマッシュアップコンテストの第2回が開催されます。第1回はリクルートが提供するWebサービスだけが対象でしたが、今回はリクルートに加えて17の企業・団体のWebサービスやAPIも対象となり、その中にホットペッパーAPIも含まれます。

 もちろん、ホットペッパーAPI以外のWebサービスやAPIも含め、どのような作品が応募されるのか楽しみですね。

 詳しくは以下のURLを参照してください。

 ハイライト3・目立たないAjaxとマイクロソフトの関係

 

 え、Windows Vistaを話題にするの? Internet Explorer 7.0じゃなくて、なぜVistaをAjaxうきうきWatchで? と思った読者も多いと思います。しかし間違いではありません。私は、Ajax的な観点から、Windows Vistaは大事件であると考えています。しかし、何が大事件なのでしょうか? 以下、それを説明します。

2007年1月30日一般発売予定のWindows Vista

 Windows Vistaの特に目立つ新機能として、サイドバーガジェットがあります。これは、時計やカレンダーなどの小さなプログラムを画面の横に並べて表示させておき、便利に利用するものです。このサイドバーガジェットはDynamic HTMLで作成されており、ほとんどAjaxそのものといっても過言ではありません。

 サイドバーガジェット専用のフレームワークと若干のお約束さえ把握すれば、Dynamic HTMLの知識が多少ある人なら、すぐにでもサイドバーガジェットの開発を開始できるでしょう。しかも、システムに標準付属のサイドバーガジェットも特に一般利用者から見えないように隔離したり隠す措置は取られていません。標準付属のサイドバーガジェットの気に入らない部分をちょっと改造する……ということもあっさり実現できます。最低限、標準付属のメモ帳と、若干の知識さえあればすぐにできるのです。

 慣れてしまえば、酒でも飲みながら気楽に一晩で書き換えることができるレベルです。そして、追加・改造されたサイドバーガジェットは、即座にOSの使い勝手を変化させます。

 つまり、VistaというOSは、これまでに例がないほど開けっ広げに利用者の介入を許す寛容さを見せてくれているわけです。それは、単にカスタマイズ可能……というレベルではありません。カスタマイズ可能であっても、専用の知識を大量に仕入れないと作れない……というケースも珍しくありません。

 自社独自技術に囲い込もう……という意図が見え隠れすることもあります。しかし、Vistaのサイドバーガジェットは、とても多くの人たちがすでに知っているDynamic HTMLの知識によって開発可能としています。そして、サイドバーガジェット開発で得た知識の多くは、マイクロソフト製品のライバルのための開発にもそのまま適用可能です。

 そして、そのような寛容さが大きな意味を持つのは、将来の主流OSが驚くほどの寛容さを見せたという事実によります。シェアの低いOSが、シェアを高めるために寛容さを発揮することは珍しくありません。

 しかしすでにナンバーワンであれば、寛容さを見せる必然性はありません。むしろ、その地位を利用して確実に自社製品に利用者が流れるよう、自社独自技術を押し付ける可能性の方があり得るぐらいです。それにもかかわらず、Vistaは開けっ広げなのです。

 個人的に特にうれしいと思うのは、そのようにして寛容に示されたカスタマイズの手段が、事実上Ajaxの技術だということです。つまり、私自身も慣れ親しんだ技術であるため、即座にサイドバーガジェットを作ることができたのです。それは「私はVistaというOSによって歓迎された」という気持ちにさせてくれました。

 ちなみに、私が作成したサイドバーガジェット(とLiveガジェット)は、Windows Live GalleryKawamataAkira プロフィールから見ることができます。ここにあるAutumn's Random Music Playerは、音楽をランダム再生するサイドバーガジェットですが、若干のお約束とフレームワークの概要を把握するだけで、あとはほとんどAjax開発の知識を使って、あっという間に作り上げることができました。

 これは割と機能やUIに凝っているので(何とたった2つの整数ですでに再生した曲リストを保存できる)数日の時間を費やしましたが、シンプルなものなら一晩で作れます。しかも、即座に私のPC環境の改善に役立ってくれました。ちなみに、Vista一般発売までには、もう1つ検索用のサイドバーガジェット(仮称・十徳Search)を追加できると思います。

 さて、もう1つThe story of XMLHTTPというURLを紹介しますが、これはXMLHttpRequestの歴史を書き記したものです。

XMLHttpRequestの歴史が書かれている

The reality is that the client architecture of GMail appears to follow the rough design of the Exchange 2000 implementation of Outlook Web Access for IE5 and later which shipped way back in 2000. (GMailのクライアントアーキテクチャは、ずっと以前の2000年に出荷された、Outlook Web Access for IE5とそれ以降のExchange 2000実装のラフデザインに追従しているように見える)

 これは、なぜGMailのような高度なアプリケーションが、既存のWebブラウザを修正することなく実現できたのか……という疑問に対する答えになります。それは、GMailと同様のソフトは2000年ごろにすでに存在し、それが実行できるようにInternet Explorerは進化させられていたからだ……と解釈できるわけです。Googleが真に開拓したフロンティアは、実は世間が考えているよりも広くはないのかもしれません。

 そのほかのみどころ

 

 Ajaxとそれに関連する話題を紹介します。

Google Mapsと天気予報情報のマッシュアップ

 Google Mapsと天気予報情報をマッシュアップしたサイトです。そのほかにも、さまざまな機能を持っています。

Google Mapsと天気予報情報のマッシュアップ

 このサイトを紹介した理由は2つあります。1つは、おそらく日本のことなど何も知らないスタッフによって作られたサービスであるにもかかわらず、きちんと日本の地図が出て、“Nearby Webcams”にはお台場(?)や富士山のWebcamが表示されていることです。全世界規模のWebサービスをマッシュアップしていくと、自動的に思いも寄らない規模で使われる可能性が出てきます。

 もう1つの理由は、場所情報の取得方法です。おそらく読者の皆さんの大半は、このサイトを最初に訪問したときに日本のどこかを示す地図が表示されたと思います。

 これはIPアドレスから所在地を調べるhostip.infoの機能を使用しています。内容は完全ではなく、間違っていたら訂正してほしい……というレベルではありますが、それでも印象的かつ強力なシステムです。また、プライバシーや匿名性の観点からの疑問もあり得るシステムでしょう(この件に関しては、testml4の皆さんにご協力いただきました。ありがとうございます)。

すでに10個もあったWebOS!

 Webブラウザ上で実行される仮想OSであるWebOSはこの連載でも紹介したことがありますし、数が増えていることも知っていました。

10ものWebOSが比較されている

 しかし、すでに10個ものWebOSが存在し、比較レビューが成立する時代になっているとは思ってもいませんでした。これはびっくり!

CanvasタグをサポートしていないIEでも動作させるAPI

 Ajaxの周辺にしばしば出てくる単語として“Canvasタグ”という言葉があります。“Canvasタグ”とは、HTMLに拡張して使用する要素で、JavaScriptによってイメージやベクターグラフィックを描画させることができます。

 これは、AppleがSafariに実装し、その後Mozilla(Firefox)やOperaが追従した機能であり、Internet Explorerはサポートしていません。そのような状況に対して、どこかで見たAjaxの記事の中で、これほど素晴らしいCanvasタグなのだからInternet ExplorerもCanvasをサポートせよ、と書いてありました。

複数のWebブラウザで動作させるDojo 2D API

 それを読んだ私の感想はこうです。「それはAjaxらしくない……」

 なぜAjaxらしくないと感じたのかといえば、Ajaxとはすでに利用者が持っているWebブラウザをプラットフォームとして実行できるものだからです。素晴らしい機能を実現するために新しいソフトウェアを開発せよ、すべてのユーザーはそれをインストールせよ……というのは現実には貫徹不可能な「空想上の理想型」にすぎません(実際、すべてのユーザーが最新のソフトを即座にインストールするということはあり得ない)。

 「空想上の理想型」を根拠にした空手形の乱発がITバブルの原因と崩壊を招いたとすれば、その反省のうえに「いまそこにあるWebブラウザ」上で動作するAjaxがあるはずです。その観点からいえば、Internet ExplorerもCanvasをサポートせよという要求はAjax的ではありません。

 では、何をどうすればAjax的だといえるのでしょうか?

 Dojo 2D API (dojo.gfx)というライブラリに、Canvasタグと真っ向から逆行するAjaxらしさを見たような気がしました。これは、Internet Explorerを含む複数のWebブラウザで利用できるグラフィックライブラリです。複数のWebブラウザで動作させるために、凝った仕掛けを内部で用意しています。このライブラリの基本はSVGです。Firefox等はSVGを直接扱えるので問題ありません。

 問題は、SVGをサポートしないInternet Explorerです。この場合には、Internet Explorerが実装しているマイクロソフト独自のベクターグラフィック言語であるVMLが使われます。SVGからVMLへの変換がプログラムからは直接見えないライブラリ内部で行われ、結果として同様の画像を画面に出すことができるわけです。

 この解決策は、「ユーザーが使用するWebブラウザがSVGをサポートしているか否かをプログラマが意識する必要はない」「既存のWebブラウザを修正することなく実行できる」という2つの理由により、非常にリーズナブルです。実際にどこまで実用的に稼働するかは見守る必要がありますが、実用水準で利用可能となれば、その価値は計り知れないほど大きいと感じます。

XMLHttpRequestオブジェクト以外のAjaxデータ通信方法

 画像ファイルにバイナリ情報を埋め込んで、クロスドメインの非同期データ通信を実現するアイデアです。多少技術に詳しい人なら、この説明を読めば何をしているかが分かるでしょう。XMLHttpRequestオブジェクトを使う方法以外にも、さまざまなデータ通信方法が存在するわけです。

XMLHttpRequest以外にも、さまざまなデータ通信方法が存在した

 それにしても、このようなアイデアを思い付けるというのは、相当頭が柔らかい証拠だと思います。おそらく、「正しいオブジェクト指向」であるとか「クラスの当たり前の役割分担」などといった考えで頭を満たした技術者には思い付かないでしょう。これはまさに、役割分担の意図的な誤用によるデータ通信ですので。しかし、役割などというものは、後からいくらでも解釈を変えられるものであり、特定の解釈に固執しないのは正しい態度です。

JsonML (JSON Markup Language)

 とても簡単なアイデアですが、見て目からうろこが落ちました。JsonMLとは、XML文書をJSON形式にマッピングした言語です。特にXHTMLと併用すると有益だとしています。

XML文書をJSON形式にマッピングしたJsonML言語

 これは、例えばXHTML文書のコード断片の加工を行うJavaScriptコードを書く場合などに便利そうです。文書の一部を加工するには、文字列として書き換える方法と、DOM経由で書き換える方法がありますが、前者はついうっかり閉じタグを忘れる等のミスを防止できません。

 後者は、長い名前のメソッドを何回も呼ぶ必要があり、コードが長くなってしまいます。しかし、JsonMLを使えば、JsonMLからJavaScriptのオブジェクトにダイレクトに変換できるため、オブジェクトとして文書内容を参照でき、加工できます。




古くて新しいAjaxの真実を見極める
「Webインターフェイスの新しい手法」「画期的なWebアプリケーションの仕組み」であるとして開発者たちの人気を集めるAjaxとは何なのか、その真実を見極めてみよう
最終更新 2005/8/2


HTML5 + UX フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日 月間