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

第1回 Google画像検索アプリを作ろう

デジタルアドバンテージ 遠藤 孝信
2005/06/25
Page1 Page2 Page3

 本連載では、ある程度実用的なWindowsアプリケーションを作成しながら、.NETでのWindowsプログラミングについて学んでいきます。具体的には、以下のような項目について解説していきます。

  • アプリケーションからWebページの取得
  • ユーザー・コントロールの作成
  • Windowsアプリケーションにおけるマルチスレッドの利用
  • プラグインの実装
  • Amazon Webサービス(Amazon E-Commerce Service 4.0)の活用、などなど

 また、連載は全4回で以下のような構成を予定しています。

第1回 Web画像検索ツールの使い方/Google検索結果の取り込み
第2回 サムネイル・ビューア・コントロールの作成
第3回 マルチスレッドを利用した画像検索ツール本体の作成
第4回 プラグイン形式でAmazon Webサービスに対応

 今回は、本連載を通じて作成する「Web画像検索ツール」を紹介し、まずGoogleのイメージ検索ページで検索した結果を取り込む部分をプログラミングしていきます。

Web画像検索ツール「WebImageSearch」

 皆さんはGoogleイメージ検索をよくお使いになるでしょうか。筆者はあるキーワードから連想される画像を探したり、気に入った映画俳優の画像を検索したりとけっこう頻繁に利用しています。

 しかし、Googleイメージ検索は検索結果が20件ずつしか表示されないため、ページの移動が面倒であり、またそのために一覧性に欠けるといった不便な点があります。そこで、そのフロントエンドとなるWindowsアプリケーションを作ってみました。それがこれから紹介するWeb画像検索ツール「WebImageSearch」です。

■WebImageSearchの使い方

 このツールの使い方は至って簡単です。アプリケーションを起動して、検索キーワードを入力し、[検索開始]ボタンをクリック(あるいは[リターン]キーを押せば)、検索結果となるサムネイル画像(小さな画像)がどんどん表示されていきます。次の画面は、このツールで「C#」というキーワードを検索しているところです。

Web画像検索ツール「WebImageSearch」の実行時画面
検索キーワードを入力し、[検索開始]ボタンをクリックすれば、キーワードにマッチしたサムネイル画像が表示される。

 このツールでは、できる限りたくさんのサムネイル画像を画面いっぱいに表示するようにしています。また、サムネイル画像のスクロール時には最小限の描画しか行わないようにしているため、快適な速度でスクロールできます。

 トラックバーのつまみ部分を動かすと、表示中のサムネイル画像がリニアに拡大/縮小されます。

トラックバーによるサムネイル画像の縮小
トラックバーのつまみ部分を動かすと、表示中のサムネイル画像がリニアに拡大/縮小される。

 すべての画像を取得し終わるか、[停止]ボタンをクリックするか、[ESC]キーを押すと、検索は終わります。検索された画像はマウスの左ダブルクリックで、そのオリジナルの画像をブラウザで表示します(元画像のURLをブラウザで開く)。また、右ダブルクリックでは、その画像が含まれているWebページを開きます。

 このツールはもともとGoogleのフロントエンドとして作成したものですが、現在のバージョンではWeb検索部分をプラグイン形式にし、Amazonでの商品検索やYahooオークションの画像も検索できるようにしました(しかし、Yahooオークションのプラグインはまだかなり改造の余地があります)。

 検索対象となるWebサイトは、画面左上隅のコンボボックスから選択可能です。

検索対象となるWebサイトを選択するためのコンボボックス
現在はGoogleイメージ検索、Amazon商品検索(DVDおよび和書のみ)、Yahooオークション検索に対応している。

■WebImageSearchのダウンロードとファイル構成

 WebImageSearchは以下のリンクからダウンロードできます(プロジェクトはVisual Studio .NET 2003用のプロジェクト)。

 取りあえずアプリケーションを試したい方は上記の「実行ファイルのみ」をダウンロードしてzipファイルを展開し、WebImageSearch.exeを実行してみてください。

 「実行ファイルのみ」のzipファイルに含まれている、アプリケーションの実行時に必要なファイル構成は次のようになっています。

WebImageSearch.exe (本体)
ThumbViewerControl.dll (サムネイル・ビューア・コントロール)
WebImage.dll (共通インターフェイス定義モジュール)
1WISGoogle.dll (Google用プラグイン)
2WISAmazon.dll (Amazon用プラグイン)
3WISYahooAuc.dll (Yahoo用プラグイン)

 WebImageSearch.exeは、実行時に同じディレクトリにあるプラグインのDLLファイル()を読み込みます。プラグインのファイル名は拡張子が「.dll」であれば何でもよく、ファイル名を変更することにより、コンボボックスで表示される順番を変更することができます(ここではGoogle用プラグインが最初に表示されるようにファイル名の先頭に「1」を付けています)。

 なお、今回はこのうちのをプログラミングしていきます。

■アプリケーションの構成

 WebImageSearchを構成するモジュールはおおよそ次の図のようになっています。

WebImageSearchを構成するモジュール群

 メイン・ウィンドウは、各プラグインを使ってWebページやXML Webサービス(Amazon用プラグインの場合)での検索を実行し、その検索結果を取得します。プラグインは共通のインターフェイスを実装しているため、メイン・ウィンドウがプラグインを呼び出す手順は統一されています。

 プラグインから検索結果(具体的には画像やWebページのURL)を受け取ったメイン・ウィンドウは、Webからサムネイル画像をダウンロードし、サムネイル・ビューア・コントロールに追加していきます。

 サムネイル・ビューア・コントロールはメイン・ウィンドウにより追加された画像を表示し、クリックされた画像のインデックス番号をメイン・ウィンドウに返すだけの独立した独自コントロールとなっています。

 

 INDEX
  .NETでWindowsアプリを作ろう
  第1回 Google画像検索アプリを作ろう
  1.Web画像検索ツール「WebImageSearch」
    2.Web画像用のWebImageクラスの作成
    3.Google用プラグインの作成
 
インデックス・ページヘ  「.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 記事ランキング

本日 月間