Web 2.0の要素として,「マッシュアップ(mash up)」という言葉がよく聞かれるようになりました。マッシュアップとは,複数のWebサービスを融合して,新しいサービスとして提供する形態を指します。コンテンツ・ホルダーがWebサービスとして自社データの提供を拡大してくる中で,マッシュアップによって新たな価値を生み出す場が広がってきました。

 この「マッシュアップ・ラボ」では,WebサービスAPIやマッシュアップ技術の最新動向と,マッシュアップ・サイト構築の要素となる各社のAPIの具体的な使い方についてサンプル・コードを交えて紹介していきます。

 1回目となる今回は,まずWebサービスAPIとマッシュアップについて簡単におさらいすることにします。

1000以上のマッシュアップ・サイトが登場

 この1年で,スクロール地図を利用したサイトがとても増えてきました。不動産業者の物件地図,飲食店の情報マップ,写真と合わせたクチコミサイトなど,いたるところで地図を見かけるようになりました。

 ほんの数年前まではWeb上の地図データは,高額な利用料が発生したり,自前で地図画像を作成するのも手間なので,なかなか手を出しにくい分野でした。現在はGoogle Mapsなどの無料のWebサービスが提供されているため,プログラミング力があれば手軽に自サイトに地図を導入できるようになりました。しかも,日本中~世界中の地図をスクロールや拡大縮小して見られますし,衛星写真にも切り替えられる便利な地図機能です。

 Googleは,自社以外のサイトでもGoogle Mapsの地図機能を利用できるように,Google Maps APIというWebサービスAPIを無償で公開しています。“API”とはApplication Program Interfaceの略で,機能を呼び出す手順の決まりごとのようなものです。Google Maps APIでは,地図機能をGoogle以外のサイトからも利用できるインタフェースが提供されています。

 ProgrammableWebのサイトには,世界中の1000を超えるマッシュアップ・サイトが掲載されています。毎日,平均2.7サイトが新規に登録される勢いがあります。その約半数は,地図を利用したマッシュアップを構築しているそうです。

 そのようなマッシュアップ技術が注目されるきっかけとなったサイトとして,HousingMaps図1)が挙げられます。個人によって構築されたこのサイトは,まだ公式のGoogle Maps APIが公開される以前から,Google Mapsの地図データとcraigslistの不動産データを融合したサービスを提供していました(当時は“マッシュアップ”でなく“コンボサイト”と呼んでいました)。今日,マッシュアップと言えば真っ先に地図データの利用が挙げられるのも,初期のHousingMapsの登場と,またその後のYahoo!,Googleによる地図APIの公開が大きく影響していると言えそうです。

図1:HousingMaps

 Google以外にも,Amazonの商品情報Technoratiのブログ検索など,各社が自社データをWebサービスAPI経由で提供しています。海外だけでなく日本国内でも,はてなのはてなウェブサービスをはじめ,livedoorの天気情報価格.comの商品検索など多くのWebサービスが登場してきました。これらのWebサービスで提供されるデータを活用することで,自分のアイディアを活かした新しいマッシュアップ・サイトを構築していくことができます。

JavaScriptからWebサービスAPIを使う

 もともとの“Webサービス”という言葉は,SOAP/WSDLベースの通信を行うものに限定する向きもありましたが,現在では,RESTベースのサービスも広がりを見せるなど,通信方式を限定せずに広義の意味で使われることが多くなってきました。技術的には,以下のような呼び出し方式が使われています。
  • XML-RPC : metaWeblog APIのブログ投稿管理APIなど。XMLベース
  • SOAP/WSDL : Google SOAP Search APIのWebサイト検索APIなど。XMLベース
  • REST : Technoratiのブログ検索APIなど。レスポンスはXMLかJSONが多い
 これらの通信方式はWebサービス提供者側が決めることですので,サービス利用者側(マッシュアップサイト構築者)にとってはそれほど重要なことではありません。Web 2.0で重要なのはデータですから,プロトコルやデータフォーマットでなく,通信して受け取れるコンテンツ自体が大事です。Webサービス提供者側のドキュメントの指示に沿って,ありがたくサービスを利用させていただくことにしましょう。

 ただ,このところの潮流としては,REST-fulなインタフェースを採用してXML形式だけでなくJSON形式のレスポンスを返すサービスが増えてきているようです。RESTベースのWebサービスAPIは,その動作を手軽に試せるぶん,APIを利用したサービスが開発しやすい特徴があります。

 JSON(JavaScript Object Notation)は,JavaScriptのネイティブ表記に近いデータ交換フォーマットで,RFC-4627に定義されています。JSONでは文字コード指定や属性値など,XMLの全機能を再現できるわけではありません。しかし,Webサービスのデータのやり取りに必要となる主な機能はJSONでも代替可能で,何より,Ajaxを用いてJavaScriptをクライアントとした場合に最も利用しやすいフォーマットであると言えるでしょう。Java,PHP,Perlなどの他言語用のライブラリも登場していますから,サーバーサイドでの処理・互換性にも問題ありません。

 そのJSONをさらに応用した,JSONP(JSON with Padding)も注目されています。レスポンスのJSON形式データの先頭に,JavaScriptのコールバック関数名や代入先変数名を指定できるようにしたものです。JavaScriptのscriptタグ(script要素)から簡単に使用できるため,XMLHttpRequestを用いたAjax通信が不要になる手軽さが特徴です。その半面,Webサービスからのレスポンスが,単純なデータ構造のみでなく,確実にJavaScriptプログラムを含む形式になるため,信頼できるWebサービスに利用を限定するなどセキュリティ面の注意は必要です。