はじめに

図1.完成サンプル

今回は、「楽天Webサービス」の書籍APIを利用して、書籍情報を検索して取得する方法を紹介します。こういった検索はブラウザでもできますが、Web APIを利用すると、もっときめ細かい、自分好みの検索が可能になります。本例では、書籍のタイトル、著者などによる複合検索をするVBAを作成します。動作確認は、Windows 7、Excel 2010、VBA 7.0およびWindows XP、Excel 2007、VBA 6.5で行っています。

Excel VBAでWebサービス - 天気予報を取得してみよう
Excel VBAでWebサービス - MSNマネーから株価の推移を取得しよう

楽天デベロッパーIDの取得

楽天WebサービスのAPIを利用するには、「デベロッパーID」が必要です。まず、以下のURLで楽天Webサービスのサイトへアクセスします。

楽天Webサービス

http://webservice.rakuten.co.jp/

図2.「楽天Webサービス」サイト

図2の左側にある「デベロッパーIDを取得」リンクをクリックすると、図3のようなページが表示されます。

図3.「デベロッパーIDを取得」ページ

楽天会員のユーザIDをすでに持っている方はログインし、指示に従ってデベロッパーIDを取得してください。未登録の方は、「楽天会員に新規登録(無料)」ボタンをクリックし会員登録してから、ログインしてください。

書籍検索の開発

Excel 2010を起動した後、以下の手順で行います。

  1. XMLデータを取り込み、ワークシートに対応付ける
  2. 検索するための部品を作成する
  3. 検索条件から検索結果を表示するVBAを実装する

XMLデータを取り込み、ワークシートに対応付ける

XMLデータの取得はVBAで行いますが、ワークシート上への配置は、Excelの機能を利用します(図4)。

図4.XMLデータをワークシートに取り込むイメージ図

この操作の目的は、その「対応ルール」を作成することにあります。そのため、単行本だけを検索するURLを組み立て、一旦データを空読みします。楽天Webサービスの書籍APIで今回使う入力パラメーターを表1に示します。

楽天Webサービスの書籍APIで今回使う入力パラメーター

項目名 パラメーター名 データ型 既定値 備考
デベロッパーID developerId String なし 取得した文字列を設定する
操作 operation String なし 書籍検索の場合は「BooksBookSearch」固定
バージョン version String なし Web APIのバージョン。「2011-01-27」固定
書籍のサイズ size Integer 0 0:全て、1:単行本、2:文庫、3:新書など
書籍タイトル title String なし 書籍のタイトルから検索
著者名 author String なし 著書名から検索
出版社名 publisherName String なし 出版社名から検索
書籍コード isbn Long なし ISBNコードから検索

Web APIでは、URLに引数(パラメーター)を以下の形で付加する必要があります。

パス名?引数1=値&引数2=値&・・・&引数n=値

今回の例では、以下のようになります(【デベロッパーID】の部分は、取得したデベロッパーIDの文字列に置き換えてください)。

http://api.rakuten.co.jp/rws/3.0/rest?developerId=【デベロッパーID】&operation=BooksBookSearch&version=2011-01-27&size=1

[開発]タブの[ソース]をクリックすると、[XMLソース]ウィンドウが右側に開きます。右下にある[XML対応付け]ボタンをクリックしてダイアログを開き、[追加]ボタンをクリック、[XMLソースの選択]では、[ファイル名]欄に、上記のURLを入力してください(図5)。

図5.「XMLソースの選択」ダイアログ

[開く]をクリックすると、「指定したXMLソースはスキーマを参照していません。」という警告が表示されますが、そのまま[OK]をクリックしてください。[XMLの対応付け]の一覧に「Response_対応付け」が追加されますので、[OK]ボタンをクリックすると、[XMLソース]ウィンドウにデータ項目がツリー表示されます。

楽天Webサービスの書籍APIで今回使う出力パラメーターを表2に示します。

楽天Webサービスの書籍APIで今回使う出力パラメーター

項目名 パラメーター名
書籍タイトル title
著者名 author
出版社名 publisherName
商品説明文 itemCaption
税込み販売価格 itemPrice

[XMLソース]ウィンドウの項目から、[Response]-[Body]-[ns2:BooksBookSearch]-[Items]-[Item]配下にある[title]、[author]、[publisherName]、[itemPrice]、[itemCaption]をワークシート上にドラッグ&ドロップします(図6)。

図6.XMLソース項目のドラッグ