IIJでは広報誌「IIJ.news」を隔月で発行しています。この4月発行号から誌面がリニューアルされ、私も巻末でコラムを連載する事になりました。残念ながら、IIJ.newsではそれほど紙幅がとれませんでしたので、関連する情報をこちらのblogでも書いてみることにします。1
このコラムの前半部分はIIJ.news vol.109(PDFで公開中)でご覧下さい。
インターネットのすべてを検索するためには?
前半で紹介したとおり、検索エンジンでは瞬時に検索結果を表示するために、収集したWebページ情報を整理してキーワード毎の索引を作成しています。この作業、一つ一つのWebページに対して行うのはそれほど大変ではありませんが、インターネットに存在するWebページはあまりにも膨大です。ありとあらゆるWebページを検索対象にするためには、途方もない量の作業が発生することがご想像頂けるのではないでしょうか。それだけ大量の作業をどのように行い、また、作業の結果を保存するのか。いままで数多くの人々が、この難問に挑んできました。後半は、実際の検索エンジンがどのようにそれを解決していったのかを紹介したいと思います。
高性能なコンピュータを使ったAltaVista
ここまで紹介したような「ロボット型の検索エンジン」は1990年代中頃に現れました。当時はインターネット上にあるWebページの量も現在に比べると格段に少なかったと思われますが、現在に比べて非力な当時のコンピュータにとっては、そう簡単に太刀打ちできる量ではありません。いくつもの検索エンジンが開発されていましたが、どれも「インターネットのすべてを検索できる」とは言いがたい状態でした。
そんな中で登場したのが、1995年にDEC(米ディジタル・イクイップメント・コーポレーション)2の研究所が開発したAltaVista(アルタビスタ)です。
当時、DECはAlphaと呼ばれるブランドでコンピュータを販売していました。Alphaは計算能力や記憶能力において、当時の類似製品よりも優れているということをアピールしており、その宣伝の一環として、高性能なAlphaを使った検索エンジンであるAltaVistaを稼働させたのです。実際、AltaVistaは当時の他の検索エンジンと比べても、検索対象のWebページの多さ、検索結果が表示されるまでのスピードともに、一歩ぬきんでた感がありました。
高性能なコンピュータを使えば優秀な検索エンジンが作れるということを、実際に実現して見せたのです。
大量のコンピュータを使ったGoogle
一方で、1996年ごろに登場したGoogleは全く異なるアプローチを取りました。Googleは、一台一台はそれほど高性能ではない(むしろ性能の低い)コンピュータを大量に使うという手法を選択したのです。
従来、多数のコンピュータを同時に利用するというのは、役割の分担や保存情報の分散などに困難があり、性能を上げることが困難だと考えられていました。このため、複数のコンピュータで分散して処理を行う場合でも、それぞれのコンピュータはある程度高性能なものを使い、できるだけコンピュータの台数を増やさないような方針にすることが多かったのです。
しかし、Googleは従来考えられていたものよりも遥かに多い台数のコンピュータに、柔軟に処理を分散させるための画期的な手法を考案したのです。この手法を用いることにより、Googleは従来利用されていたよりも一桁も二桁も多い台数のコンピュータを使い、極めて高性能な検索エンジンを作り、膨大なWebページを検索対象にすることに成功したのです。さらに、Googleは、豊富な計算能力を活用して「どのWebページがより重要かを統計的に導き出す計算手法」を編み出します。これにより、従来より精度の高い検索結果を表示することができるようになりました。
そして、クラウドへ
さて、ここまで検索エンジンの性能を向上させるための二つのアプローチを紹介しました。
検索エンジン | 性能向上の手法 | 単体のコンピュータの性能 | 使用するコンピュータの台数 |
---|---|---|---|
AltaVista | スケールアップ | 高性能 | 少数 |
スケールアウト | 低性能3 | 極めて多数 |
Googleはもちろん、現在活躍している大規模な検索エンジンは、何かしら「スケールアウト」的な手法を採用しています。サービスが普及するかどうかは技術的な課題以外にも様々な要因があるため、その理由を性能向上の手法だけで説明できるわけではありませんが、「検索エンジン」という目的にはスケールアウトという手法が適していたのは確かなようです。
また、Googleによって実践されたスケールアウトという手法は、検索エンジンだけでなく一般的な用途で有効ではないかということを考える人も現れました。そして、研究や実践が進められた結果、スケールアウトという考え方は、「クラウド」・「ビッグデータ」という技術へと発展することになります。
ビッグデータとは、従来ではコンピュータの性能上の制約でとても扱うことができなかったような膨大のデータを、スケールアウト的に構成された大量のコンピュータ群で解析することで、そのなかから有意な情報を取り出すという技術です。ビックデータ技術を使うことで、いままで注目されていなかったデータがビジネスや研究に再活用できるのではないかと期待されて、大きな注目を集めています。
「検索エンジン」というとキーワードを入力して検索ボタンをクリックするだけという単純な画面にだけ目が向きがちです。ですが、その後ろでは様々な工夫が凝らされていること。また、そういったチャレンジがあったからこそ、いまのクラウドやビッグデータという技術に繋がってきたということ。検索ボタンを押す時に、そんなこともふと考えてみて頂ければ幸いです。