Amazonで遊ぶ。

G-Toolsでお世話になっているGoodPic.comさんのエントリーを見ていたら...

Goodpic: AmazonのXML Webサービス(REST)はXSLを書くだけでもかなり使える
AmazonのWebサービスですが、実際に使ってみると、思ったより簡単に、かなり色々な機能が実現できそうです。
(中略)
こちら側はXSLを書いて、自分のサーバーに置くぐらいでOK。動的な処理は全部Amazonのサーバー側で行ってくれるという、いたれりつくせりです。

ふーん、簡単なんだぁ。
それで調子に乗ってAmazonいじり。

さて、Amazonをウェブ・サイトで利用する仕組みですが...

AmazonのURIにアソシエイトIDとかデベロッパートークンとかキーワードとかいろいろ引数をひっつけてリクエストを投げる。
すると、XMLで商品情報が取得できる。
また、XSLというファイルを用意すると、Amazon側でXMLをHTMLへ変換させちゃうことも出来る。

という感じです。
こっち側で用意するのはXSLだけ。CGIなんかなくても大丈夫。

XMLとかXSLとか全く知識無かったのでこちらで勉強させて貰いました。

たのしいXML
万葉集などの古典を愛する人たちのためのXMLそしてXHTMLの入門ページです。

そして、さくさくっと小物を作ってみました。
トップページに配置してある、Amazonの商品リストです。
名付けて「Amazon Window」。安直ですが。

見た目はたいしたことないですが、ただAmazonを呼出すだけじゃあ芸がないのでPHPでいろいろやってます。

その1 ASINで商品指定、さらにその商品を買った人が買った別の商品をリスト
まず、Amazon Windowへ表示したいASINを調べて設定します。設定はたったこれだけ。
そうすると、設定した商品が表示されるのはもちろんなのですが、その商品を買った人が別に買い求めた商品を表示するようにプログラムしました。
Amazonのサイトでよく見る、「このXXXを買った人はこんなXXXも買っています」ってやつです。
この情報をAmazonから取得して動的に表示させてます。

その2 キャッシュ
Amazonの開発者向けのWeb Kitのガイドラインを読むと、1秒間に1アクセス以上の負荷は避けるべしとか、キャッシュ機能を設けるべしとか書いてあります。逆にあまり長い間キャッシュを更新しないと、価格とかが変更されたときなどに問題なので、キャッシュの有効期間はXX時間以内にせよ(←読んだけどよく分からなかった)などと書かれています。
なので、Amazonにアクセスしたとき取得したデータを保存しておき、以降30分間はAmazonにデータ取得のリクエストを投げないようしました。Amazonに負荷をかけないうえ、ちょっとだけ表示が速くなります。
ただし、商品のイメージ画像自体はキャッシュしてません。面倒なので手抜きです。

その3 Javascriptで呼出す。日本語のエンコードを指定可能
Amazonから取得できるデータのエンコードはUTF-8です。サイトがUTF-8だったらどんな方法で貼り付けても問題ないでしょうが、サイトが他のエンコードだと一工夫しなければいけません。(iframeを使うとか)
Amazon Windowは、ユーザが指定したエンコード(Shift-JIS、UTF-8、EUC-JP)のJavascriptを出力します。だから、文字化け知らず。
また、<div>タグ付きのコードをJavaScriptではき出すので、スタイルシートを適用してデザインをカスタマイズしやすくなってます。

こんな感じです。

Amazon Windowは自分用に試しに作ってみたものですが、欲しい人がいたら配布しようかな。

投稿者 Jun : 22:58 | PHP , Site Info

このエントリーのトラックバックURL

http://o-ume8.com/cgi/mt334/mt-tb.cgi/1344

コメントを投稿

ナビゲーション

ブログを検索


Google

カウンタ

o-ume8 COUNTER
o-ume8 COUNTER
since 2003/11/14

iTunes Store Top Albums

iTunes_logow_125-40.gifiTMS

iTunes Store Top Songs

iTunes_logow_125-40.gifiTMS
pagecontainer bottom image