最安値取得処理の障害対応:APC-ProVer1.88リリース
Amazonから最安値データを取得する際に、データが欠損している問題と、それにともなって取得したデータにも不整合が発生しております。
最安値取得処理時、データは1商品ずつではなくまとめて取得しています。取得したデータの構造を簡単に説明すると
商品1
新品1点
中古3点
400円 中古 Aさん
450円 中古 Bさん
500円 中古 Cさん
1000円 新品 Amazon.co.jp
商品2
新品1点
中古2点
・・円・・・さん
・・
といったように複数の商品があり、それぞれがどれくらい出品されていて、誰がいくらでといった形になっています。(実際には商品の情報なども掲載されていてもっと複雑です。)
今回の障害は商品1は新品1点、中古3点という情報が掲載されているにもかかわらず、肝心の出品データがないか、数が足りないケースが起きています。プログラムは出品数をもとにしてデータを取得しています。データがないことで次の商品の出品情報を取得していまっている場合があります。
商品1と2で区別されているのだからそのようなことは起こらないのでは?と思うかもしれません。APC-Proではデータを早く処理させるために、全体の構造を解析せず、取得したデータを上から順番に解析していく方法を採用しています。
もう1つ、今回とは別の問題があります。最近問い合わせを受けて知ったことで、はじめからそうだったのか変更になったのは分かりせんが、 出品ファイルにIdTypeがASIN以外のEAN(JAN)コードやISBNで出力されている場合があります。これは新規出品時にASINコード以外のIDで出品すると、出品ファイルを作成したときに、そのIdTypeで出力されるようです。
APC-Proでは出品データはASINコードであることを前提としています。EAN(JAN)コードで出力された場合は、最安値データを取得することができません。(改良中のVer1.9以降では音楽CDやDVDのJANコードに対応します。)
取得できないだけならいいのですが、IdTypeがISBNの場合は注意が必要です。取得したデータの整合性が取れていない可能性があります。 ISBNはASINコードと結局のところは同じです。ただ末尾のxがISBNタイプだと小文字のxで出力されます。これをAPC-Proで処理しようとすると、取得したデータは大文字のXなため、一致しません。(大文字と小文字を区別するため)ここで不整合が発生します。
今回はその大文字小文字も関係なく対応させてあります。(ただし10ケタのもののみ)
出品ファイルで出力するときは、IDタイプを統一して選択できた方がいいと思うのですが。新規出品するときに、JANコードやらASINやら混在していると、処理するとき困るのではと思います。(それをデータを利用するプログラムを作る側としてはなんと面倒なことか。)
データが欠損する問題自体はAmazon側の対応待ちとなります。(すぐに直るといいのですが・・。前回のコメントが一部取得できない問題は直るのに2ヶ月ぐらいかかりました。現在APC-Proとは関係ありませんが、出品者情報の取得では一部の出品者はデータを取得できない問題が続いているようです。)
今回の修正は、欠損しても整合性は保つようにしたこと、IDがISBN(10ケタ)でも処理できるようにしたことです。
取り急ぎ修正したために、まだ整合性がとれていない可能性があります。テストをお願いいたします。
データがずれたことによって予想外の値段で売れてしまったケースもあると思います。このたびはご迷惑をおかけして申し訳ありませんでした。
※価格を更新する前には必ず一度はチェックすることをお勧めします。障害や不具合によって問題が発生してもプログラムですべてをあらかじめ予測して対応することは困難です。自動化処理している方はそのリスクを十分に理解いただきますようお願いいたします。