速く検索するための技術

 まず,どうしたら1兆ページという膨大なページの中から,求められていることに関連するページを探し出すか。検索にはコンピュータを使いますが,コンピュータは人間よりも速く処理できます。例えば,先ほどは人間が1ページを調べるのに1秒かかると仮定しましたが,コンピュータではもっと桁違いに速く処理することができます。しかし,仮に1ページを1000分の1秒で判断することができたとしても,検索に3カ月かかります。

 このように1台のコンピュータでは厳しいので,コンピュータをたくさん集めてもっと高速に処理しています。例えば,1秒間に1000ページ処理できる性能のコンピュータを100万台集めると,100億ページの処理を10秒でできるようになります。先ほどの250年が10秒となり,だいぶ現実的になってきます。

 ただ,たくさんのコンピュータを並べて使うというのは,発想としては簡単ですが,実際に使いこなすことは難しい。2~3台のパソコンならともかく,10台,100台,1000台,1万台となると,とても普通の方法では活用できません。

 そこでGoogle社では,このようなたくさんのコンピュータを簡単に扱えるようにするためのフレームワークを開発しています。このフレームワークを使うことで,100行程度のコードを書けば,数万台というコンピュータを使い,数テラバイトもの大量のデータを簡単に処理できるようになるのです。

良いページを検索するための技術

 速く検索するのとは別に,もう一つ,良いページを探すという問題があります。良いページを探すための手法もいくつかありますが,そのうちの一つに「ページランク」と呼ばれる技術があります。これは,Google社の検索を特徴付けるアルゴリズムの一つです。基本的には,「たくさんの人が集まるページは良いページではないか」という推測に基づいています。

 ユーザーがウェブ・ページ上のたくさんのリンクをランダムにクリックしたと仮定し,「どのページに人が集まりやすく,どのページにはそれほど人が行かないか」ということをモデル化します。これにより,どのページが人気のあるページで,人が集まりやすいか,を推定します。これによって,同じ事柄について書いてあるページが複数あった時にも,どちらのページの方がより有用かを推定して,ユーザーに結果を返すことができます。

もっと便利に使ってもらいたい

 さらにGoogle社では,“良いページを速く検索する”という最低限の機能だけでなく,ユーザーにもっと便利に使ってもらえるような機能を提供しています。

 例えば,アーティストの倖田來未さんという方がいます。この方は,名前を入力するのが非常に難しい。きちんとした表記で検索してくれる人は,むしろ少数派です。すべて平仮名の表記で検索する人が,きちんとした表記で検索する人の3倍近くいます。中には,すべて片仮名の表記で検索する人もいます。

 たとえ平仮名や片仮名で入力していたとしても,そのユーザーが求めるのは,「倖田來未」という表記で検索した結果だろうと考えられます。あるキーワードが入力された時に,「本当は多分これを探しているのではないか」というのを想像し,「もしかしてこのキーワードで検索したいのですか?」というような“お助け機能”も提供しています。もちろん,これを実現するための技術も開発しました。

 これまで示してきた機能やサービスを実現するための様々な技術を開発しているのが,Google社のエンジニアです。次回は,Google社のエンジニアが普段どのように仕事をしているのかについて,紹介します。