後編 WebサービスをAmazonで知る――PHPでECS 4.0を使うテクニック(4/5 ページ)

» 2005年02月25日 12時40分 公開
[金子 順,ITmedia]

 アプリケーションが利用する商品データを、Itemごとにクラス化してもよいかもしれません。ECSアクセスクラスからItemオブジェクトとして検索結果を取得することで、さらにデータとロジック、デザインを分離することも可能です。

 より複雑なPHPアプリケーションを作成するのであれば、Webアプリケーションを設計する際に広く利用される、MVCフレームワークのModel層としてECSアクセスクラスを機能拡張していくのがよいでしょう。PHPアプリケーションからは、ECS自体は隠ぺいされており、あたかもAmazonの商品データベースを自由に操作できる感覚でアプリケーション構築ができると思います。

 HTTPベースのシンプルなREST APIを持つAmazonのWebサービスは、PHPのようなWEBに特化したスクリプト言語と非常に相性がよく、しかもかなり少ない行数で、本格的なWEBアプリケーションを構築することが可能です。

ECS 4.0のちょっとしたテクニック

 おまけ、といっては何ですが、最後にECS 4.0プログラミンで有用な、ちょっとしたテクニックを紹介したいと思います。

  • いちどに10件以上の商品情報を取得する

 ECS 4.0では、いちどに取得できる商品情報の数が10件と決められています。ただし、ECS 4.0では複数のリクエストを同時発行するバッチリクエストという手段が提供されおり、10件以上の商品情報を取得することも可能です。

 ここでは、ASIN番号を指定して、商品情報を取得するItemLookupを例に挙げます。

 取得した商品情報のASIN番号が、”ASIN番号1,ASIN番号2,ASIN番号3,ASIN番号4 … ASIN番号26”のように、10件以上あったとします。まずは、これをそれぞれが10件以下になるようにいくつかに分けます。

$asins1 = "ASIN番号1,ASIN番号2 … ,ASIN番号10";
$asins2 = "ASIN番号11,ASIN番号12 … ,ASIN番号20";
$asins3 = "ASIN番号21,ASIN番号22 … ,ASIN番号30";

 つぎにECSアクセスクラス ecs.phpに以下のようなメソッドを追加します。

リスト3■ecs.phpへの追加ソースコード
function multi_query($asins1,$asins2,$asins3)
{
$query = "&ItemLookup.1.ItemId=" . $asins1
. "&ItemLookup.2.ItemId=" . $asins2
. "&ItemLookup.3.ItemId=" . $asins3;

$this->path = $this->base_path
. "&SubscriptionId=" . $this->sub_id
. "&AssociateTag=" . $this->aid
. "&Version=" . $this->version
. "&ContentType=" . $this->contentType;

$this->path .= "&Operation=ItemLookup&IdType=ASIN"
. "&ResponseGroup=Small,Offers,Images"
. $query ;

return TRUE;
}

 このメソッドを、view.phpなどから

$ecs->multi_query($asins1,$asins2,$asins3);

 のように呼び出すことで、いちどに10件以上の商品情報を取得することが可能です。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ