<前の日記(2005-09-02) 次の日記(2005-09-05)> 最新

おおいわのこめんと (2005-09-03)


2005-09-03

[Misc] ペアプログラミング

奥君が自分のブログに有効性についての疑念を書いているのだが、 *1 個人的な経験を語るとすれば、状況によっては*2結構有効。……Extreme programming の諸発想ってあまり好きじゃない ものが多い(否定的なものと食わず嫌いなものと両方)なのだが、これに関しては割と肯定的。

とはいえ、その時の状況が、

  • 開発時間: 問題解析・設計・実装・デバッグ・リリース・食事・雑談・休憩・睡眠 諸々込みで72時間
  • 開発言語: Objective Caml (当然!)
  • 開発規模: ML で 1567行 (多分他言語だと 3000行クラス以上)
  • 開発陣容: 僕と超一流な研究者3名

とかいう状況だったので、特殊っちゃ特殊。……もう判った人もいるかも知れませんが、 某年の ICFP Programming Contest です (ちなみに負けた年 (;_;))。

この時は、3日間ずっと1部屋にマシン4台を持ち込んで、 4人でミーティング→2チームに分かれてペア開発→結合→ミーティング→(以下略) な開発過程を採用しました。 4人で並列化するほどの作業がないというのも要因としてはありますが、 結構成功したと思っています。

ML を開発言語にしたおかげで文法・単純なデータ処理誤りレベルのバグは 1人でも簡単に潰せるんですが、やっぱり後ろから『他人の眼で』見ていることで、 アルゴリズムとか仕様レベルの高度な誤りとかもかなり防げるので、結合がほとんど失敗しなくなるんですね。 実際、Unit テストに相当する段階でその手のバグは全くといっていいほど発生しませんでした。 ケアレスミスにしても、コンパイラにかける前にかなり潰せるので、 開発時間短縮にも貢献しました。 発生バグの絶対数が少ないので、精神衛生的にもとっても快適 ;-) *3

まぁ、実質的には形式的テストの手間を省けている辺りが一番大きいのかなとも思うので、 「十分気をつけて 正しく書けば、テストはごく簡単に済ませてもバグが混入しない」 という確信が持ててないと、意味がないですね。 ペアプロは太字 の部分にしか貢献できないわけなので。 この辺りは ML (+ ML に慣れている我々) の強みかも。

あとは、ミーティングの時間の削減かなぁ。実際72時間の時限コンテストの場合、 アルゴリズムにしても大局的作戦だけ事前に考えておいて、 細かい詳細は書きながら詰めたりもしますが、その時に 2人で作業しているとちゃんといい知恵が出てくるので、 1人で開発している場合と比べて、事前検討で詰めておかなければいけない部分が かなり少なかった気もします。何分4年前なのでその辺りの記憶はあやふやですが。

実際コンテストには負けてしまったのですが、最終的にエンバグしてしまったルーチンは、締切間際の 土壇場でペアプログラミングを解除してから捩じ込んだルーチンでした (;_;/。 しかも、ペアプログラミング続けていれば潰せたバグだったしなぁ……。 お遊びとは言えちょっと悔しい。まぁ、あのバグがなくても勝てなかったんだけど。

で、この事例は奥君の否定的な3類型にはどれにもマッチしないと思いますが、 じゃぁ一般の web アプリ開発に適応できるかといわれると………、やっぱり特殊かなぁ。

*1 ま〜た例によって exblog は trackback を受け付けてくれないよ……。

*2 かつ、状況によってはその場に合わせて全体の開発過程をカスタマイズすれば。

*3 ま、これは「2人で喋っているだけでも楽しい」くらいに人間関係がうまく行っていないと、そうは思えないかもねぇ。 2人がプログラミング技量的にも人間関係的にもほぼ対等じゃないと、単なる傍観者(前が上位の場合)または 単なる指導関係(後ろが上位の場合)になっちゃうような気がする。

本日のツッコミ(全1件) [メッセージを送る]
kazuho (2005-09-06 06:18)

ふむふむ。
設計が困難で、同時に実装を進めるようなケース (なおかつ、技術者の質が揃っている場合) では有効ってことなんでしょうね。

ウェブアプリ開発の場合は、設計フェーズと実装フェーズを分離しやすい (たとえ反復型の開発プロセスでも、ウェブアプリの場合は各段階において設計と実装を分離するのが普通だと思います) が故に、ペアプロ向きでないのではないかと考えています。

[TrackBack URL: http://www.oiwa.jp/~yutaka/tdiary/trackback.rb/20050903 (note: TrackBacks are moderated: spams will not be shown.) ]

大岩 寛 (おおいわ ゆたか) <yutaka@oiwa.jp.nospam ... remove .nospam> .

Copyright © 2005-2014 Yutaka OIWA. All rights reserved.
Posted comments and trackbacks are copyrighted by their respective posters.

記事の内容について (Disclaimer / Terms and Conditions)