|
ペアプログラミング()は、2人のプログラマが1台のワークステーションを使って共同でソフトウェア開発を行う手法である。一方が単体テストを打ち込んでいるときに、もう一方がそのテストを通るクラスについて考えるといったように、相補的な作業をする。 実際にキーボードを操作してコードを書く人を「ドライバ」、もう1人を「ナビゲータ」と呼ぶ。30分ごとか、単体テストを1つ完成させる度に役割を交替するのがよいとされる。また、1日に一度の頻度でパートナーを変えるのがよいともされている。 == 利点 == ペアプログラミングには、以下のような利点があるとされている。上に挙げた項目ほど重要である。 * 規範意識の増大。ペアプログラミングでは、個人の作業よりも怠けることなく作業を進める可能性が高い。 * よりよいコード。相乗効果により設計の質が向上することが期待される。 * 作業効率の向上。1人で作業するときとは流れが変わる。例えば、次に何をすべきか考え込むといったことが少なくなる。また、外乱要因に対しても耐性を示し、他の人が割り込んできても、一方が応対している間にもう一方が作業を進められる。 * 多数の開発者による設計。ペアを頻繁に入れ替えれば、複数の人間が1つの機能の開発に関わることになる。これにより、よりよい設計が生み出される。例えば、あるペアが解決できない問題で作業が止まってしまっても、別のペアでは解決できることもある。 * 勤労意欲の向上。ペアプログラミングの方が1人で作業するよりも楽しいと感じる開発者もいる。 * 集団的なコード所有権。プロジェクトの全員がペアプログラミングを行い、頻繁にペアを組みかえる場合、そのコード全体について全員がそれなりの知識を共有することになる。 * 教育的側面。初心者であっても固有の知識(プログラミングテクニックなど)を持っているものである。ペアプログラミングでは、余計な手間をかけずに、そのような知識をチーム全体で共有できる。 * チームワーク。ペアプログラミングを行うことで、チームの各人が互いをよりよく知ることができ、結束力を生み出しやすい。 * 割り込みの削減。1人で作業している人に割り込みをかけるよりも、ペアプログラミング中の2人に割り込みをかける方が抵抗があるため、割り込みが少なくなる。 * ワークステーション数の削減。2人で1台のワークステーションを使うため、ワークステーションが少なくて済み、余ったワークステーションを他の用途に活用できる。 ペアプログラミングの生産性は、1人で作業した場合の2倍以上であることが研究によって示されている。エコノミスト誌によると、 :「ソルトレイクシティ、ユタ大学のLaurie Williamsによれば、ペアプログラミングでは、2人のプログラマが個人で作業した場合と比較して、コーディング速度が15%低下するが、バグの数も15%少なくなる。テストやデバッグにはコーディングよりも時間がかかるので、この調査結果は興味深い」 : なお、Laurie Williamsは、現在はノースカロライナ州立大学の准教授である。 Williams 他 (2000) の調査によると、プログラムの正確性は15%向上し、時間的には20%から40%程度の削減となり、最終的な成果としては、15%から60%の効率向上があるとされている。 最近の大規模な研究(Arisholm 他 2007)によると、複雑なシステムではプログラムの正確性が48%向上し、大きな時間の削減は見られなかったとされている。一方、単純なシステムでは時間が20%削減され、正確性には大きな変化が見られなかったとされている。全体としては、時間の削減や正確性の向上の傾向はさまざまだが、最終的な効率は84%向上している。 別の最近の研究によると、上級者1人の場合と上級者同士のペアとの間での生産性向上よりも、初心者1人と初心者同士のペアを比較した時の生産性向上のほうが大きいとされている("Int J. of Human Computer Studies Vol (64) 2006")。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「ペアプログラミング」の詳細全文を読む 英語版ウィキペディアに対照対訳語「 Pair programming 」があります。 スポンサード リンク
|