第12回 スケーラビリティまつもとゆきひろのハッカーズライフ(2/2 ページ)

» 2008年02月26日 00時00分 公開
[Yukihiro“Matz”Matsumoto,ITmedia]
前のページへ 1|2       

スケールによる劇的な変化

 以上のことから、ITの変化というのは、ソフトウェアの進歩よりもハードウェアの性能向上と、価格低下による普及によって実現されてきたといっても過言ではないでしょう。これまでの歴史では考えられなかったような高性能のコンピュータが、広く、大量に使われるようになっているのです。連続的な変化とはいっても、これだけスケールが伴うと大きなインパクトが発生します。

 物理学の領域では、極端にスケールが違うとまったく異なる法則を使うことが知られています。例えば、極端に小さな素粒子の世界では、粒子はある場所に確率的にしか存在しないとか、どんなに観測精度を向上させても決して確定させることができない事象が存在するとか、日常的な常識では考えられないこと*が起こります。また、逆に何億光年という極端に大きなスケールにおいても、異なる法則が登場してきます。

 いま、この瞬間にITの世界でも似たようなことが発生しているような気がしてなりません。20年前、わたしたちがやり取りするメールの数は1日数通といったレベルでした。しかし、今や1日数百通のメールを受け取るのは普通のことで、中には数千通を受け取る人もいるでしょう。世界中に数千ページしかWebページが存在しなかったころと、数億ページの情報があふれている現在とでは、情報の探し方も異なってくるはずです。

 このような変化を発生させている元凶は、人間にあります。数百通のメール管理を想定して設計されたアプリケーションで数百万通のメールの管理を行うことは不可能ではないでしょうが、たぶんいろいろな局面で不都合が発生することでしょう。メールの処理に耐えがたい時間がかかったり、必要なメールを見つけ出すことができなかったり。あるいは、数億ページのWebからある単語を含むページを探し出すことは、通常のテキストファイルを検索するgrepのようなツールが用いているのと同じアルゴリズムを採用しても不可能ではないでしょうが、ベタに検索したのでは結果が出るまで何日もかかるでしょうし、検索結果として得られた単語を含んでいる数万ページのうち、どれが重要か判別することはほとんど不可能でしょう。人間には忍耐力にも取り扱うことのできる複雑さにも限界があるのです。

 このことをいち早く認識していたのがGoogleです。彼らは、ある情報を含むページをただ単にリスト化するだけでは不十分であり、どのページが重要であるかを高速かつ自動的に行う必要があることを認識していました。PageRankという手法を導入した彼らの検索エンジンは既存のライバルたちよりも「よい結果」を返し、Googleは後発ながらもあっという間に首位の座を獲得したのです。

キーワードはスケーラビリティ

 ということで、これからのキーワードは「スケーラビリティ」になると予想します。いままでと同じペースかどうかはともかく、コンピュータの性能はこれからも向上していくでしょう。また、ネットワークにつながれたコンピュータの台数や、それらの持つ記憶容量、また流通する情報量は、想像を超えるレベルで増加するはずです。「そのような事態にどう対処するか?」が今後の最も大きな課題になっていくわけです。

 考えてみれば、増大する複雑さに対処するというのは、プログラミング言語をはじめとしたソフトウェアが長年直面してきた課題ですが、これからはその増加速度がどんどん加速するのではないでしょうか。

 エクストリームプログラミング(XP)は、「テストがよいものであれば、限りなく頻繁に行えばよいだろう」「コードレビューがよいのであれば、いつもレビューしながらプログラムすればよいだろう」というように、ボリュームを極端(エクストリーム)にひねってみることから誕生したのだそうです。IT業界の未来を予想する際も、ボリュームを極限までひねってみるのがよいかもしれません。例えば、「インターネットユーザーが数十億人を超えたらどうなるだろう」とか「1日に受け取るメールが数万通を超えるようになったらどうしたらよいだろう」など。そのときは、できるだけ機械化/自動化する(Google PageRankの例)、みんなの力を結集する(Wiki、ソーシャルタギング*などの例)、非同期化してクライアントに処理を分散する(Ajaxなどの例)といった技法をいろいろと考案していく必要があります。ふと考えてみると、これらはみなWeb2.0*で注目されているものだったりします。Web2.0を説明するには、スケーラビリティの観点から行うとよいかもしれません。

 わたしの得意なプログラミング言語の領域でも、「ある言語から利用可能なライブラリが数万を超えたらどうなるだろう」とか「名前の衝突の回避や組織化をどう行えばよいのか」など、いろいろ考えることはありそうです。

このページで出てきた専門用語

日常的な常識では考えられないこと

日常的なスケールでは無視しても実質的に変わらないため、これらを考慮しない法則が使われている。

ソーシャルタギング

ソーシャルブックマーク(Web上に登録していくブックマークシステム)などに集積された情報にタグを付加してカテゴライズする方法。

Web2.0

次世代Webの主流となるべきスペックやポリシーのこと。現段階では、はっきりした定義が決められているわけではない。


本記事は、オープンソースマガジン2006年3月号「まつもとゆきひろのハッカーズライフ」を再構成したものです。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ