Web APIを公開しているのは,Googleだけではありません。Amazon(アマゾン)やYahoo!(ヤフー)も代表的なWeb APIのサービス提供者です。

 そこで,AmazonとYahoo!のWeb APIを使って,ごく簡単な入門プログラムから,Web APIプログラミングに挑戦してみましょう。Web APIの活用というとWebアプリケーションでの利用を想像しがちですが,この記事では最終的に図1のような本格的なWindowsアプリケーションを開発します。開発言語はVBScript,Excel/VBA,Visual BasicなどのVBファミリーを使います。Web APIプログラミングが想像以上に身近な存在なんだなということを,じっくり味わってください。

図1●本記事で最終的に作成する,Amazon WebサービスとYahoo! JAPAN Webサービスを融合したWindowsアプリケーション「AmaHoo(アマフー)」
図1●本記事で最終的に作成する,Amazon WebサービスとYahoo! JAPAN Webサービスを融合したWindowsアプリケーション「AmaHoo(アマフー)」

 実際にAmazonとYahoo!のWeb APIを利用するには,事前準備が必要です。まず,カコミ記事「AmazonとYahoo!のWeb APIを利用するための準備」をご覧になって,登録IDなどを入手してください。なお,Webサービスの提供形態として,AmazonはREST(REpresentational State Transfer)方式とSOAP(Simple Object Access Protocol)方式を,Yahoo!はREST方式のみを提供しています。本記事では汎用性と開発効率を考慮して,両者に共通しているRESTベースで解説します。

■ステップ1
WebブラウザからWeb APIにアクセスしてみる

 Web APIを利用したアプリケーションの開発は,大きく次の三つの部分に分かれます。

(1)Web APIにアクセスしてXMLドキュメントを取得する*1
(2)XMLドキュメントを解釈する
(3)ユーザー・インタフェースを整える


これら一つひとつを実践しながら見ていきましょう。

 まずはXMLドキュメントの取得です。基本原理は簡単で,Amazon Webサービス,Yahoo! JAPAN Webサービスともに指定されたURLに対してアクセスするだけです。以降は,Yahoo! JAPAN Webサービスが提供している「ウェブ検索Webサービス」を例にして説明します。

 最初は,アクセスするとどんな返答が来るかを確認するために,リスト1のURLを使ってWebブラウザ*2から閲覧してみてください。「あなたの登録appid」の部分に,カコミ記事の手順で取得したアプリケーションIDを入力して,ブラウザでアクセスします。すると,WebブラウザにはXMLドキュメントの内容がそのまま表示されます。このXMLにはスタイルシートが適用されていないので,通常のWebページのように体裁は整っていません。まさに“生XML”状態です。

リスト1●Yahoo! JAPAN Webサービスの「ウェブ検索Webサービス」を呼び出すURL
リスト1●Yahoo! JAPAN Webサービスの「ウェブ検索Webサービス」を呼び出すURL
[画像のクリックで拡大表示]

 リスト1のURLの?以降がウェブ検索Webサービスの検索オプション(リクエスト・パラメータ)です。表1に示すパラメータが用意されています。オプションは表1のすべてのパラメータを指定する必要はなく,最低限指定が必要なものだけでも動きます。

表1●ウェブ検索Webサービスが提供する主な検索オプション
表1●ウェブ検索Webサービスが提供する主な検索オプション

 リスト1のURLでは,queryに「日経ソフトウエア」という文字列を渡していますね。これは,日経ソフトウエアというキーワードで検索しなさい,というリクエストです。つまり,Yahoo!のトップページで「日経ソフトウエア」というキーワードを使って検索するのと同じ結果が返ってきます*3

■ステップ2
Excel/VBA,VBScriptコードでXMLドキュメントを取得する

 Webブラウザからのアクセスで,どういった返答が返ってくるのかはわかりました。では今度はブラウザではなく,Excel/VBAのプログラムで同じ動作をプログラミングしてみましょう。今度は,取得したXMLドキュメントを「YDS.xml」というファイル名で保存する処理を追加してみます。

 Microsoft Excelを起動して[ツール]→ [マクロ]→ [Visual Basic Editer]でエディタを開いてください(図2)。続いて,F7を押してコード・ウィンドウの中にリスト2のコードを入力し,実行してみましょう。すると,メッセージボックスに保存先のフォルダ名が表示され,YDS.xmlというファイルが生成されていることを確認できるはずです(保存先は通常はマイドキュメントになるようです)。先ほどはWebブラウザに表示しただけでしたが,今度は検索結果をXMLドキュメントとしてダウンロードできたわけです*4

図2●Visual Basic Editorを起動する
図2●Visual Basic Editorを起動する

リスト2●Excel/VBAからウェブ検索Webサービスにアクセスするプログラムのサンプル・コード
リスト2●Excel/VBAからウェブ検索Webサービスにアクセスするプログラムのサンプル・コード
[画像のクリックで拡大表示]

 次に,スクリプト言語のVBScriptでも同じことができることを確認してみましょう。リスト2の「Sub GetYDN( )」と最後の「End Sub」をカットし,リスト2の(1)のコメント文にあるように若干コードを修正します。そして,拡張子vbsの名前でVBScriptファイルとして保存して実行してみてください。同様の結果を得られることがわかるはずです*5。つまりこの一見退屈で小さなサンプルは,特にExcel/VBAだから,VBScriptだからという区別はなく,VBファミリでWeb APIにアクセスする基本的な仕組みを含んでいるわけです。

 まとめておきましょう。VBを使って指定したURLにアクセスし,要求に対するWebサーバー側のレスポンスを取得するには次のような処理を行います。

 Set HTTP = CreateObject("MSXML2.XMLHTTP")
 HTTP.Open "GET", "サイトURL", False
 HTTP.Send
 文字列変数 = HTTP.responseText


ポイントは,MSXML2.XMLHTTPオブジェクトです。HTTPと書かれている部分はオブジェクト名なので好きな名前に変更して構いません。HTTP.OpenでURLを指定します。GETの部分とFalseの部分はそのままで問題なしです。Openは指定サイトに対する接続準備の段階で,実際の要求の送信はSendで行います。Sendに引数はなく,Openで指定されたサイトURLの部分がここでまとめて送信されます。あとはサーバー側が受け取った要求を解釈してレスポンスを返してくるので,responseTextプロパティを参照して受け取ってください。リスト2はここでBUFという文字列型変数でレスポンスを受信して,ファイルに書き出しているだけです。

 Web APIだからといって何も難しいことはありませんね。わずか4行のコードで,Web APIへのリクエストとレスポンスの受け取りが可能なのです。

AmazonとYahoo!のWeb APIを利用するための準備
 AmazonにしろYahoo!にしろ,Web APIを利用するにはそれぞれのサイトで事前登録が必要です。以下に登録の手順を説明します。

Web API名称:
Amazon Webサービス(AWS:Amazon Web Services)
登録URL:
http://www.amazon.co.jp/gp/feature.html/
ref=amb_link_14390606_7/
503-5734628-1617548?ie=UTF8&docId=451209

※URLが変更されていたため修正しました(2006/12/22)

 Amazon Web サービスは,Amazonの商品データベースにアクセスするために必要な技術とサービスの総称です。本文にもあるように,HTTPリクエストに対してXMLドキュメントをレスポンスとして返す仕組みであるREST(REpresentational State Transfer)と,エンベロープ(Envelope)と呼ばれる付帯情報付きのXMLドキュメントを使って相互に情報交換を行う仕組みであるSOAP(Simple Object Access Protocol)の両方をサポートしています。

 日本国内向けのAmazon Web サービスは,Amazon.co.jpのデータベースの検索ができます。ただし,まだ試験段階なので開発系ドキュメントは英語だけです。英語ドキュメントは苦手だなと思う方がいらっしゃるかもしれませんが,URLに与える引数が理解できれば特に困ることはありません。利用するには,事前登録(無料)して「登録ID(Subscription ID)」を取得する必要があります。登録手順は簡単です。上記URLに接続し(図A),説明にしたがってメールアドレスや名前,住所などを入力します。登録が済むと,入力したアドレスにAmazonから登録完了のメールが届くので,そのメール文中のURLからサインインすると,自分だけのAccess Key ID(登録ID)が表示されます。


Web API名称:
Yahoo! JAPAN Webサービス
登録URL:
http://developer.yahoo.co.jp/

 Yahoo!デベロッパーネットワーク(YDN)は,Yahoo!の検索エンジンを利用した各種サービスのプログラムです。このプログラムが提供しているWeb APIが,Yahoo! JAPAN Webサービスであり,Web検索のほか,画像,動画,Yahoo!のカテゴリを取得できるディレクトリ・ツリーのサービスなどが用意されています。ドキュメントはすべて日本語です。原稿執筆時点(2006年3月)では,RESTベースでのみ提供されています。

 Yahoo! JAPAN Webサービスの利用には,事前に「ヤフーID」の取得(無料)が必要です。Yahoo!メッセンジャーやYahoo!オークションの利用者は,現在使用中のヤフーIDをそのまま利用できます。
 Amazon Webサービスと大きく違うのは,アプリケーションごとに「アプリケーションID」を取得しなくてはならない点でしょう(こちらも無料)。Web APIを呼び出す際に,アプリケーションIDを引数に記入しないとサービスは返答をしてくれません。アプリケーションIDの登録は,アプリケーションID登録フォーム(図B)で行います。この画面で,半角8文字以上,40文字以下などのガイドラインにしたがって入力すれば,簡単に登録できます。

 アプリケーションIDは,どのアプリケーションがWeb APIを利用しているのかをYahoo!に通知するために利用されます。24時間内の利用回数に敷居値があり,敷居値を超えたリクエストは受け付けられなくなります。