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(アマフー)」 |
実際に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のURLの?以降がウェブ検索Webサービスの検索オプション(リクエスト・パラメータ)です。表1に示すパラメータが用意されています。オプションは表1のすべてのパラメータを指定する必要はなく,最低限指定が必要なものだけでも動きます。
| |
表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●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へのリクエストとレスポンスの受け取りが可能なのです。
|