![]() |
連載 .NETでWindowsアプリを作ろう第1回 Google画像検索アプリを作ろうデジタルアドバンテージ 遠藤 孝信2005/06/25 |
|
|
本連載では、ある程度実用的な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は、実行時に同じディレクトリにあるプラグインの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アプリを作ろう 」 |
ホワイトペーパー(TechTargetジャパン)
- 逆引きリファレンス:コア編 (2010/3/12)
jQueryのキモともいえる$()関数を始め、jQueryオブジェクトの中核となるメソッドについてまとめた、すぐに役立つ12本を一挙公開 - .NET TIPS - .NET開発のテクニックとヒント集 - (2010/3/11)
− LINQ文で動的にWhere句を組み立てるには?
− GridViewのフッタ行に合計値/平均値を表示するには?
− コレクションをプロパティ値によりグループ化するには? - いくつかのVS 2010 RCの更新 (2010/3/10)
Visual Studio 2010 RC版のIntelliSenseおよびWebデザイナに関するパッチのリリースと、そのほかの問題点についてのお知らせ - C#ラムダ式 基礎文法最速マスター (2010/3/9)
ラムダ式(C#)の基礎文法を、短い説明と簡単なコードで簡潔にまとめる。「ラムダ式、どう書くんだっけ?」という場合の簡易リファレンスとして活用できる
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 New! |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜Java編〜
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |

| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |

| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |
| ◆ | 直属上司が海外にいるのエンジニアに見る 【実例】場所に捉われないワークスタイル |

| ◆ | 「仮想化工房」のマイスターが選んだのは VMware、Hyper-V、そしてVirtageだった! |
| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |











