連載 .NETでWindowsアプリを作ろう第4回 Amazon用プラグインでAmazon Webサービスでも画像検索デジタルアドバンテージ 遠藤 孝信2006/01/14 |
|
|
プロキシ・クラスのインスタンス化とメソッド呼び出し
ECS4でキーワードにより商品を検索し、商品の詳細ページや画像のURLを得るために最小限必要なコードを記述すると以下のようになります。このコードでは、「スターウォーズ」の「DVD」を検索し、その結果を10件分表示します(コードの詳細は後述)。なおコードを短くするために、エラー処理はすべて省いています。
|
||
ECS4で「スターウォーズ」のDVDを検索するサンプル・プログラム(上:C#、下:VB.NET) | ||
プログラムの先頭で、ECSTest.com.amazon.webservices名前空間を参照する必要がある(プロジェクト名を「ECSTest」とした場合)。 |
検索データ(ItemSearchRequestオブジェクト)も、実際の検索結果(Itemsオブジェクト)も、ともに配列となっている点に注意してください。これは、ECS4が1度の呼び出しで複数の検索(最高2つ)を行えるようになっているためです。
さて、このプログラムを実行すれば、次のような画面が表示されるはずです。
上記サンプル・プログラムの実行結果 |
この内容は、AmazonのWebサイトでジャンルとして「DVD」を選択し、「スターウォーズ」を検索した場合の検索結果と同一になっていると思います。
Amazon(Webサイト)での検索結果 |
ジャンルとして「DVD」を選択し、「スターウォーズ」を検索した場合の検索結果画面。ECS4を利用した場合と同一の検索結果となるようである。 |
■ECS4で検索するのに必要な型
上記のサンプル・プログラムで登場する主要な4つの型について、利用しているフィールドの説明を次の表にまとめておきます。
フィールド | 説明 |
Keywords | 検索キーワードを指定する |
SearchIndex | 検索するカテゴリを指定する(「DVD」「Books」「Software」など) |
ResponseGroup | 検索結果として取得したい商品の情報の種類を文字列の配列で指定。指定できる文字列はECS4で定義されている。「ItemAttributes」を指定すれば、商品に関する基本的なデータ(タイトルや詳細ページのURLなど)が取得できる。また、「Images」を指定すれば、3つのサイズの画像が取得できる。よく利用される種類を組み合わせた「Small」や「Medium」なども指定可能 |
ItemPage | ECS4では検索結果はページ分割される。1度の検索では検索結果を10件までしか取得できない(10件が1ページ)。このプロパティでは何ページ目の検索結果を取得するかを文字列で指定する |
ItemSearchRequestクラス |
フィールド | 説明 |
SubscriptionId | 開発者登録IDを指定する。登録IDはここから取得可能(無料) |
Request | ItemSearchRequestオブジェクトの配列を指定する。これにより、1度のWebサービス呼び出しで、複数の検索が可能(最高2つまで) |
ItemSearchクラス |
フィールド | 説明 |
TotalResults | 検索結果の件数 |
TotalPages | 検索結果の総ページ数 |
Item | 検索結果である個々の商品に対応したItemオブジェクトの配列 |
Itemsクラス |
フィールド | 説明 |
ItemAttributes.Title | 商品のタイトル(ItemAttributesオブジェクトには商品に関する詳細なデータが含まれる) |
DetailPageURL | 商品の詳細ページのURL |
SmallImage.URL | 商品の画像(小)のURL |
MediumImage.URL | 商品の画像(中)のURL |
LargeImage.URL | 商品の画像(大)のURL |
Itemクラス |
検索結果については、すべてのフィールドに値が入っているとは限らないため、実際には、その値を利用する前にnull(VB.NETの場合にはNothing)かどうかをチェックする必要があります。
■Amazon用プラグインの実装
上記のサンプル・プログラムで、Amazon用プラグインを実装するためのコードはすべてそろっています。また、プラグインとなるDLLファイル(クラス・ライブラリ)を作成するための手順はすでに第1回目のGoogle用プラグインの作成で解説しています。
ここでは、前回で用意したプロジェクトのZIPファイル(C#版、VB.NET版)に追加する形でAmazon用プラグインを実装する手順について説明します。
まずは、前回のZIPファイルに含まれるWebImageSearchディレクトリにあるソリューションを開き、テンプレートとしてクラス・ライブラリを選択して新規プロジェクト「WISAmazon」を追加します。自動作成されるClass1.cs/Class1.vbは、AmazonECS4.cs/AmazonECS4.vbという名前に変更しておきます。
次に、先ほどと同様にしてWISAmazonのプロジェクトでWeb参照の追加を行います。また、プロジェクトではWebImageクラスとIWebImageインターフェイスを含んでいるWebImageLib.dllを参照設定します(プロジェクトの依存関係としてWebImageLibプロジェクトに依存関係を設定してもよい)。
復習しておくと、WebImageクラスは検索結果から得られた画像を示すクラスであり、IWebImageインターフェイスはプラグインが実装しなければならない、検索のための一連のメソッドを定義したものです。
AmazonECS4.cs/AmazonECS4.vbで記述するコードは以下のようになります。
このソース・コードで1つ注意が必要な点は、抽象クラスであるAmazonBaseクラスを定義しているところです。
ECS4では基本的に複数のカテゴリ(「DVD」や「Books」など)にまたがった検索ができないため、このソース・コードではECS4でDVDを検索するプラグイン(AmazonDVDクラス)と書籍を検索するプラグイン(AmazonBookクラス)を別々に実装しています(このため結果的に、1つのDLLファイルに2つのプラグインが含まれることになります)。
これら2つのプラグインの違いは、ECS4のリクエストのSearchIndexプロパティに設定する値(DVD、Books)と、IWebImageインターフェイスのNameプロパティで返す値(「Amazon DVD」「Amazon 和書」)だけです。このため、Webサービス呼び出しなどの共通部分はAmazonBaseクラスで実装し、AmazonDVDとAmazonBookクラスはその派生クラスとして実装しています。
INDEX | ||
.NETでWindowsアプリを作ろう | ||
第4回 Amazon用プラグインでAmazon Webサービスでも画像検索 | ||
1.Amazon用プラグインの作成(1) | ||
2.Amazon用プラグインの作成(2) | ||
3.アプリケーション本体の改造 | ||
「.NETでWindowsアプリを作ろう 」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|