Amazon Product Advertising API v5.0 での日本語検索の挙動が謎……だと思ってたけど違ったぜ

Amazon ロゴ
先日、Amazonの商品表示用APIの最新バージョン「Amazon Product Advertising API v5.0」に対応しました。普通にASINで商品情報を取得する分には使い勝手はあまり変わらないのですが、検索するときちんと検索できたり出来なかったりということが起きて難儀していました。もしかして日本語で検索できないのかなと思っていろいろとパターンを試してみたらこんな感じに。



検索できるもの


検索できないもの


ひょっとしてカタカナは検索できるけど、ひらがなや漢字が入っていると検索できないのか……と思いきや、検索できるものもあり。

なぜか検索できるもの


謎なんですけど「経済」は検索できているように見えます。「鈴木」でも検索できてる。



結論:返ってくる商品データがまちまちでした

例えば一般的な商品情報だとこんな感じになっています。
(発売日に関する部分だけを抜粋)

Items: {
 ItemInfo: {
   ProductInfo: {
     ReleaseDate: {
       DisplayValue: "2013-04-05T00:00:01Z",
       Label: "ReleaseDate",
       Locale: "en_US"
     }
   }
 }
}

ところが商品によっては「ProductInfo」ごと存在しないということがあって、僕は「ReleaseDate」の存在確認しかしていなかったので、エラーが出るというわけ。仕方ないので存在確認のプロセスを多くして、「ReleaseDate」を使うときには事前に「ItemInfo」「ProductInfo」の存在確認もするようにしたらエラーにならなくなりました。

if(
 'ItemInfo' in item_data
 && 'ProductInfo' in item_data.ItemInfo
 && 'ReleaseDate' in item_data.ItemInfo.ProductInfo
) {
 item.releaseDate = item_data.ItemInfo.ProductInfo.ReleaseDate.DisplayValue
}

なんかもっとスマートなやり方あるような気がしますし、そもそも値がないならプロパティはそのままで値としてnullとか入れてくれればいいのにと思いますけど、とりあえずはこれで。