Saturday, February 3, 2007

Google 技術講演会 [seminar]

DSC01137.JPG

Google の技術講演会・懇親会に呼んでもらったので,行ってきました.
Google がリクルーティングを兼ねて様々な講演会を開催しているとは聞いていたけど,帰りに頂いたお土産の中にも Google Japan の job openings の案内が入っていたことから,少なからずその要素もあったのかもしれない.

エンジニアリングディレクターのマグラス みづ紀氏や Debian Developer の鵜飼 文敏氏を始め,Google のエンジニアも多数顔を見せていた.

内容については,Blog で公開しても良いとのことなので,簡単にサマリーをレポートします.


Google の職場環境について
1人目のプレゼンターは南野 朋之氏.東工大出身の工学博士で,"blogWatcher" や "なんでもRSS!" などの開発者としても有名.

20%ルールなどから生まれたアイデア・実験から,デモを通して社員の声を集め,チームを増員して Beta 公開し,さらにユーザーの声を集める…といった,プロジェクトが生まれてからローンチされるまでの過程を説明.

- 1つのプロジェクトにエンジニアは 4 - 5名程度
- 四半期ごとに目標 (短期・長期) を立て,成果を評価
- エンジニアリングチームは世界で1つ
- 世界中の Google 社員の週報が読める
 (同じ興味を持つエンジアや開発グループを見つけることができる)
- 全ての Google のソースコードにアクセス可能
- 数千台のクラスタや Peta-bytes 級のストレージといった Google のインフラにアクセス可能で,やりたいことが簡単に試せる環境

など,既に聞いたことのある話も多かったが,印象的だったのは,しっかりドキュメントを残す文化があるということ.

Google には「百聞は "デモ" にしかず」という言葉がある通り,とにかく動くモノをまず見せることが要求されるそうだが,「デモを見せろ」という言葉と同じぐらいよく言われるのが「ドキュメントを見せろ」という言葉だそうで,ソースコードを書く前にまずドキュメントを書かなければいけないらしい.

懇親会で南野氏と少しお話して,「Mountain View の本社と東京オフィスで環境は違いますか?」と聞いたところ,「もちろん (本社で有名な) シェフの料理とかは東京にはないけど,基本的に職場の雰囲気は変わらない」と言っていた.


Gmail の開発について
2人目のプレゼンターは Gmail の初期開発メンバーで,Google のシニアエンジニアの Darick Tong 氏.

「人々のメールの使い方を再定義したかった」
- Google のサーチテクノロジーの応用
- メールのマイクロマネージメントの終焉
 (フォルダではなくラベルへ)
- かしこいスパムフィルター
- カンバセーションモデル
- チャットとの融合

などという動機から始めたプロジェクトにおいて,ストレージ,サーチ,スパム,UI といった側面から,様々な技術課題とその解決方法,さらに今後の展望を説明.

特にサーチの部分で,"Everything is a search" と話していたが,例えば Inbox や Sent Mail などを表示する時も,内部的にはメールを検索しているだけらしい.

私も Gmail を利用しており,そのシステムが availability と performance の両立という難しい課題を見事に表現しているだけでなく,例えば返信メールの引用部分を隠すといった細かい部分の usability まで行き届いていることに非常に感心していたが,彼の話を聞いて改めて 「デスクトップアプリケーションライクな "better webmail"」を作るという理念とその細かい配慮を感じた.


Bigtable について
3人目のプレゼンターは,ITPro で連載していた 作って理解する Ajax@IT のインタビュー なでもお馴染の工藤 拓氏.

内容は Google のデータベース,"Bigtable" について.
コストやスケーラビリティの問題だけでなく,「必要なものは自分達で作る」という Google の方針に則り,データベースも MySQL やオラクルなどを使うのではなく自前で作っているのだとか.

現在では,MapReduce, Google Reader, Google Maps, Google Book Search, My Search History, Google Earth, Blogger など,様々な Google のアプリケーションで利用されている.

構造は基本的にシンプルで,言わば大きなスプレッドシートのようなものだが,縦軸・横軸だけではなく,「時間」という軸があり,さらに横軸は辞書順にソートされている,"multi-dimensional sparse sorted map" であるとのこと.

BigTable の詳細については,Google から 正式論文 が出ているので,興味のある方はそちらを参照すると良いだろう.


0 comments: