Google のコードも最初は大学レベルだった

3月は論文の〆切が2-3個あるので、それを避けるように引っ越し日程を詰めているのだが、なかなか難しい。もはや数万円高くなるくらいは諦めている (論文の〆切間際は1日でも時間を大切にしたいので……)。

[twitter:@hillbig] くんが以前紹介していた「IN THE PLEX グーグル ネット覇者の真実」

グーグル ネット覇者の真実 追われる立場から追う立場へ

グーグル ネット覇者の真実 追われる立場から追う立場へ

を登美ケ丘イオン (NAIST から最寄りのイオン) で先日発見し (ちなみに高の原のイオンの書店にも何冊か入荷している)、少しずつ読んでいたのをようやく読了。ものすごいボリューム……。しかし少なくとも情報系の方は必読。

この分量で、最初から最後まで全部密度が濃い、というのは信じ難い。技術的な話は前半1/3ほどで終わるが、自然言語処理や機械学習、リンク解析についても概ね正しく書かれているし、分野外の人にも分かりやすい。興味深いのは Google の検索システム最初の実装は Page が Java で書いて、後に Python で書き直されて、その後さらに (恐らく C/C++ で) 書き直された、という話。

 ハッサンによれば、ペイジのプログラムは「笑えないくらいバグだらけだった」。この野心的なプロジェクトに、当時はまだ比較的新しいプログラミング言語だった「ジャバ」を使っていたことも問題の一部だった。プログラムがクラッシュし続けたので、「ジャバ自体のバグを直そうと試みたが、10回ほど繰り返した後で、時間の無駄だと気づいた」とハッサンは言う。「自分がもっとよく知っていて、バグのない言語で全面的に書き直すことにした」
 ハッサンが使用した言語「パイソン」は、ウェブ上のプログラム開発言語としてすでにその柔軟性が重宝されるようになっていた。(p.33)

Google はいまでこそバリバリにコードの書ける人だらけで、堅牢でスケーラブルな検索システムが構築されているが、システムが元からそうだったわけではなく、最初はやっぱりアイデア段階のコードであり、そこでアイデアの有用性が示されてから、段階的に書き直されていった、という話。また、Java のような (当時) 定評がないような言語を使って実装するのも、大学にいるとあるある系なのだと思うのだが、そういうのも逆に視点から見ると大学だからこそできるリスクを取った挑戦なのかもしれないと思ったり。

 ペイジとブリンはそのほかにも、マイクロソフトの研究部門やカーネギーメロン大学のコンピュータ科学学科の教員の採用基準を満たすような人材を追い求めていた。最初の快挙は、カリフォルニア大学サンタバーバラ校のウルス・ヘルツル教授の引き抜きに成功したことだ。
……
 問題の一部は、システム構築の際に行ったコーディングにあった。ヘルツルはそれを「大学コード」(つまり「素人レベル」)と評した。「パイソンを使っているため、サーバーが1秒に10以上の検索リクエストを処理できなくなっている。研究用のシステムには最適かもしれないが、高いパフォーマンスを出すには不向きのソリューションだった」と彼は説明している。彼は直ちにコードの書き直しに着手した。(pp.61-63)

大学でもすごい人はすごいわけで、情報系でアメリカの大学が日本と比べて明らかに優れている点は、教授クラスでもバリバリコードを書いている人がいる、というところだと思う。自分自身、そんなにプログラミングの能力があるわけでなし、「大学コード」であることは承知した上で、コンセプトとして方向性が正しいことを示すというのが立ち位置なのだが、「大学コード」すら書けないような感じになっても仕事を続けるのはつらいだろうな、と思っている (たぶん、それがここしばらく研究者人生で楽しい時期は一度しか来ないã‚„人生は偶然と伏線の連続ですで書いてきていることだが)。

Sunnyvale の Yahoo! Labs に遊びに行ったとき、(今年の3月に開催される言語処理学会年次大会の招待講演者でもある、現在は Microsoft Research の主任研究員の) Patrick Pantel さんから、Yahoo! Labs の研究員の採用基準を聞いたときも、「北米の大学で faculty position が取れるくらいの実力がある、新しく博士号を取得した人に来てほしい。assistant professor になれないような実力の人なら、うちは厳しい」とおっしゃっていて、アメリカだと企業と大学で人材の熾烈な獲得合戦が行われているのだろう。もちろん企業なので論文を書くだけでなく、プログラムも書けないといけないわけで、いろいろと心底大変そうである。(それでもまだ大学と比べると、研究費獲得に明け暮れなくてよいだけ、企業のほうがまし、とのことだったが……)

この本、後半に入ると技術的な話はがくっと減るのだが、そちらはそちらでぐいぐいと引き込まれる。中国で Google がどのように振る舞い、そして敗退していったか、Orkut 以外の Google が作る SNS はなぜことごとく失敗した (ている) のか、Google Books のように全員の利便性が上がると考えられるのになぜ関係者から猛烈な抵抗を受けるのか、というような、Google の負の側面についてえぐり出されているところも大変興味深い。相手のことを思ってよかれと思って上から目線で押し付けるのを「パターナリズム (語源は「パターン」ではなく英語でいう father に当たるラテン語の pater という言葉)」と言うのだが、人間は不合理な存在である、ということかなぁ (いや、それはしみじみと感じるのだが……)。

情報系の人だけでなく、普段 Google を使っている全ての人にお勧めの本なので、興味を持った方はぜひお読みいただけると。(全部で600ページを超える大著だが、いろんなトピックが詰まっていて、どの章も削れない密度の濃さである)