連載 .NETでWindowsアプリを作ろう

第4回 Amazon用プラグインでAmazon Webサービスでも画像検索

デジタルアドバンテージ 遠藤 孝信
2006/01/14
Page1 Page2 Page3


Back Issue
1
Google画像検索アプリを作ろう
2
サムネイル画像コントロールを作ろう
3
画像検索ツール本体をマルチスレッドで作ろう

 前回ではアプリケーション本体を作成し、取りあえずGoogleイメージ検索を利用する画像検索アプリケーション(WebImageSearch)を完成させました。本連載の最終回となる今回ではこれを少し拡張し、Google以外でも画像検索が行えるようにしていきます。

 このWebImageSearchは、ある検索キーワードからイメージされる画像を手軽に検索して一覧することが目的です。つまり「グウィネス」と検索して、彼女のいろいろな画像を見られればよいわけです。

 そういった意味では、Googleイメージ検索以外にもインターネット上にはいくつかの画像検索サイトが存在します。例えばAmazonでは、キーワードを入力すれば、それに関連するDVDや書籍を検索でき、DVDのパッケージや書籍の表紙の画像を表示してくれます。また、Yahoo!オークションでは、たいていの商品が画像付きで出品されており、キーワードにより検索できます。

 このようなさまざまな画像検索サイトに対応させるために、WebImageSearchではプラグインによる拡張を採用しています。プラグイン形式にしておけば、今後新しい画像検索サービスが登場したとしても、アプリケーション本体に手を加えることなく、プラグインを追加するだけで(具体的にはプラグインであるDLLファイルを配置するだけで)、それに対応することができます。

 すでに連載第1回目ではGoogleの検索部分をプラグイン(DLLファイル)として作成しましたが、前回ではそれをアプリケーション本体に静的にリンクしていました。今回はまずAmazon用のプラグインを作成し、次にアプリケーション本体を修正して、アプリケーションの実行時にプラグインの読み込みと検索時のプラグインの選択ができるようにしていきます。

 なお、今回で完成するアプリケーション一式のソース・コードは以下からダウンロードできます。これがWebImageSearchの最終版となります。ZIPファイルを展開し、WebImageSearchフォルダにあるWebImageSearch.slnを開けばアプリケーションをビルドして実行できるようになっています。また、すぐに実行して試せるように「実行ファイル」フォルダには、すでにビルドしたEXEファイルやDLLファイルが入っています。

Amazon用プラグインの作成

 連載第1回目で作成したGoogle用プラグインでは、普段われわれがブラウザから行うようにWebページに対して検索キーワードを渡し、返ってきたHTMLを解析しIMGタグを探し出して画像のURLを取り出すといった作業が必要でした。

 Amazonも同じ方法でプラグインを作成可能ですが、Amazonはそれ以外にもWebサービスの口を提供しています*。せっかくですから、今回はそれを使いましょう。ご存じのとおり、Webサービスの活用は.NETの最も得意とするところです。

* Googleも検索のためのWebサービスを提供していますが、イメージ検索用のWebサービスはいまのところ提供していません。

 AmazonのWebサービスと、.NETのWebサービス呼び出し機能を利用すれば、検索結果(今回の場合は見つかった商品画像のURLや商品説明のページのURL)を簡単に得ることができます。

■Amazon Webサービス「Amazon E-Commerce Service」

 Amazonでは現在いくつかのWebサービスを公開していますが、その中でも今回利用するのは「Amazon E-Commerce Service」(以下、ECS4)という名前のWebサービスです*

* Amazonが提供するWebサービスは2004年10月よりこの名前に改称されており、その利用手順も以前のバージョンから大幅に変更されています。ECS4の現在のバージョンは4.0です。ただし古いバージョンのWebサービスは現在でも利用可能です。これについては「.NET TIPS:[ASP.NET]WebフォームからAmazon Webサービスを利用するには?」で解説されています。

 ECS4は、AmazonがWebサイトで提供している商品の検索やカートによる商品購入、マーケットプレイスといった機能を、WebアプリケーションやWindowsアプリケーションなどのプログラムから利用可能にするためのものです。日本のAmazonもECS4に対応しています。

 ただし、AmazonのWebサイトで提供されているほとんどの機能をWebサービスとしても利用可能にしたためか、ECS4は非常に多機能であり、その結果としてけっこう複雑になっています。ECS4の使い方については、ドキュメントサンプル・プログラムが用意されていますが、残念ながら日本語のドキュメントなどは用意されていないようです。日本語での解説としては、ITmediaで公開されている「WebサービスをAmazonで知る――ECS 4.0でアフィリエイト」が参考になると思います。

 ここでは、キーワードにより検索を行い、その結果として商品の画像を得るという点に絞ってECS4の使い方を解説してきます。

■ECS4のテスト・アプリケーション

 Amazon用プラグインを実装する前に、まずはECS4を利用する簡単なコンソール・アプリケーションを書いて、ECS4が実際に使えるかを試してみましょう。

 Visual Studio .NET(以下、VS.NET)でWebサービスを利用したアプリケーションを作成する手順は以下のようになります。

「Web参照の追加」によりWSDLファイルのURLを指定する。

上記によりプロキシ・クラスが自動作成される。

プロキシ・クラスのインスタンスを作成し、Webサービスをメソッドとして呼び出す。

 WSDLファイルは、Webサービスにより提供されるAPIに関する情報を記述したXMLファイルです。WSDLファイルには、Webサービスとして呼び出すことのできるメソッド(関数)の一覧と、各メソッドで必要となるパラメータや戻り値の型、そしてそれらの型の定義などが記述されています(ほかにも利用可能なプロトコルやWebサービスが提供されているエンドポイントのアドレスも記述されています)。

 ECS4のWSDLファイルへは以下のURLからアクセスできます。

http://webservices.amazon.com/AWSECommerceService
/JP/AWSECommerceService.wsdl

Web参照の追加

 それでは、VS.NETを起動し、ここではテンプレートとして「コンソール アプリケーション」を指定して新規プロジェクトを作成します。

VS.NETでコンソール・アプリケーションのプロジェクトを新規作成

 次に、ソリューション・エクスプローラで[参照の追加]を右クリックし、[Web参照の追加]を実行します。これにより以下のようなダイアログが開きます。

 ここで[URL]の部分に前掲のWSDLファイルのURLを入力し、その右側にある[移動]ボタンをクリックします。これによりWebサービスが見つかり、次の画面のようにWSDLで記述されているメソッドの一覧が表示されるはずです。

[Web参照の追加]ダイアログ
WSDLファイルのURLを入力し、その右側にある[移動]ボタンをクリックする。Webサービスが見つかれば、WSDLで記述されているメソッドの一覧が表示される。

 [参照の追加]ボタンをクリックすれば、Web参照の追加は完了です。

自動作成されたプロキシ・クラス

 この時点ですでにプロキシ・クラスが自動作成されています。プロキシ・クラスは実際のWebサービス呼び出しが実装された一連のクラスです。

 VS.NETのクラス・ビューを見れば、どのようなプロキシ・クラスが自動生成されたかを確認することができます。

プロキシ・クラスに含まれるクラスの一覧(クラス・ビュー)
プロキシ・クラスの名前空間は自動的に「ECSTest.com.amazon.webservices」となる(ECSTestは新規作成したプロジェクトの名前)。各項目をダブルクリックすれば、実際の実装コードを開くことができる。

 プロキシ・クラスには、Webサービスで提供されているAPIをメソッドとして含んだクラス(今回の場合はAWSECommerceServiceクラス)や、そのメソッドのパラメータや戻り値で使用される型を定義したクラス(上記の画面では、例えばAddressクラス)などが含まれています。

 今回利用するWebサービスのメソッドは、AWSECommerceServiceクラスで定義されているItemSearchメソッドのみです。このメソッドは、パラメータとしてItemSearchクラスのオブジェクトを受け取り、ItemSearchResponseクラスのオブジェクトを戻り値として返します。

 パラメータであるItemSearchオブジェクトでは、検索キーワードや、検索結果として得たいデータの種類などを指定します。戻り値であるItemSearchResponseオブジェクトには、見つかった商品のタイトルや、詳細ページのURL、商品の画像のURLなどが含まれます。


 INDEX
  .NETでWindowsアプリを作ろう
  第4回 Amazon用プラグインでAmazon Webサービスでも画像検索
  1.Amazon用プラグインの作成(1)
    2.Amazon用プラグインの作成(2)
    3.アプリケーション本体の改造
 
インデックス・ページヘ  「.NETでWindowsアプリを作ろう 」


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間