あるITアーキテクトに,今どんな技術に興味を持っているか尋ねた。すると,「捨てる技術」との答えが返ってきた。筆者が怪訝そうな顔をしたからだろう。「ECサイトでテレビを買った人に,テレビ台をリコメンドする」という例を引いて,内容を分かりやすく説明してくれた。

 一般的な実現手法では,テレビの販売ページに関連情報としてテレビ台を載せたり,最近の行動履歴(ログ)の解析結果に基づいてリコメンドしたりする。ただ,テレビのようなコンシューマ向け製品では,興味を抱く対象が移ろいやすいことから,長期間の行動履歴を取っておいても意味はない。それなら,いっそのこと行動履歴を捨て,テレビを買うという行動を見張っておけばいいと思ったとのことだった。そのイベントが発生したら,テレビ台をリコメンドするというアクションを起こすのである。現在,その検証が進んているという。

Googleはデータをどんどん捨てている

 このITアーキテクトは「Googleでは,データをどんどん捨てていると聞いた」ことから,所望のイベントを拾い出して残りは捨てるという,上記のアイデアをひらめいたそうだ。一般の企業システムでは,規格外のデータがあれば例外処理を呼び出して対処するのが常だが,GoogleのWeb検索システムはそうではない。HTMLの書式が乱れたページや,HTTP GETリクエストに対して無関係なHTMLを次々に応答する不正サイトなどの情報は捨てている。また,人気度(Popularity)の低いサイトに関する情報もふるい落としている。

 ちょっと実験してみよう。「アーキテクチャ」に関連するWebサイトをGoogleで検索する。筆者が試したところ,880万ほどの関連ページ見つかったと表示された。ページの「次へ」を次々にクリックし,検索結果の最終ページを開く。筆者は手間を省くため,URLを何度か書き換え,最終ページのURL「http://www.google.co.jp/search?hl=ja&lr=lang_ja&q=アーキテクチャ&start=670」を突き止めた。

 その最終ページには,「アーキテクチャ に一致する日本語のページ 約 8,800,000 件中 641 - 641 件目 (0.76 秒) 」と表示された。つまり,880万程度ある関連ページのうち,検索結果ページから行き着けるのは上位641件に限られていた。ただ通常は,膨大なWebページがヒットしたら検索語を変えたり,複数の単語を併記するなどして再検索を試みる。だから,こうした実装でも実用上問題はない。

条件に合うデータを分散処理で迅速に抽出する

 Googleでは,処理過程でデータを集約していく計算モデルの「MapReduce」により,大量の検索結果から人気度の高いサイトだけを抽出,すなわち人気度の低いサイトの情報を削っている。これを大量のPCで分散処理することにより,高い応答性を実現しているのだ。この「MapReduce」を含むGoogleアーキテクチャを支える技術については,日経SYSTEMS2008年12月号の特集記事「ITアーキテクチャの作り方」の最終パートで解説している。ちなみに,その最終パートは日本IBMで,最新技術動向の情報交換を行うためのセミナー「渋谷テクニカルナイト」を主催している方に寄稿してもらった。

 原稿を寄稿してもらった義理もないわけではないが,純粋にテーマ(SOAを加速するイベント処理技術の価値!)に興味を抱き,11月14日に開催された「渋谷テクニカルナイト」に参加した。企業システムで一般的なリクエスト-リプライではなく,(複合)イベントの条件が成立したらサービスと連携する,すなわち「テレビを買うというイベントを見張っておき,それが発生したらテレビ台をリコメンドする」形態のシステムに対する注目率が高まっているそうだ。特に,アプリケーション基盤をSOAで整えた企業などから,ニーズが寄せられているという。

 大規模なイベント処理システムの事例は,まだ少ない。大量データを扱うものとしては,金融取引の中からマネーロンダリングなどの怪しいトランザクションを抽出する検知システムが検証中だという。被害が続出している振り込め詐欺についても,MapReduceのような分散に適したふるい落とし技術を活用し,該当イベントをリアルタイムに抽出して即座に警告を発するシステムが検討されているようである。不要なイベントを捨て,所望のものを迅速に浮かび上がらせる技術の進歩や応用に期待したい。