ZAPAnet総合情報局 > ZAPAブログ2.0 > アマゾンWebサービス(AWS)利用メモ

アマゾンWebサービス(AWS)利用メモ

2005年02月13日 プログラミングTIPS
本、エレクトロニクス、DVDなどさまざまな商品を豊富に取りそろえているAmazon.co.jp。
このアマゾンには、Amazon Webサービス(AWS)という商品情報を取得するためのWEBサービスが用意されています。

このサービスが、どんなサービスなのか簡単に説明するとするなら、
「アマゾンの商品情報データベースにアクセスして、情報を利用できる」
ような感じのサービスです。

このサービスを元に作ってみたページは
[Z]ZAPAnetサーチ

以下、アマゾンWebサービスに関するメモ。
(個人的なメモなので、内容の保証はありません)

無料デベロッパー・トークンを申し込み、デベロッパーキット(SDK)をダウンロードする

アマゾンのサイトへ行き、申し込む。
アフィリエイトをしたい場合には、アソシエイトプログラムにも申し込む。


AWSで利用できる機能を理解する

アマゾンでは、XML/HTTPとSOAPの2種類が利用できるようになっている。
自分の環境に合わせてどちらを利用するかを決める。


RESTでXMLを取得するためのパラメーターを確認する

通信は全てHTTPを使用。
2005年2月時点では、Amazon E-Commerce Service 4.0(ECS 4.0)が利用できる。
URLはhttps://webservices.amazon.co.jp/onca/xml。
MethodはGET。
Parameterは、ドキュメントを読んで確認する。
Service=AWSECommerceService
&SubscriptionId=[登録したsubscription ID]
&AssociateTag=[アソシエイトID]
&Version=[バージョン指定]


問い合わせの種類を決める

問い合わせの種類として、
&Operation=ItemSearch
のパラメーターを追加する。(その他の情報を取得したい場合には変更する)


取得したい情報を決める

たくさんの情報取得と画像が必要な場合は、
&ResponseGroup=Large,ItemAttributes,Images
とする。(その他の情報を取得したい場合には変更する)


取得する商品の種類を決める

すべての商品情報が欲しい場合は、Blended。
本の情報が欲しい場合には、Books。
音楽の情報が欲しい場合には、Musicなどとする。
&SearchIndex= Blended


検索結果のページを指定する

1ページ目の場合は、1を指定する。
&ItemPage=1


出力するフォーマットを指定する

XMLで取得する場合には、text/xmlを指定する。
&ContentType=text/xml


実際にkeyword検索でXMLを取得してみる

パラメーターにKeywordsを追加する。
&Keywords="エンコードした文字列"を追加する。
アマゾンの場合、文字コードがUTF-8なので注意する。
SJISやEUC-JPなどでファイルを作成している場合、まずUTF-8にエンコードしてから、さらにURLエンコードする。

仮にEUC-JPで作成したPHPファイルの場合、
urlencode(mb_convert_encoding("キーワード", "UTF-8", "EUC-JP")
のように変換する。

例:全てのブラウズ(カテゴリ、ジャンル)情報から”ドラクエ”でXMLを取得する場合
https://webservices.amazon.co.jp/onca/xml?
Service=AWSECommerceService
&SubscriptionId=*********
&AssociateTag=*********-22
&Operation=ItemSearch
&Version=2004-10-04
&ResponseGroup=Large
&SearchIndex=Blended
&ItemPage=1
&Keywords=%E3%83%89%E3%83%A9%E3%82%AF%E3%82%A8
&ContentType=text/xml
これでXMLを取得できる。(見やすくするため、改行を入れてあるが実際には一行)


その他のパラメータを試す

その他のパラメーターに関しては、自分の好きなように追加し、試してみる。


取得したXMLファイルをXSLを用いて変換する

xslパラメータを追加して、XSLTモードでXMLをHTMLに変換する。
これで誰にでも見やすい形にデータを変換できる。
&Style=自分のxsl.xsl
(XSLTスタイルシートに関するこの記事での説明は無し)


取得したXMLファイルをパースする

XSLTスタイルシートを使いたくない場合には、自分でXMLファイルをパースする。
SAXやDOMなどの技術を使い変換してHTMLファイルなどにする。
(パースに関するこの記事での説明は無し)


SOAPで情報を取得する

SOAPの技術が使える人は、こちらの方法も試してみる。


まとめ

これだけ情報量の多いアマゾンのデータベースを利用できるのはかなり良い
ドキュメントが英語でわかりにくい
パラメーターがたくさんあって、最初は理解しにくい
XMLの要素の作りが複雑でわかりにくい
取得できるXMLの情報はさすが
サーバーのレスポンスはそこそこ
サーバー側の技術を使わなくても、XSLTだけでも利用できるのは便利

アマゾンは、現状に慢心することなく、WEBサービスなどのサービスも提供しているところがさすがです。
評価点やレビュー内容なども取得できるので、変換の方法によっては、本家アマゾンよりわかりやすいページ構成も可能かもしれません。


試しにアマゾン検索、楽天検索、ビッダーズ検索を組み合わせてサイトを作ってみました。

[Z]ZAPAnetサーチ


関連リンク:

ビッダーズWebサービス(BWS)利用メモ
アマゾンHTMLタグ作成ツール公開
電脳卸ウェブサービス(仮名)(DWS)利用メモ
AWS、BWS、楽天に対応した[Z]ZAPAnetサーチ2.0
「公開APIを利用したサンプルサイトを作っていくよ」公開
公開APIに興味を持っている人はどれくらいいるのか?
価格.com WEBサービスに対応させました
楽天ウェブサービス(RWS)利用メモ