Google Base論。

Google Baseの登場の仕方は面白い。
私もそのニュースをきいて、さすがに面白いことをやるなーと
思って見てみているのだが、私の面白いと思ったポイントは
他の人とずれてるみたいなので、ちょっと書いてみることにした。

http://amrita.s14.xrea.com/d/?date=20051028#p01
この議論はなかなかいいところをいっているんだけど、
本当はもっと奥が深いんじゃないですかね。

Googleがいままでやってきたことはなんだったのだろうか。
それを一言でいえば、「keyとvalueを結びつけること」である。
検索という仕事でいえば、検索語と検索対象のURLを結びつけることである。
他の仕事も全部これで切り取ることができる。
Google Cacheは、URLに対して中身をとってくること、
つまりKey=URL、Value=Contentだ。
GMailとか、他のサービスもこのようなものだと考えることができる。

「それって当たり前のことじゃん?」
と思えるかもしれないけれど、実際にはそうじゃないです。
keyが43億個くらいある場合にvalueを取り出す技術は容易ではない。
それを容易にできる環境を整えることができたから、
それを何にでも応用できるようになって、
なんでもかんでもサービスを立ち上げられるようになったんです。
なので、この技術が本質的なコアコンピタンスなんです。

「この技術」と言ったが、それは具体的には何を指すのか。
http://labs.google.com/papers/mapreduce.html MapReduce
このMapReduceという技術です。
これは、Googleの最も基本的な部分を支える技術の一つなんです。
(あともう一つあげるとすれば、GFS(GoogleFileSystem)ですかね。)
MapReduceの内容の説明や、なぜそんなにも重要かの説明は難しい。

http://www.dodgson.org/omo/t/?date=20051116
このへんとかよく書けてますね。

で、Google Baseの何が面白いのかと言えば、
いままではその技術を、なんらかのwrapperと共に提供していた。
例えばWebの検索であったり、GMailであったりと。
しかしGoogle Baseでは、その技術を生のまま提供しはじめたと。
こんな風に、内蔵を生のままさらけだすというサービスを始めた。
(とかいいつつ実際のところは、いわゆるデータベース的な
wrapperをかぶせたということなんだろうけど…。)

で、話は飛ぶけど、
Ningは何かというと、データベースとサーバ立ち上げを
簡略化する仕組みなわけだ。
このNingってやつも、世の中のアプリはそのほとんどが、
でかいデータベースとちょっとしたコードの組み合わせでできてるよな、
っていう思想を背景として、それを具現化したものである。
アイデアは面白いん。

でも実際にプログラマがコードを書くところがPHPっていうところが
いまいちひねりがきいていない。どんなにDBとサーバが良くでも、
PHPで書けることって、先が見えてるじゃん、という気がしないでもない。
もちろんここがPHPなのは、Marc Andreeseenの趣味ですね。
将来的にはPython, Rubyへの対応も考えてるってのは、もちろん知ってるけど、
ここでは基本で対応しているのはPHPであるっていうことを重視している。

ある意味、Google BaseとNingの背景は
共通していると見てもいいだろう。
任意のデータベースを生で利用できる環境を提供し、
そのデータベースを背景としたサービスを提供できるようにすると。

(ただGoogle Baseは、背景となるデータベースが、
徹底的にスケーラブルなので、この点は違う。
これはGoogleの持つ最大の利点なので、この点を最大限に生かすような
方向に進むのではないか。)

で、この二つの差分を見くらべてみると、
Googleの次の一手が見えてくるはずだ。
その次の一手とは「プログラミング言語Google」ではないか。
(おそらく拡張子は、.g だね。)

Ningが持つ最大の欠点は、PHPをそのまんま使っているところだろう。
Ningの背景にあるのは、全てのアプリはデータベースを背景として
なりたつようになるというパラダイムの変革への意欲なのだが、
しかしその変化はプログラミングにも及ぶという点が見えていない。
そのパラダイムの変化は、プログラマーに対するユーザインタフェースの変化、
つまり、プログラミング言語の変化(進化)としてあらわれる。

Rubyを基盤としたRuby on Railsが高い評価をうけているのは、
結局のところRubyの自己変形能力がとても優れていたからであって、
RailsはRubyを徹底的にDSL(Domain Specific Language)的に扱い、
Webアプリに適した構造に組み変えることによって利用した。
それが高い評価を得た理由だろう。

しかし、背景となるデータベースへの問い合わせはSQLだし、
言語は並列性を前提として設計されてないし、
まったく新しい次元を達成したと言いきれるわけではない。

で、そこにプログラミング言語Googleがやってくると。
ファイルの読み書きみたいな過去の概念は使われてなくて、
全ては、keyとvalueの集合体に対する操作へと抽象化される。
そしてそれらの操作は、何万台かの大量のマシンが並列に処理する。
要するに豪勢な並列プログラミングインフラを背景として、
そのインフラに特化したプログラミング言語となるわけだ。

とかなんとか、あたかも予言のように言ってみましたが、
実はもうすでにあるんです。それが、Sawzallです。
http://labs.google.com/papers/sawzall.html

これは、Googleに在籍するRob Pike、そうあのRob Pikeが作った言語。
詳細は論文読んでみてもらえればわかりますけど、
要するに今言ったみたいなことがかかれている。
つまり、Googleの持つパラレルなバックエンドに対応する
言語を作りましたよ、ということ。

Webの未来はNingのものではなく、
プログラミング環境Googleの元にもたらされるに違いない。
そういう妄想でした。

Last modified: 2006-09-05