フォトアルバム

« ECS v.4 新ビルド リリースノート | メイン | awsxom - Amazon Web Services から情報を取得する blosxom 向けプラグイン »

ECS4新ビルドのImages拡張について

ECS4の新バージョンで、これまでは1種類の画像を3つのサイズで返す、合計3つのURLしか返されていなかったImagesレスポンスグループが拡張され、数種類の画像がある場合にはそれらもあわせて返すようになりました。以下、内容を詳しく説明します。

例えばこちらの商品のように、通常の画像の下に「その他のイメージを見る」というリンクを持つ商品がいくつかあります。このリンクをクリックすると、様々な商品画像が見られます。

これまでのECS4では、いわゆる主画像(Primary Images)だけが3つのサイズで返されていました。以下のREST呼び出しでは、SmallImage、MediumImage、LargeImageの3つのURLだけが返されます。

http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&SubscriptionId=[登録ID]&Operation=ItemLookup&ItemId=B000A4RPKE&ResponseGroup=Images&Version=2005-03-23

今回の新機能によって、「その他のイメージ」に表示される画像URLも返されるようになりました。以下のREST呼び出しでご確認いただけます。

http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&SubscriptionId=[登録ID]&Operation=ItemLookup&ItemId=B000A4RPKE&ResponseGroup=Images&Version=2005-07-26

これを実現するため、Imagesレスポンスグループの構造が変更されました。具体的には、これまでItem要素の直下にSmall/Medium/LargeImage要素がありましたが、2005-07-26以降のバージョンでは、Item要素の直下にImageSetsという要素が追加され、その中に複数のImageSet要素が含まれ、個々のImageSet要素の中にSmall/Medium/LargeImage要素が含まれる形になりました。

<ItemLookupResponse>
  <Item>
    <ImageSets>
      <ImageSet>
        <SmallImage>
...

取得した画像がいわゆる主画像(Amazon.co.jpの商品ページで最初に表示される画像)であるかそうでないのかは、ImageSet要素のCategory属性の内容で判断できます。primaryが主画像、variantがその他の画像ということになります。

この拡張を行った結果、REST方式でご利用いただいていて、Versionパラメータをお使いでない場合は、アプリケーションの側でイメージのURLが取得できないという現象が起こり得ます。とりあえず以前の状態のままで使い続けたいという場合は、Version=2005-03-23(あるいはそれ以前の動作確認済みバージョン日付)というパラメータをすべての呼び出しでセットするようにしてください。これまでと同じ構造のXMLが返されます。

WSDL+SOAPでご利用いただいている場合、ソースコードを書きなおす必要はありません。SOAPでは、WSDLに設定されている名前空間がそのままバージョンとして機能するので、バージョンを指定されていないリクエストというのはありえないからです。

ただし、SOAPをお使いで、新しい機能を利用するために新しいWSDLを取り込んで、スタブコードを生成しなおしたり、あるいは毎回自動的にWSDLを解析するような環境をご利用の場合(NuSOAPなどはこれに該当するでしょう)、取得するWSDLが新しくなってしまうと、構造が変わってしまい、コードが動作しなくなることになります。これを避けるためには、バージョンを指定したWSDL(http://webservices.amazon.com/AWSECommerceService/2005-03-23/JP/AWSECommerceService.wsdl)を取得するようにコードを変更する必要があるでしょう。

今回の新ビルドの公開直後に画像URLがまったく返されない(構造が異なるのではなく、単純に返されない)不具合が発覚し、それは修正されたのですが、新しい構造で返されるようになったため、不要な混乱を招いてしまいました。申し訳ありませんでした。

コードの変更が必要なことなどご迷惑もおかけしますが、全体として新しい機能は皆さまのお役に立つものと信じております。どうかお試しの上、フィードバックなどいただければ幸いです。