Google ソフトウエアエンジニア
Google ソフトウエアエンジニア
[画像のクリックで拡大表示]

 「情報の共有は善。Googleも全員がほとんどのコードにアクセスできる。そして少人数のチームであること。Googleでも,一つのプロジェクト・チームは5~6人以下」---Google ソフトウエアエンジニアの鵜飼文敏氏は9月7日,イベントITpro Challenge!で「ハッカーのソフトウエアエンジニアリング」と題し講演,高い生産性を実現するハッカー流の開発手法を解説した。

 ハッカーと呼ばれるプログラマは,通常の数倍とも数十倍とも言われる生産性と,高い品質を実現していると言われる。鵜飼氏はボランティア・ベースのLinuxディストリビューションDebian ProjectオフィシャルメンバーとしてIPA OSS貢献者賞を受賞したほか,The Free Software Initiative of Japan副理事長,2003年と2004年度の「未踏ソフトウエア創造事業」プロジェクトマネージャーを務め,Google ソフトウエアエンジニアとして年間3万5000行のコードを書くというハッカーである。

Googleで実感したコードレビューの有用性

 ハッカーはどのようにして高い生産性を実現しているのか。鵜飼氏がまっさきにあげるのが「情報の共有」である。Googleも「全員がほとんどのコードにアクセスできる」という情報共有を尊ぶ企業だという。

 そして「個人または少人数で作ること」。Googleでも,一つのプロジェクトは5~6人だという。「少人数であることは,素早くつくるために欠かせない」(鵜飼氏)。

 開発もなるべく小さな単位で行う。「設計しつつ実装,こまめにマイルストーンを設定する。小さい単位で動くものを作る。作る順序は後で使うものから。テストしやすさ,デバッグしやすさのために重要」(鵜飼氏)。

 既にあるコードを利用して,新たに作らないことも重要だ。「何を作らなくていいか,利用できるか,把握する。持ち駒が多ければ多いほどいい」(鵜飼氏)。

 Googleに入って感じたのはコードレビューの有用性だという。「コードレビューはとてもいい。ゆるいペアプログラミングのようなものでお互いのコードをチェックできる。ペアプログラミングは時間が拘束されるが,コードレビューならいつでもどこでもできる」(鵜飼氏)。

 デバッグの際はバグが存在する範囲を狭めて絞り込んでいく。あるいは狭めるようなテクニックをあらかじめ仕込んでおく。

 そして集中すること。「頭の中にプログラムを入れる」(鵜飼氏)。集中力を持続できる環境が重要になる。そのためハッカーは割り込みやミーティングを嫌う。Googleでは4人1室でプログラムを書いている。多くの場合同室のメンバーは同じプロジェクト・チームであり,振り返れば相談もできる。

 鵜飼氏はハッカーに近づくためには必要なことは「プログラミングを楽しむこと」であるという。同時に「コンピュータサイエンスは重要。データ構造とアルゴリズムをいくつ知っているかで差が出てくる」(鵜飼氏)。