前回は 海外出張 のため,1回分お休みさせていただきました。 米国サンディエゴで開催された FASTforward '07 カンファレンスに参加してきました。 『検索』というと,一般的には Google・Yahoo! の2強というイメージがありますが, 企業内イントラ検索や企業サイト向け検索システム構築用エンジンといった エンタープライズ・サーチの市場では,Google・Yahoo! とはまた別の世界があります。 そういえば,最近は Namazu を使った検索システムを見ることも減ってきました。 カンファレンスの内容については,ITpro 内の こちら の記事が詳しいです。

 さて。今回は,カカクコム社が提供する 価格.com WEBサービス と,その商品検索 API のカンタンな使い方をサンプル・コードを交えてご紹介します。 価格.com の持つ膨大なデータを「サーチ」できる最初の一歩です。

 2007年1月には,Mozilla Japan の協賛で開催されていた 『価格.com WEBサービスコンテスト』の 結果発表 がありました。 中でも最優秀賞を獲得した EatSpot は,実用性や見た目のクオリティも高いだけでなく, 技術的な面からも,多くの API を絡めたマッシュアップが注目です。 食べログ.com の店舗情報に Hotpepper API の店舗画像を組み合わせたあたりも,柔軟で面白いですね!

図1:EatSpot(kaiseh さん)

商品検索API

 商品検索APIでは,価格.comの商品情報データベースを商品名などからフリーワードで検索できます。 表1の商品カテゴリに対応しています。

表1:API対象商品カテゴリ

CategoryGroupカテゴリ名
Pcパソコン関連
Kaden家電
Cameraカメラ
Gameゲーム
Sportsスポーツ・レジャー
Brandブランド・腕時計
Babyベビー・キッズ
ALL上記全て

 API へのリクエストは, 対象商品カテゴリをはじめとする検索条件を下記のような URL で指定します。(REST)

リスト1:商品検索APIリクエスト例
http://api.kakaku.com/Ver1/ItemSearch.asp?CategoryGroup=Pc&Keyword=Dynabook+SS+MX/395LS&ResultSet=medium&SortOrder=popularityrank&PageNum=1

 この例では,パソコン関連『Pc』カテゴリの商品を, キーワード『Dynabook SS MX/395LS』で検索しています。 (筆者の愛機です。デュアルコア搭載ノートPCだと, バックグラウンドで coLinux を動かしていても Windows の処理が重くならず, どこでも Linux を使えて良いですね)

 続けて ResultSet パラメタでは, レスポンス項目を『medium』(多め)または『mini』(少なめ)で指定します。 mini だと画像 URL など一部の情報が省かれるため,少しデータ量が抑えられます。 最近は,このようにレスポンスのデータセットを選択できる API が増えてきているようです。 通常は『medium』で良いのではないでしょうか。

 残りの SortOrder パラメタは並び替え順,PageNum パラメタはページ番号を指定します。 先頭が第1ページで,各ページあたり5件(固定)のレスポンスが返ります。

 API からのレスポンスは,検索結果を以下のような XML 形式で返ります(POX)。 複数の商品がマッチした場合は,その分だけ <Item>~</Item> が繰り返されます。 (1ページあたり最大5商品まで)

リスト2:商品検索APIレスポンス例
<?xml version="1.0" encoding="utf-8" ?>
<ProductInfo>
  <NumOfResult>1</NumOfResult>
  <Item>
    <ProductID>00200714780</ProductID>
    <ProductName>dynabook SS MX/395LS PAMX395LS</ProductName>
    <MakerName>東芝</MakerName>
    <CategoryName>パソコン本体&gt;ノートパソコン</CategoryName>
    <PvRanking>165</PvRanking>
    <ImageUrl>http://img.kakaku.com/images/productimage/m/00200714780.jpg</ImageUrl>
    <ItemPageUrl>http://kakaku.com/item/00200714780/</ItemPageUrl>
    <BbsPageUrl>http://bbs.kakaku.com/bbs/00200714780/</BbsPageUrl>
    <ReviewPageUrl>http://kakaku.com/prdevaluate/evaluate.asp?PrdKey=00200714780</ReviewPageUrl>
    <LowestPrice>169600</LowestPrice>
    <NumOfBbs>164</NumOfBbs>
  </Item>
</ProductInfo>

 ProductID 要素は価格.com サイト内での製品番号です。 製品名(ProductName要素)や,製品画像URL(ImageUrl要素), 最安価格(LowestPrice要素)など,魅力的な情報が詰まっています。

 お使いのブラウザから 上記のリクエストURL にアクセスすれば,直接,API のレスポンスを確認できます。 その他の詳しい API の仕様については こちら を参照してください。