Hatena::ブログ(Diary)

武蔵野日記 このページをアンテナに追加 RSSフィード

2012-02-26

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

Google のコードも最初は大学レベルだったを含むブックマーク Google のコードも最初は大学レベルだったのブックマークコメント

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

@ くんが以前紹介していた「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ページを超える大著だが、いろんなトピックが詰まっていて、どの章も削れない密度の濃さである)

air_h_128k_ilair_h_128k_il 2012/03/04 02:56 普通のグーグル本と違ってディテールがリアルですよね。ひかれた一節は原文では

Page's program "had so many bugs in it, it wasn't funny," says Hassan. Part of the problem was that Page was using the relatively new computer language Java for his ambitious project, and Java kept crashing. "I went and tried to fix some of the bugs in Java itself, and after doing this ten times, I decided it was a waste of time," says Hassan. "I decided to take his stuff and just rewrite it into the language I knew much better that didn't have any bugs."
He wrote a program in Python -a more flexible language that was becoming popular for web-based programs- that would act as a "spider," so called because it would crawl the web for data.

だそうです。
「(プログラム)をA(言語)で書く」は write a program in A でいいんだなと変なところでも感心しました。

mamorukmamoruk 2012/03/07 12:55 id:air_h_128k_il さん
そうですね、技術的にも細かく書かれていて大変参考になりました。

原文も教えてくださってありがとうございます。コメントでも「プログラミング言語がカタカナ表記なのは残念」というご意見ありまして、それもそうかと思うのですが、一般向けの縦組の書籍ですし、想定読者にはプログラミング言語のことを全く知らない人もいる、という前提だと、仕方ないかなぁとも……(それに、表記がカタカナであることは、この本の文章の内容や魅力を減じるものではありませんしね)

しかし一読者として読むのに相当時間がかかり、こんな大著をよく著者は書くことができ、なおかつ訳者の方も訳すの大変だったろうなぁ、と思いました (^^;