Services_Amazonを使う場合
前節では、RESTを使ってAWSを利用する方法を紹介しました。サービスに問い合わせるためにはまず、必要なパラメータを組み合わせてURLを作らなければなりませんでした。本節で紹介するServices_Amazonは、この部分を抽象化しているため、URLの作り方を覚えておいたり調べたりする必要はありません(内部でRESTを利用しています)。これだけでも採用する理由になりますが、Services_Amazonにはこのほかに、キャッシュを利用できるというメリットがあります。順番に説明しましょう。
まず、登録IDを使ってServices_AmazonECS4のインスタンスを生成し、AWSのバージョンとロケールを設定します(Services_AmazonECS4のほかにServices_Amazonがありますが、前者の方が新しく、機能も豊富です)。
$amazon=&new Services_AmazonECS4($AWSAccessKeyId);
$amazon->setVersion('2008-06-23');//AWSのバージョンを設定
$amazon->setLocale('JP');//Amazon.co.jpを使う
商品を指定して取得する
先ほどと同様に、JANコードが9784627847316と9784891005849の書籍を取得しましょう。取得には、メソッドItemLookupを使います。ドキュメントによれば、ItemLookupメソッドはASINしか使えないように見えますが、オプションでIdTypeを指定すれば、ASIN以外で取得することもできます。オプションは連想配列の形で指定します。
$result=$amazon->ItemLookup(array('9784627847316','9784891005849'),
array('IdType'=>'EAN','SearchIndex'=>'Books'));
ここでは複数のJANコードをarray('9784627847316','9784891005849')のように配列を使って渡していますが、'9784627847316,9784891005849'のようにカンマ区切りで指定することもできます。
素朴なRESTの場合と同様で、IdTypeがASIN以外の時はSearchIndexを指定しなければならないことに注意してください(こういうことを気にしたくない場合は、常にASINを使うことにしておくといいでしょう)。指定を忘れても特別なエラーが表示されるわけではありません(これはServices_Amazonの抽象化がまだ完璧ではないことを表しています。素朴なRESTの時は結果のXMLをみればエラーにはすぐに気づきます)。
結果は連想配列で返るので、データを抜き出すのは簡単です(よく分からないときはprint_rを使って確認するといいでしょう)。
echo '<ul>';
foreach($result['Item'] as $item){//結果(連想配列)のItemを一つずつ処理する
//print_r($item);//結果の形式が不明なときは、print_rで確認
echo "<li>{$item['ItemAttributes']['Title']}</li>";//タイトルを取得
}
echo '</ul>';
この場合は、次のように表示されます。
・初級プログラマのためのWebアプリケーション構築入門 - 実践で学ぶJava,XHTML,SQL ・プログラムを作ろう!Microsoft Visual Web Developer 2008 Express Edition入門 (マイクロソフト公式解説書 Microsoft Visual Studi)
キーワードで商品を検索する
「クヌース」をキーワードにAmazonの書籍を検索しましょう。先ほどと同様に、ResponseGroupをMediumにし、詳細な結果が得られるようにします。
KeywordsやResponseGroupは連想配列にまとめてメソッドItemSearchに渡します。
$result=$amazon->ItemSearch('Books',array('Keywords'=>'クヌース','ResponseGroup'=>'Medium'));
先ほどと同様に、連想配列として帰ってくる結果を処理します(著者をカンマ区切りで表示するようにしています)。
echo '<ul>';
foreach($result['Item'] as $item){
$authors=$item['ItemAttributes']['Author'];//著者を取得
echo '<li>'
.($authors ? implode(', ',$authors).". " : '')//著者を「, 」で区切って表示
.$item['ItemAttributes']['Title'].'. '//タイトルを取得
.$item['ItemAttributes']['Manufacturer'].', '//出版社を取得
.$item['ItemAttributes']['PublicationDate'].'.</li>';//出版年月日を取得
}
echo '</ul>';
この場合は、次のように表示されます。
・ドナルド・E・クヌース. The Art of Computer Programming Volume1 Fundamental Algorithms Third Edition 日本語版 (ASCII Addison Wesley Programming Series). アスキー, 2004-02-18. ・ドナルド・E. クヌース. The Art of Computer Programming Volume 3 Sorting and Searching Second Edition 日本語版 (Ascii Addison Wesley programming series). アスキー, 2006-04. ・Donald E. Knuth. The Art of Computer Programming,Volume 4, Fascicle 2: Generating All Tuples and Permutations[日本語版] (アスキー・アジソンウェスレイシリーズ). アスキー, 2006-11-13. ・ドナルド・E. クヌース. The Art of Computer Programming Volume 1,Fascicle 1:MMIX―A RISC Computer for the New Millennium日本語版 (Ascii Addison Wesley programming series). アスキー, 2006-01. ・Donald E.Knuth, 有沢 誠, 和田 英一, 斎藤 博昭, 長尾 高弘, 松井 祥悟, 松井 孝雄, 山内 斉. The Art of Computer Programming (2) 日本語版 Seminumerical algorithms Ascii Addison Wesley programming series. アスキー, 2004-10. ・Donald E. Knuth, Paul M. Roberts, Tracy Larrabee. クヌース先生のドキュメント纂法. 共立出版, 1989-12. ・ロナルド・L. グレアム, オーレン パタシュニク, ドナルド・E. クヌース. コンピュータの数学. 共立出版, 1993-08. ・ドナルド・E. クヌース. 至福の超現実数―純粋数学に魅せられた男と女の物語. 柏書房, 2004-11. ・D・E・クヌース. コンピュータ科学者がめったに語らないこと. エスアイビー・アクセス, 2003-09-18. ・クヌース先生のプログラム論. 共立出版, 1991-05.
