2007年2月18日

デブサミレポート - 第1回 Google

第1回目は、これ↓。一日目のセッションに関しては、今後、資料があがるかと思われるので、一番、資料が公開されそうにない、ここから、レポートあげます。

2/15 10:00-10:50
Googleを支える大規模分散システム / Google における開発プロセス

-- Google における開発プロセス --
スピーカー:小松弘幸 Profile
Googleトランジット モバイル担当

- プロジェクトの始まりからリリース
プロジェクトの立上げ。20%ルールプロジェクト/開発者によるアイデアやデモなど

プロジェクトメンバー。デモを見た社員が希望で参加したり、または、支援を行ったり

プロジェクトが起動に乗り始める。

プロジェクトの本格化。エンジニアに加えて、プロダクトマネージャー、デザイナー、マーケティング、広報、各チームの方が参加する。

beta リリースを行う

フィードバックをもらって、機能拡張やバグフィクスを修正。

正式リリースへ

プロジェクトは基本的に、エンジニアが、企画、設計、運用を行う。

- 20%ルール
Googleの全社員が、好きなプロジェクトや自己研鑽など、自分の好きな時間。既存サービスの拡張。新しい技術の習得。数学の学習。会社にとって、長期的にでも、メリットがあれば OK みたい。プロジェクトの立ち上げには、まず、モックの作成などを行ってから。何故なら、見ればわかるから。何をしたいのかを伝え、プロジェクトの賛同者を募る。発表の場としては、アイデアメーリングリストというものがあり、発表したアイデアに対して、1〜5点の得点とコメントをつけて返信をする形になっている。プロジェクトが成長したら、目的を明確にし、違う所のプロジェクトなどで、似たような機能が無いかなどを確認して、車輪の再発明を防いでいる。

- 情報共有
デザインドキュメント。読めばわかる。まわりからの質問に対して、何度も回答をするより、書いた方が楽なので。社内wiki wikiにプロジェクトに参加するため必要な情報、まとめなど。プロジェクトチームは、エンジニア4〜5人、プロジェクトマネージャー、ユーザーサポート、など、、10人に満たない。weekly meeting 一周間に一回のミーティング。自分たちの進捗の報告など。

- 開発環境
全てのソースコードが一元的に管理されている。他のプロジェクトの人間が、Gmail のソースコードの閲覧や変更も可能。コミットログ。コード検索。テストツール。単体テストツール、プロファイラ。ほとんどのツールが、自社開発。
テストなどで、マシンパワーが必要な場合には、大規模データを扱うなど、デモを作る段階で、数千代のクラスタを利用可能。うまい具合に処理が隠蔽されていて、ジョブの割り当てや、故障等に関してエンジニアが考える必要が無い。デモの作成段階で、ペタバイト級のストレージの利用や、ミニチュアインターネットによる、ウェブデータが自由に利用可能、個人で利用可能。

- 開発期間
納得いくまで作る。自分たちが、目標を決めて期限を設定。納得の行く所で、提出。延長の場合は再設定をする。

- 目標と成果の設定
エンジニア個人。プロジェクトチーム。会社全体。各単位で設定。四半期単位で今後の事など。

- Google トランジット
- サービス概要
最寄り駅の自動判別。目黒雅叙園は、目黒駅とか。同じ駅名でも、大手町は、東京の大手町じゃんみたいな事をしてくれる。
- 開発のお話
アメリカ版のトランジットが、別で発足していた、ソースコードを流用。
どのように統合したか、それぞれ、違うエンジンを持っていたので、それぞれを、プロトコルバッファーを利用して統合(シリアライザーのようなものらしい)。データをどのように流すのか、異なる言語間でも利用可。あらゆる所で。利用しているらすぃ。
ユニットテスト書く。コードレビュー。レポジトリに入れる前に、ソースコードレビューを少なくとも、一人に行ってもらう。
リリースに向けて。テクニカル、UI,セキュリティレビュー、、、。などなど。
最終リリース。リリース用マシンの割当。マシンのメンテは選任者がやってくれる。
リリースエンジニアと一緒に、共同作業でリリースを行う。
メーリングリストもひとつ。ソースコードレポジトリもひとつ。情報もいつでも引き出せる。

-- 鰯の感想 --
エンジニア主体で経営されている Google は、まさにエンジニアにとっての天国なのかもしれない、その反面、高い技術力や成果を求められる部分もあると思う。。。設備も体制もかなりできあがってきているのだろう、、社員同士が切磋琢磨し合える環境は非常に大事だと思う、今の会社では、切磋琢磨し合える人が、ほとんどいないため、、非常に残念で仕方が無い、、技術者としてもっと、常日頃から勉強をしてもらいたいものです。

※「Googleを支える大規模分散システム」にてついては、次回投稿します。。

0 件のコメント: