Amazon Product Advertising APISearchIndex=Allを使って検索すると、複数のカテゴリの商品が検索結果として返ってくる。検索結果の各商品がどのカテゴリの商品かはItemAttributes/ProductGroupの値を参照すれば良いのだが、「家電&カメラ」が「CE」だったりとそのままではいまいちよくわからない。ということでAmazon.co.jpのカテゴリ分けのラベルに訳した。

{
  "Apparel":           "アパレル&ファッション雑貨",
  "Baby Product":      "ベビー&マタニティ",
  "Book":              "本・漫画・雑誌",
  "CE":                "家電&カメラ",
  "DVD":               "DVD",
  "Grocery":           "食品&飲料",
  "Health and Beauty": "ヘルス&ビューティー",
  "Kitchen":           "ホーム&キッチン",
  "Music":             "ミュージック",
  "Office Product":    "文房具・オフィス用品",
  "Shoes":             "シューズ",
  "Software":          "PCソフト",
  "Sports":            "スポーツ&アウトドア",
  "Toy":               "おもちゃ",
  "VHS":               "ビデオ",
  "Video Games":       "TVゲーム",
  "Watch":             "時計"
}

和書と洋書やミュージックとクラシック音楽、TVゲームとPCゲーム、DVDとBlu-Rayなど判定したいけどそのままではできないものは色々ある。逆にシューズはAmazon.co.jpの検索結果ではアパレル&ファッション雑貨でまとめられているが、Shoesで返ってくるのでシューズと細かく判定できたりする。

またProductGroupの値はSearchIndexに指定する文字列と同じだと、SearchIndex=Allでとりあえず検索させて検索結果のある商品と同じカテゴリだけに絞るとか簡単にできそうで便利だと思うんだけど、そうなってはいない。BrowseNodesResponseGroupパラメータの値に含めればかなり正確にカテゴリ判定ができ、検索をカテゴリで絞るとかもSearchIndexパラメータではなくBrowseNodeパラメータを使ってやれば良いのでやりたいことは実現できるのだけど、レスポンスのBrowseNodesの構造はかなり複雑で、とりあえず大まかなカテゴリ(最上位のカテゴリ)を知りたい(で絞り込みたい)とかには使いづらいような気がする。

この訳データにBrowseNodeIdも持たせてやれば便利かもな。

Aexには導入しておいた。