スポンサードリンク

楽天 プログラムの問題点を特定し、解決する方法について。

楽天ウェブサービス の使い方の概略が、そろそろ分かりはじめた頃だと思いますが、実は前回までのプログラムには、改良しなければならない課題があります。

もう既に気付いた読者の人もいるかもしれませんが、sample001 や sample002 のプログラムでは、検索キーワードによって、商品データが表示されないことがあります。

少し具体的に言うと、同じ検索キーワードでも、表示されるページと表示されないページがあるのです。

下の答えを見る前に、ちょっとだけ原因を考えてみてください。

・表示されない時がある
・でも正常に動く時もある

原因が推測できましたか?


では回答です。まずは実際に現象を再現してみましょう。

ただし楽天ウェブサービスのデータベースが更新されると、同じ手順では現象を確認できないことがあります。その場合はあなたのケースに置き換えて読んでください。


*2008年5月7日時点のケース

【1】例えば sample002 で、検索キーワードを「ヨーグルト」にすると、プログラムが処理中のまま動かなくなってしまいます。

var paramList = "keyword=" + encodeURIComponent("ヨーグルト");
paramList += "&hits=10";
paramList += "&page=1";

rakuten-75.gif


【2】そこで Firefox の Firebug を使ってプログラムを追うと、どうやら4つ目の item で、商品説明文の値を取得する部分に問題がありそうだ、ということが分かります。

rakuten-77.gif


【3】検証のため、検索キーワードは「ヨーグルト」で、取得ページを2ページ目にすると、正常に表示されました。

rakuten-76.gif

var paramList = "keyword=" + encodeURIComponent("ヨーグルト");
paramList += "&hits=10";
paramList += "&page=2";

1ページ目のデータに問題がありそうです。


【4】1ページ目でも、1ページあたりの取得件数を「3」にすると正常に表示されました。

rakuten-78.gif

var paramList = "keyword=" + encodeURIComponent("ヨーグルト");
paramList += "&hits=3";
paramList += "&page=1";


【5】1ページ目で、取得件数を「4」にすると表示されません。

rakuten-79.gif

var paramList = "keyword=" + encodeURIComponent("ヨーグルト");
paramList += "&hits=4";
paramList += "&page=1";

ということは、やはり1ページ目の4件目のデータに、何か問題があると推測できます。

では原因を調べてみましょう。


【6】Webブラウザの URL にパラメータを指定して、中継スクリプトを直接表示します。


http://localhost/rakuten/lib/ItemSearch.php?&keyword=%E3%83%A8%E3%83%BC%E3%82%B0%E3%83%AB%E3%83%88&hits=10&page=1&sort=%2BitemPrice&imageFlag=1

検索キーワードとソートのエンコードはこちらで
エンコード・デコード


【7】4件目の itemCaption タグが、空だったことが原因だとわかりました。

rakuten-80.gif

以前に XML を手動で表示する練習をしておいたことが、こんな時に役立つわけです。

楽天ウェブサービスは、ネットショップのデータなので、商品名や商品価格が空のことは無いと思いますが、商品説明文などは空のケースがあるということです。

したがって、値が空の場合を想定したプログラムに改良する必要があります。


【ワンポイント】
このように問題が起こったら、現象を再現し、プログラムを追い、仮説を立て、一つ一つ検証していくと原因が特定できます。

原因が分かれば、あとはプログラムを修正するだけです。


スポンサードリンク






楽天ウェブサービス初心者入門講座TOPへ