第13回 オンラインゲームで検索の精度を上げる「Google Image Labeler」
株式会社ピーデー川俣 晶
2006/9/27
| 画像検索の精度を上げる、画像にラベルを付けていくオンラインゲーム「Google Image Labeler」やマッシュアップを容易にする別ドメインに対する通信を行うJSONPなど(編集部) |
ハイライト1・Google Image Labeler |
これは、あのGoogleが提供するオンライン対戦ゲームです。自動的にマッチングされたプレーヤと対戦します。ゲームは、同じ画像を見ながらキーワードを入力することで行われます。そして、両者が入力したキーワードが一致すると得点が得られ、次の画像が提示されます。
![]() |
| 画面1 画像にラベルを付けていくゲームが画像検索の精度を上げる |
さて、このサービスを試して最初に気付くのは、あまりに低いゲームへの参加障壁でしょう。guestの立場であれば、Webブラウザでアクセスし、ボタン1つでプレイ開始できます。ユーザー登録や、専用ソフトのインストールの手間もありません。プラグインのインストールの手間もありません。とても簡単にゲームを始められます。この手軽さが、とてもAjax的です (このサービスは、Google Web Toolkitで開発されているようです)。
- - PR -
通常の検索はキーワードを入力して、それに一致するテキストを探します。しかし、キーワードから画像を探す検索は、そもそも画像は文字ではないので、キーワードと一致することはありません。そこで、コンピュータに画像に描かれた内容を読み取らせ、中身を推定させる作業をやらせたくなりますが、まだまだ限定的な役割しか担えません。そのため、画像に付けられた補助的な情報(例えばimg要素のalt属性)や、前後のテキストに含まれる文字から画像の内容を推定するという作業が行われます。しかし、実はこのような方法は精度が高いとはいえません。実際に画像検索を行ってみると、たまたま近くに検索キーワードが書かれただけの関係ない画像が出てくることも珍しくありません。例えば、「三志郎」で検索して「フエ(不壊)」が出てくるなど珍しい話ではありません。
では、どうすれば検索精度が上がるのでしょうか? すぐにできる1つの解決策は、人間が画像に対するキーワードを1つ1つ付けていく方法です。しかし、それには2つの問題があります。1つは、画像のキーワード付けは非常につまらない作業であるのに、世の中には驚くほど膨大な画像データがあるという問題です。予算をつぎ込んでやろうとしても、必要な金額は青天井です。かといって、ボランティアの無償の作業に頼ろうとしても、つまらない作業なので人が集まらないでしょう。もう1つは、キーワードを付ける人間の恣意性です。ある画像を見て思い付くキーワードは人によって異なるでしょう。それどころか、間違った思い込みで、一般の人が思いもよらないキーワード付けを行ってしまうかもしれません。例えば、イルカを魚だと思い込んでいて、イルカの写真に「魚」というキーワードを付けてしまう人がいないとも限りません。
このゲームは、これらの問題にすべてケリを付ける画期的な試みだといえます。まず、ゲームに仕立てることで、つまらない単純作業を「勝つための手段」に塗り替えてしまいます。プレーヤがより大きな勝利をつかむために作業を続けるようになれば、金を掛けずに労働力を手に入れたようなものです。もちろん、プレーヤも無理に仕事をさせられているという気分にはなりません。まさに、両者が損をしないwin-win関係が成立します。そして、2人のプレーヤが相互に出したキーワードの一致を問題にするということは、特定の1個人の間違った思い込みを排除する効能があります。例えば、1人のプレーヤがイルカの写真に「魚」というキーワードを入力したとしても、対戦相手がイルカは哺乳類だと思っていれば、「魚」が有効なキーワードとして認識されることはありません。
このように、面倒な作業をうまくゲームに仕立てていき、遊びとして成立させると同時に、きちんと成果も手に入れるというのは、1つの方法論としてありでしょう。
ハイライト2・AjaxでWebブラウザ |
Webブラウザの中にWebブラウザが表示され、ネットサーフィンを行うことができます。これは、とても不思議な光景ですね。例えていえば、Windowsの1つのウィンドウの中にWindowsの画面が見えるリモートデスクトップのWebブラウザ版ともいえます。
![]() |
| 画面2 機能制限されたPalaryとフル機能を備えた親Webブラウザを切り替えて使う方法も |
しかし、このような不思議なサービスにどのような価値があるのでしょうか? 単に不思議さを堪能するために作られたものでしょうか?
そうではないようです。具体的には、以下の4つの価値があるとしています。
セキュリティ
デフォルトでJavaScriptはオフになっています。Gmailのような便利なサービスは使えないことになります。しかし、そういう場合は、親Webブラウザでアクセスすれば問題ないでしょう。
プライバシー
すべての通信はサーバ経由で行われるので、誰がどこからアクセスしているのかアクセス先には分かりません。匿名プロキシのような効能があるといえます。また、ローカルのコンピュータにはどのページをサーフィンしたのかという情報は残らないといいます。これは当然ですね。親ブラウザに残る閲覧履歴は、Palary Browserというページを見たということだけです。
自由
サーバ経由でアクセスする関係上、インターネットのアクセスを制限している国からであっても、どのサイトも自由に閲覧できます。このような機能性の是非は私には判断できません。しかし、これはAjaxが抱える技術的な必然性と直結した機能性でもあります。なぜなら、XMLHttpRequestオブジェクトは同じドメインの相手との通信しか行うことができない関係上、これを使って不特定多数のサーバと通信するサービスは、サーバ経由として作らざるを得ません。
利便性
ブックマークや設定などがサーバ側に保存されるので、どのパソコンから利用してもすぐに自分の環境を使うことができます。これはGmailなどと同じ機能性といえますね。
ちなみに私が感じた利便性は、機能制限されたWebブラウザを使いつつ、いつでもフル機能を備えた親Webブラウザに切り替えられる点です。安全性と機能性を容易に切り替えられることは、ちょっとした価値ではないかと思いました。
ハイライト3・JSONPとサービス一覧 |
ブラウザから動的スクリプトタグで呼び出せるJSONサービスの一覧です。HTMLとJavaScriptさえあれば利用できるものをリストアップしているといいます。
![]() |
| 画面2 マッシュアップを容易にする別ドメインに対する通信を行う仕組み |
さて、ここでポイントになるのは、このリストがJSONP形式への対応についての情報を含んでいることです。JSONPとは、JSON with Paddingの略で、別ドメインに対する通信を行う仕組みです。ご存じのとおり、XMLHttpRequestオブジェクトは別ドメインに対する通信を行うことができません。しかし、マッシュアップを行う場合には、当然のことながらほかのドメインのサービスを直接呼び出したいわけです。それを実現する手段がJSONPというわけです。それゆえに、マッシュアップ時代の基本技術の1つと考えてよいと思います。
そして、サービスがJSONPに対応しているか否かは、直接通信のパフォーマンスに直結します。JSONPに対応していないということは、一度同ドメインのサーバを経由して情報を取得する必要があるため、どうしても通信に要する時間が多く必要とされます。
そのような観点から、価値のあるサービス一覧ではないかと思います。
そのほかのみどころ |
Ajaxとそれに関連する話題を紹介します。
AjaxとFlashをブリッジさせたプレゼンテーションソフト
これは、Webブラウザで使用できるプレゼンテーションソフトです。上記URLにアクセスし"Create a Presentation"をクリックするとすぐにプレゼンテーション作成を体験できます。英語版ですが、PowerPoint等の利用経験があれば、容易に使い方は分かるでしょう。
| 画面3 PowerPointに慣れている人には使いやすいUI |
さて、このサービスは作成画面やスライドショーの画面で右クリックすると、Flashのメニューが表示されます。それに気付いた人なら、「なぜFlashのサービスをこの連載で紹介するの?」と思うかもしれません。しかし、実はこのサービスはJavaScriptとFlashが連動して動作する構造を取っているのです。ユーザーインターフェイス部分は主にFlashで作られていて、FlashをJavaScriptで制御する“Flashobject.js”が両者の間を取り持っています。
こういうやり方がAjax的に正統か異端かは問うだけ無駄でしょう。有効で有用であれば、それは試みる価値があるのです。
![]() |
| 作業中インジケータが「スロバー」 |
スロバー
上記のJavaScript Throbberは、Alex Bosworthさんが、とてもシンプルなThrobber(スロバー)を実現するJavaScriptコードを作成したという記事です。
さて、ここで問題です。Throbber(スロバー)という言葉を知っていますか? この言葉の項目は、英語版のWikipediaにはありましたが、日本語版にはありませんでした。今後、この言葉は日本でも利用される機会が増えるのではないか……、あるいは、こういう用語は使った方がいいのではないかという趣旨で取り上げました。
Throbberとは、Webブラウザ等のウィンドウ右上にあって何か作業中であることをアニメーションで示す画像です。古くは、Netscape Navigatorの流星が落ちてくるアニメーション、最近ではInternet Explorerのはためく旗や、Forefoxの回転する黒いサインなどがこれに当たります。
当然のことながら、上記のJavaScript ThrobberはWebブラウザ自身のThrobberを動かすものではありません。ウィンドウのクライアント領域(主に作業を行う領域)の内部で動くインジケータを表示するものにすぎません。しかし、それもThrobberと呼ぶに値します。そして、単にさまざまな目的で表示されるインジケータと区別するために、このようなインジケータにThrobberという名前を付けて呼ぶことは、おそらく有意義でしょう。
リサイズ・テキスト
-
JavaScriptでブラウザのフォントサイズを検出する方法
見られているテキストの大きさは?
これはプログラミングの小さな、さえたアイデアです。
多くのWebブラウザは、文字サイズを容易に変更できる機能を持っています。Internet Explorerなら「表示」→「文字のサイズ」→「最大、大、中、小、最小」という操作で変更できます。そして、操作しても文字の大きさが変わらないために、CSSで固定サイズの指定はやめよう……という話になるわけですが……。
動的にページ内容を組み替える関係上、Ajaxアプリケーションはどうしても文字サイズを決め打ちして、固定的にレイアウトを組みたくなります。もし、固定レイアウトが悪いことだというのなら、現在の文字サイズの指定に合わせてレイアウトを組み直す必要が生じます。ところが、その指定の数値は容易には取得することができません。
そこで、ここで紹介したこのテクニックを使うことができます。ちょっとしたアイデアで、さまざまな可能性が開拓されていくのがAjaxの世界の面白さですね。
![]() |
| JSONベースのデータ交換言語 |
JSPON
JSONPの名前を出したので、注意喚起のために似て非なるJSPONという言葉も紹介しておきます。JSPONは、JavaScript Persistent Object Notationの略で、JSONベースのデータ交換言語です。オブジェクトの識別と、大きなオブジェクトグラフでの効果的な転送とオブジェクトの永続化の手法を標準化することを目的としたものです。そのために、オブジェクトに特定の名前でプロパティを埋め込む仕様を含んでいます。
ここではJPSONには深く踏み込みませんが、このような名前もあるということを、頭の片隅に入れておいても良いでしょう。何せ、紛らわしい言葉が増えていますので。
Ajax うきうき Watch バックナンバー
- 第1回 Webアプリのユーザビリティを改善しまくるAjax
- 第2回 Ajax、それはWeb 2.0へと続く道
- 第3回 どんなに無茶をやっても「それもありかな」なAjax
- 第4回 自動車業界のAjaxを活用したキャンペーンを目撃せよ
- 第5回 “どのブラウザでも動くAjax”を共有財産として育てよう
- 第6回 プロプライエタリ2.0から考えるAjaxの公開/非公開部
- 第7回 メモリリークが小さくなったGoogle Maps APIの新版
- 第8回 “CGUI” 消費者が作り出すUIの時代突入
- 第9回 巨大化するAjaxライブラリをシンプルにする新たな流れ
- 第10回 地図のように年代を移動できるMITのAjax歴史年表
- 第11回 JSONがRFCになり、どんどんこなれるAjaxサービス
- 第12回 サーバが通信を開始できるComet活用Webチャット
- 第13回 オンラインゲームで検索精度を上げるGoogleの巧みさ
- 第14回 IE7とFirefox 2への利用者の大移動は起こるか?
- 第15回 グーグル検索エンジンを特定ジャンル専用に、Co-op
- 第16回 帯域やデバイス領域をフル活用させる“モバイルAjax”
- 第17回 新しい技術を模索するYahoo!、Google、MS
- 第18回 Ajaxの高度な使用例、Yahoo! pipes
- 第19回 Apollo参戦でウィジェット開発者の争奪戦が激化
- 第20回 Twitter登場で注目されるRTコミュニケーションツール
- 第21回 過熱するTwitterブームとMicrosoftのマッシュアップ
- 第22回 iPhoneのAjax戦略、そして今日もWeb APIは増加する
- 第23回 Ajax開発者がヒーローになるとき、それはいま!
- 第24回 携帯電話への拡張を進めるGoogleとWeb隠しコマンド
- 第25回 Ajaxで加速!? エンタープライズ2.0とWebOSの普及
- 第26回 「言葉」を超えた説得力を持つAjaxの存在感と広がり
- 第27回 ゲームから読み解く、俺スクリプト時代の知的な挑戦
- 第28回 マッシュアップ元年が終わり、2008年はどうなる?
- 第29回 Twitterやクラウドへも分岐するAjax/Web APIの道
- 第30回 Ajaxはじめて物語、そしてサーバでも動くJavaScript
- 第31回 新ブラウザ戦争はon fireだがJavaScriptはoffのナゾ
- 第32回 Google App EngineはAjaxへのハードルを下げるか?
- 最終回 Pure JavaScriptの動画再生やRPGも好きでした
AjaxでつくるインタラクティブWebアプリケーション
AjaxでWebフォトアルバムを、ゼロから開発する。ライブラリを用いて機能を作り上げていくステップを、具体的に解説する
| 古くて新しいAjaxの真実を見極める 「Webインターフェイスの新しい手法」「画期的なWebアプリケーションの仕組み」であるとして開発者たちの人気を集めるAjaxとは何なのか、その真実を見極めてみよう 最終更新 2005/8/2
|
||
ホワイトペーパー(TechTargetジャパン)
- いまさら聞けないTwitter超入門−@IT記事も対応なう (2010/2/4)
Twitterは最近話題のつぶやきツール。基本的な使い方から、iPhoneアプリの使い方、RTの解説、4人のご意見番の活用例や感想まで - HTML5は開発者側の都合。ユーザーには関係ない (2010/2/2)
3つのレンダリングエンジンを載せている“国産”ブラウザベンダは、HTML5やWeb/ブラウザの進化について何を語るのか - テキスト・フォント周りをキレイに見せるCSS、13選! (2010/1/29)
無数にあるCSSのプロパティを大まかに分類し、1つずつ紹介していく本連載。初回は、テキスト・フォント周りについて - OpenGL ESが大変な3Dアプリ開発を楽にするUnity (2010/1/27)
iPhoneゲーム開発に必須のOpenGL ES。そのコーディングに手こずっている方に有用なツールを紹介し簡単なサンプルを作成します
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |












