「情報の共有は善。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室でプログラムを書いている。多くの場合同室のメンバーは同じプロジェクト・チームであり,振り返れば相談もできる。
鵜飼氏はハッカーに近づくためには必要なことは「プログラミングを楽しむこと」であるという。同時に「コンピュータサイエンスは重要。データ構造とアルゴリズムをいくつ知っているかで差が出てくる」(鵜飼氏)。