ぐるなびWebサービスを呼び出す

ぐるなびWebサービスを呼び出してみます.

ぐるなびWebサービスの利用準備

以下のサイトにアクセスします. ぐるなびWebサービス

このサイトにアクセスして以下の画面から,「ご利用について」を選択します.
gnavi

手順に従ってユーザ登録を行うと,登録したメールアドレスに登録通知が送信されます.送られてきたメールについている「最終確認URL」をクリックし,最終確認を完了すると,再度メールが送信されてきます.このメールには,「ぐるなびWebサービスのユーザー登録が完了しました。アクセスキーは・・・になります。」とあり,アクセスキーを入手することができます.Webサービスのマニュアルは,以下にあります.

ぐるなびWebサービス 利用マニュアル

ぐるなびにアクセスするための関数の作成

以下のJavaScriptで,実際にぐるなびWebサービスにアクセスしてみます.

var map;

var RANGE = 3;
var MAXHIT = 30;

function getGurunaviUrl(lat, lng) {
  var gurunaviApi =
   "http://api.gnavi.co.jp/ver1/RestSearchAPI/";
  var gurunaviKey =
   "(ここにぐるなびAPIのキーを入力)";
  var queri = gurunaviApi + "?keyid=" + gurunaviKey +
  "&coordinates_mode=2" + 
  "&latitude=" + lat +
  "&longitude=" + lng +
  "&range=" + RANGE + 
  "&hit_per_page=" + MAXHIT;
  return queri;
}

function load(){
	if (GBrowserIsCompatible()) {
	map = new GMap2(document.getElementById("mymap"));
	map.setCenter( new GLatLng(35.70749253887843 , 
	139.71373558044434), 16 );
	}
}


window.onload = function() {
	load();
	alert(getGurunaviUrl(35.70749253887843 , 
	139.71373558044434));
}


このスクリプトを利用するために,HTMLファイルも用意しておきます.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
	<meta http-equiv="Content-Type"
	 content="text/html; charset=utf-8" />
	
	<script src="http://maps.google.com/maps?file=api&v=2&
	key=(ここにGoogleMapのキーを入力"
        type="text/javascript" charset="utf-8"></script>
	
	<script type="text/javascript" src="gnavi_main.js"
	 charset="utf-8"></script>
	
	<title>Google Maps Event Test Page</title>
</head>
<body>
	<div id="mymap" style="width: 500px; height: 400px">
	</div>
	
</body>
</html>



このHTMLファイルを開くと,以下のようなメッセージウィンドウが表示されます.
message_gnavi

上のメッセージ部分で,マスクされている部分はぐるなびのAPIキーが表示されている部分です.このAPIキーが表示されている部分を含むメッセージ全体の文字列をまるごと選択しコピーします.
message_gnavi

これを,ブラウザのURL入力部分にコピーし,URLとしてアクセスすると,指定した緯度・経度の周辺にある飲食店の情報がXML形式で送られてきます.

message_gnavi

【解説】Web API:Webサービスを利用する

API(application programming interface)とは,アプリケーションの開発者が他のハードウェアやソフトウェアの提供している機能を利用するための手法のことをいいます.APIを使えば,プログラム開発を省力化することができます.開発者は定められた手続きに従って,必要な機能のAPIを呼び出して利用します.
Web APIは,APIのWeb環境版で,Web上にあるサービスをプログラムから利用するための手法のことをいいます.従来のプログラミングでは,OSやフレームワークが提供する機能を組み合わせ,それらのAPIを利用して,プログラムを作成していました.Web APIを利用するプログラミングでは,OSやフレームワークが提供する機能に加え,インターネット上のサービスも(インターネット経由で利用できるAPIを活用することで)自分のプログラムに取り込めるようになります.これにより,Webサイトなどの高機能なコンテンツを,短期間かつ低コストで開発できるようになります.
このことは,Webサイト開発のパラダイムに大きな転換をもたらします.個人や中小企業では,開発できる機能に限界がありますが,Web APIを利用すれば,開発者が自分一人では構築できないようなデータベースや機能を利用してソフトウェアを開発することが可能となります.これにより,大規模な検索エンジンや地図データベース,言語解析など,片手間では開発できないような機能をWeb APIを通じて自分のプログラムに組み入れることができます.

Web API以前にも,ネットワーク経由で他のソフトウェアの機能を使う方法は存在していましたが,こうした技術は独自のプロトコルを使っていたために,Webアクセスで使うHTTPの通信しか許可しないファイアウォールを超えられず,インターネット経由で利用するのが難しい状況にありました.これに対して,最近のWeb APIでは,「SOAP」や「REST」と呼ばれる技術を使います.これらは,HTTPなどのプロトコルを使って,XML形式やJSON形式のデータをやりとりするための仕組みです.これらはインターネットの標準的な技術としてデザインされています.このことで,開発や利用のための柔軟性(特定の環境を要求しないこと)が確保されました.

Web APIが提供する機能として多いのは,企業の持つデータベースを公開するものです.例えば,これまで見てきたGoogleの「Google Maps API」は,同社の地図データベース「Google Maps」の情報を別のWebサイトに取り込んで表示したり,地図上に目印を付けたりすることが可能です.
こうしたサービスを提供する企業の事例は他にもみられます.Amazonの「Amazon E-Commerce Service」は,商品データを参照できるデータベースです.また,リクルート社から提供されているぐるめ情報のデータベース「Hotpapper Web サービス」もあります.

データベースだけでなく,プログラムの機能を提供するタイプのWeb APIも提供されています.ヤフー・ジャパンの「日本語形態素解析Webサービス」では,日本語の文章を区切ったり,読み仮名を付けたりすることができる,日本語形態素解析サービスを提供しています.


これらのAPIは,その多くが無償で使えるようになっています.企業が無償でWeb APIを公開する理由のひとつは,Web APIを公開することで,より優れたサービスが生まれる可能性が高いためです.例えば,Googleの技術を使ってGoogle以外の人たちがサービスを考えてくれることで,Googleだけでは思いつかなかったようなユニークなサービスが出てくる可能性があります.
また,Web APIを利用してもらうことで,間接的であっても自社のサービスのユーザの増大が期待できます.これにより,結果的にはWebサイト利用者の増加につながります.例えば,Amazonの場合,全世界でAmazonの販売情報APIを利用したアプリケーションが開発されれば,顧客の増大につながります. 更に,こうしたWebAPIを公開する企業が増えてくれば,これらの複数の企業や個人が公開しているWeb APIを組み合わせることで,更に多様なサービスの登場が期待できます.つまり,無料で使える道具を提供して,全世界のディベロッパーのパワーを借りながら,自社では思いつかないような新サービスが登場してくることが期待されています.更に,Web APIを利用するプログラマはWebユーザの中でも先進的な存在なので,先進的なユーザが利用するサービスというイメージを得られれば,その会社にとって大きなイメージアップにつながるという考え方もなされています.

特に重要なことは,この技術が,Web空間に偏在する膨大で多様なデータを自由に組み合わせて活用できる可能性を示しているという点です.こうしたサービスの組み合わせの技術を「マッシュアップ」と呼びます.例えば,Google Maps APIを使うと,地図上に線を書いたり,地図を自動でスクロールさせたりすることもできます.米国の「HousingMaps」というサイトでは,Googleが提供する地図情報に不動産の物件情報を重ね合わせて,物件がどこにあるのかをわかりやすく示しています.このように,Google Maps APIだけを使っても,オリジナルの新しいWebアプリケーションを作れる可能性があります.


物件情報提供サイト:HousingMaps
house

 Web APIは一般に,Webサービスと呼ばれる形式,つまり,SOAP(Simple Object Access Protocol)形式になっていますが,最近はREST(REpresentational State Transfer)という,より単純な形態で提供しているAPIも増えてきています.例えば,AmazonはSOAP,REST両方の形式でAPIを提供しています.また,Googleが提供する地図情報サービス「Google Maps API」は,Webサービスの形式ではなく,JavaScriptのライブラリとして提供されています.これらは比較的簡単に扱うことができるので,個人が作ったサービスでも世界中で評価されるチャンスがあります.日本ではまだWeb APIの実用例が少ないせいか,企業による買収という例はほとんどみられませんが,アメリカでは個人が作ったWeb上のサービスを大企業が買収するという事例が数多くみられます.なお,こうしたサービスは,SOA(サービス指向アーキテクチャ)という考え方のもとで,企業システムの構築にも利用されます.

演習課題