SHOEISHA iD

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

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

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

PEARライブラリ活用

PHPでAmazon Web Servicesを利用する

PEARライブラリ活用 (7)

キャッシュを利用する

 Services_Amazonは自動的なキャッシュ・メカニズムを備えています。キャッシュを利用すれば、同じ問い合わせを避けることができるので、そのサイズが小さいうちは、システムのレスポンスがよくなることを期待できます。

 キャッシュを使うのは簡単です。Services_AmazonECS4のインスタンスを生成したときに、次のよう設定します(これによって、PHPファイルの場所にcacheというフォルダができ、その中にキャッシュのためのファイルが置かれます)。

$amazon->setCache('file',array('cache_dir'=>'cache/'));
$amazon->setCacheExpire(3600);//キャッシュを3600秒に設定

 キャッシュの有効時間をあまり長くしすぎないように注意してください。特にアソシエイトサービスで、利用者に価格や発送可能時期を提示する場合には、情報は1時間に1回以上更新しなければならないことになっています(Amazon Webサービス(TM)カスタマー契約を参照)。

ショッピングカートを利用する

 ここまでは、AWSのデータベースを単に利用するだけでした。独自のオンラインショッピングサイトを作ると、他にもさまざまな要素が必要になります。ショッピングカートもその一つです。カートを一から作るのはとても大変ですが、幸いなことに、AWSにはあらかじめカートの機能が用意されています。これを利用しましょう。ただし、AWSのカートに保存できる商品の数は50種類までです。また、利用者がAmazon.co.jpに持っているカートと一緒に使うことはできません。本稿執筆時点でこれが可能なのはAmazon.comだけです(Merging Local and Remote Shopping Carts)。

 ショッピングカートを利用するには、登録IDだけではなくアソシエイトIDも必要です。アソシエイトIDも与えてServices_AmazonECS4のインスタンスを生成し直しましょう。

$amazon=&new Services_AmazonECS4($AWSAccessKeyId,$associateTag);
$amazon->setVersion('2008-06-23');
$amazon->setLocale('JP');

 カートに商品を入れるには、商品のASINと数を連想配列でメソッドCartCreateに渡します。

$cart=$amazon->CartCreate(array('ASIN'=>'489100584X','Quantity'=>1));

 メソッドの戻り値として、カートの情報を保持するオブジェクトが帰ってくるので、内容を確認してみましょう。

print_r($cart);//カートの情報を表示

 ここでは次のような出力が得られます(見やすくするために改行を追加しています)。

Array (
 [Request] => Array (略)
 [CartId] => ●●●●●●●●●●
 [HMAC] => ○○○○○○○○○○ 略
 [PurchaseURL] => https://www.amazon.co.jp/gp/cart/aws-merge.html?cart-id=●●●●●●●●●●%26associate-id=■■■■■■■■■■%26hmac=○○○○○○○○○○%26SubscriptionId=1X4S9RASYEQ2Y34A7EG2%26MergeCart=False
 [SubTotal] => Array (略)
 [CartItems] => Array
  ( [SubTotal] => Array (略) [CartItem] => Array
   (略
    [ASIN] => 489100584X 略
    [Title] => プログラムを作ろう!Microsoft Visual Web Developer 2008 Express Edition入門 (マイクロソフト公式解説書 Microsoft Visual Studi)
    [ProductGroup] => Book
    [Price] => Array (略)
    [ItemTotal] => Array (略) )
  )
 )

 重要なのは、カートを指定するためのCartIdと、カートへのアクセスが正当なものであることを示すHMAC(Hash Message Authentication Code)、アソシエイトIDです。カートにアクセスするためにはこの3つが揃っている必要があります。既に分かっているアソシエイトID以外は、カートの情報を保持するオブジェクトから抜き出しておかなければなりません。

$cartId=$cart['CartId'];
$hmac=$cart['HMAC'];

 PurchaseURLで指定されたURLにアクセスすれば、ここで作成したカートの中身を実際に購入することができます。

$purchaseUrl=$cart['PurchaseURL'];
echo "<p><a href='$purchaseUrl'>購入はこちら</a></p>";

 カートに商品を追加するには、メソッドCartAddを使います。

$amazon->CartAdd($cartId,$hmac,array('ASIN'=>'4627847319','Quantity'=>1));

 カートの変更は、AWSのサービス側で行われるのであって、ここで先ほど取得したオブジェクトではないことに注意してください($cartは、カートの写しであって、カートそのものであはありません)。

 現在のカードの状態を知りたいなら、もう一度写しを取らなければなりません(出力例には、見やすさのために改行を追加しています)。

$cart=$amazon->CartGet($cartId,$hmac);
print_r($cart);
Array (略
 [ASIN] => 4627847319 略
 [Title] => 初級プログラマのためのWebアプリケーション構築入門 - 実践で学ぶJava,XHTML,SQL 略
 [ASIN] => 489100584X 略
 [Title] => プログラムを作ろう!Microsoft Visual Web Developer 2008 Express Edition入門 (マイクロソフト公式解説書 Microsoft Visual Studi) 略)

 カートを空にするにはメソッドCartClearを使います。

$amazon->CartClear($cartId,$hmac);

 カート自体を削除することはできません。使用されない状態のカートは、商品が入っているなら90日後、商品が入っていないなら7日後に削除されます(Shopping Cart Concepts)。

おわりに

 Amazon Web Servicesを利用する2つの方法を紹介しました。

 素朴にRESTを実行する方法と、PEAR Services_Amazonを利用する方法です。PEAR Services_Amazonは、RESTの面倒な部分をうまく隠蔽できているので、便利に使うことができるでしょう。自動的なキャッシュも備えています。素朴にRESTを使う方法が必要になることはあまりありませんが、この方法を知っているとPEAR Services_Amazonの仕組みが分かるので、問題が起こったときに、うまく対処できると思います。

参考文献

  1. AWSのリリースノート
  2. AWSの開発者ガイド
    1. Getting Started Guide
    2. Developer Guide

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー