楽天の商品を取得・分類するシステムを作る
タイトルのままですが、楽天市場には楽天WebサービスのAPIを使って商品情報を取得できる機能が提供されています。
今回はそのうち「楽天商品検索API」を使用して商品の取得と分類を行うシステムを開発しています。
https://webservice.rakuten.co.jp/documentation/ichiba-item-search
APIはブラウザ上でテストできますが、開発や本番で使うには楽天会員にログインし、アプリIDを発行する必要があります。(無料でできます)
開発していて見えてきた仕様
開発を進めていると、最初はわからなかった細かい仕様が見えてきたので解説します。
- ジャンルID ジャンルとは「腕時計:」「アクセサリー:112747」など、商品の大まかな区分に割り当てられている6桁のコードです。 特徴としては親子関係(階層構造)があり、「楽天商品検索API」のパラメータで指定すると、そのジャンルとその子孫のジャンルすべてが検索範囲に含まれます。
ジャンル階層構造の例
- 腕時計:558929
- 腕時計用アクセサリー:302178
- 腕時計用ベルト・バンド:302145
- 工具:402007
- 腕時計収納ケース:505724
- メンズ腕時計:301981
- レディース腕時計:302050
- 懐中時計:565251
- 男女兼用腕時計:302133
- その他:112747
-
タグID タグとは様々な商品の属性を示す7桁のコードで、「色」「ブランド」「素材」などの特徴を指定することができます。 こちらもジャンルIDと同様に階層構造があるようですが、今回の開発ではそこまで意識することはありませんでした。
-
データ取得に関すること APIで一度に取得できる商品は30までです。それより多い数の検索結果を取得したい場合は、リクエストのpageパラメータで2ページ目以降を指定して複数回リクエストすることになります。 なお、十分な間隔を開けてリクエストしないとエラーが帰ってきます。
-
楽天市場サイトでの商品検索との違い
サイトでの検索とAPIの検索には裏のロジックに差があります。
- サイト:各キーワードAND検索のようなもの+関連する商品も検索
- API:各キーワードのしっかりしたAND検索
サイトでは「キーワードを含んではいないが関連する商品」というものも表示されるようになっています。 詳しい仕様はこちらに載っています。
https://ichiba.faq.rakuten.net/detail/000006873
なのでAPIを使用するうえで検索ロジック面での不便はなさそうに思います。
まとめ
基本的には楽天が提供しているドキュメントを読めばなんとなく仕様はわかりますが、やはり開発していると裏でどのようなロジックで動いているのかが少しずつ見えてきて面白いですね。 今回の細かい仕様が他の開発者の助けになればうれしいです。