そのままiframeタグを使って表示するしかなさそうです。iframeを使う上でネックになるのが高さ(height)です。適当に500pxとかで指定するんですが、レビューがないと下300pxくらいスカスカになってしまうし、逆にレビューが多いとスクロールバーが出てしまうので、インターフェース的にあまりキレイじゃないです。JavaScriptでIFrameURLの高さを取得して、heightを動的に変更、なんてこともできるんでしょうけど、色々面倒なことになりそうです。あとphpでincludeする方法もありますが、PAAPI公式ページのよくある質問に見ると、IFRAMEのみが、現在カスタマーレビューデータを表示する唯一の方法となります。IFRAMEのみが、現在カスタマーレビューデータを表示する、Amazonにおける唯一の方法となります。現状、IFRAMEのみがサポート対象となっております。当方としては、アソシエイトの皆様にAmazonの商品を紹介いただくお手伝いをするために、近い将来、他のフォーマットについてのサポートについても検討予定です。IFRAMEのみを連呼されてるので、iframe以外の方法を使うとガイドライン違反と判定されてしまう可能性もなくはありません。いうわけで、ひとまず素直にiframeを使うことにして、しばらく様子をみてみようと思います。最後の近い将来、他のフォーマットについてのサポートについても検討予定です。いうのに期待したいと思います。あともうひとつの大きな問題として、携帯対応があります。そもそもiframe対応していない機種はどうしようもありません。実際に自分の端末(ドコモP-09A)で試してみたところ、iframeは表示できたのですが、iframeの枠をクリックしてフォーカスさせないとスクロールできないので、PC以上にインターフェースが分かりにくくなってしまいます。それよりも問題なのがiframe内のリンクをクリックしてもPC用ページに飛んでしまうこと。携帯のことはまったく考慮されていないようです。いうわけで、携帯サイトのほうは現状ではレビュー表示なしにするしかない、という結論に至りました。残念な仕様変更ですが、もう決まってしまったことなので利用者としては変更にはおとなしく従い、今後のバージョンアップで改善されることを期待するしかないです。技術関連2010年10月29日金曜日findを使って特定ディレクトリ以下のファイル数カウント・削除をするfindを使ってファイル数のカウント、削除をするコマンドです。PAAPIのリクエスト2000回制限で導入した、放っておくと際限なく増えてしまうキャッシュファイルの対応用です。\;これをcronでスケジュール化し、増え続けるキャッシュファイル対策は完了です。PAAPIのリクエスト回数制限(1時間2000回)にひっかかる先週のことですが、Amazon商品情報ビューワーを見てデータの構造をチェックしていたところ、突然「503エラー」が出て、amazonから情報が取得できなくなり、ちょっと焦りました。調べてみたところ、この503エラーは「1時間につき2,000リクエストまでの当初利用限度」という利用制限にひっかかったのが原因みたいです。この制限は2010年10月15日から施行されていたようですが、「1時間2000リクエストなんて自分のサイトではあり得ない」と思って完全スルーを決め込んでいました。1時間に2000リクエストということは、1分に33.333リクエスト。だいたい2秒に1リクエストくらいです。自分の管理サイトがこんなにアクセスが多いはずはないんですが、放置するわけにもいかないですし、とりあえず調査します。様子をみてみましたが、だいたい毎時30分くらいになると503エラーが出るようになり、毎時55分~00分くらいになると商品情報取得が再開され、また30分くらいで503になる、、、というのが繰りかえされていました。30分足らずで2000リクエストの制限を使い切ってしまっているようです。人間によるアクセスがこんなに多いというのはありえないので、おそらくbotによるアクセスが原因でしょう。以下の対策をとってみました。■自作ウィジェットを削除まずはこのブログのサイドバーに置いていた自作のウィジェットを削除しました。今はAmazon公式のウィジェットにしてます。ちなみに削除したウィジェットはキャッシュを使ってなかったので1アクセスごとにリクエストを送っていました。Analyticsの解析結果)なんですが、analogの解析結果だと5,000PVくらいありました。これで1時間あたり200くらいはリクエストを削減できたと思います。(後になって焼け石に水だったわかりましたが)■不明なボットを弾く別の管理サイトのログを見てみたら、ここ数日同一ホストから1日8,000ほどアクセスがあるのがわかりました。User-agentも名乗らず、リファラもなし。ホストが「www????.sakura.ne.jp」になってるので、たぶん誰かがレンタルサーバーに設置してるbotだと思います。www????.sakura.ne.jpして弾くようにしました。■GoogleBot-Imageを弾くGoogleBot-Imageが大挙襲来していたのが分かりました。画像をインデックスしてもらっても特にメリットはないので、robots.txtでブロックすることにしました。あとmsnやyahooのボットもちょくちょく来てるようなので、ついでにCrawl-delayも追加。10■キャッシュを使うキャッシュを使うようにしました。キャッシュは当然使うべきなんですが、実は過去にbot襲来→キャッシュファイル増大→数GBに膨らむ→サーバ落ちる→サーバ再起動時のディスクチェックに12時間以上かかるという苦い経験があったので、キャッシュを使うのは避けていました。キャッシュの設定を復活させ、有効期限を半日にしてしばらく様子を見みます。一晩明けてみてみたら、まあ予想はしてましたが、キャッシュファイル数が1万を軽く超えてました。キャッシュファイル全削除。ちなみに調べてみましたが、Linuxでひとつのディレクトリ内に格納できるファイル数はせいぜい1万程度ということらしいです。それ以上だとパフォーマンスが大幅に落ちたりするらしいです。全削除で凌ぐとして、この問題はなんとかしないといけません。いうわけで、キャッシュの使用によって新たな問題をひとつ抱えることになってしまいました。■asianetcom.netを弾くログをみていたら、MSIEのUserAgentを名乗っているものの、アクセス数も動きも人間のものではないIPアドレスがいくつかありました。逆引きしてみたら、「asianetcom.net」といういかにもあやしいホスト名。調べてみたら、どうもBaidu関係の、お行儀の悪いBotのようです。http://wiki.livedoor.jp/aissle/d/%A5%ED%A5%DC%A5%C3%A5%C8%A1%CA%B9%F1%C6%E2%A1%CB#content_2_4↑こちらのページを参考に、というかそのまんまの設定でBotを弾くことにしました。210.232.15.16/29これがかなり効果があり、ほぼ1時間2000リクエスト以内におさまるようになりました。■Amazonへのリンク先をDetailPageURLにする1時間2000リクエストの制限は、売上に応じて変動します。APIへのアクセスのために使用される各アカウントは、1時間につき2,000リクエストまでの当初利用限度が認められます。30日間に発生する出荷された商品の1時間あたりの収益100円ごとに、1時間につき500リクエスト(1時間につき最大25,000リクエストまで)が受けられます。要は売上に応じて段階的にリクエストの上限が増えるということです。利用限度は収益実績に基づき毎日再計算されます。APIアカウント所有者のEメールアドレスと同一のEメールアドレスのもとに設定されたものでなければなりません。登録アドレスが一致しない場合、上記利用コントロールが正しく適用されない恐れがありますので、ご注意ください。これまで自分の場合、amazonへのリンクはhttp://www.amazon.co.jp/exec/obidos/ASIN/B003T9VDIC/myhp-22/みたいなシンプルなものを使っていたんですが、これだと収益実績としてカウントしてくれないわけです。いうわけで、PAAPIのレスポンスにあるDetailPageURLを使うように変更しました。以上でひとまず対応完了。悪質なbotはいなくなったものの、まだgoogleやyahooのbotが頻繁に来てるので、やや危ない水準ですけど、2000リクエスト制限問題はほぼ解決しました。お行儀の悪いbotって本当に迷惑ですね。レンタルサーバだと思ったようにアクセスログが取れないこともあるので、対応に苦労しました。このまま落ち着いてくれるといいんですけど、まだ対応を終えて数日しかたっていないので、しばらくは監視を続けようと思います。技術関連2010年10月22日金曜日Yahooウェブ検索APIのバージョンアップ対応Yahooのウェブ検索APIがバージョンアップし、いずれ古いバージョンが使えなくなるということなので、バージョンアップ対応しました。http://developer.yahoo.co.jp/webapi/search/websearch/v1/websearch.htmlまあ対応といっても自分の場合は一カ所だけ、しかも/V1/を/V2/に変えるだけで済みました。これもYSTからGoogleエンジンの移行への布石なんでしょうかね。時に消すこういうやつです。