SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

PEARライブラリ活用

PHPでAmazon Web Servicesを利用する

PEARライブラリ活用 (7)

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.

次のページ
おわりに

この記事は参考になりましたか?

PEARライブラリ活用連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 矢吹 太朗(ヤブキ タロウ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2902 2008/09/09 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー