ペアプログラミング

« Back to Glossary Index

ペアプログラミングとは

ペアプログラミング(pair programming)はソフトウェア開発の手法の一つで、2人のプログラマが1台のマシンを操作してプログラミングを行う手法です。

以下はWikipedia(https://ja.wikipedia.org/wiki/ペアプログラミング)より抜粋

メリット

規範意識の増大個人の作業よりも怠けることなく作業を進める可能性が高いです
よりよいコード相乗効果により設計の質が向上することが期待されます
作業効率の向上1人で作業するときとは流れが変わります。例えば、次に何をすべきか考え込むといったことが少なくなります。
また、外乱要因に対しても耐性を示し、他の人が割り込んできても、一方が対応している間にもう一方が作業を進められます。
多数の開発者による設計ペアを頻繁に入れ替えれば、複数の人間が1つの機能の開発にかかわることになります。これにより、よりよい設計が生み出されます。
例えば、あるペアでは解決できない問題で作業が止まってしまっても、別のペアでは解決できることもあります。
勤労意欲の向上ペアプログラミングのほうが1人で作業するよりも楽しいと感じる開発者もいます。
集団的なコード所有権プロジェクトの全員がペアプログラミングを行い、頻繁にペアを組みかえる場合、そのコード全体について全員がそれなりの知識を共有することになります。
教育的側面初心者であっても固有の知識(プログラミングテクニックなど)を持っているものです。
ペアプログラミングでは、余計な手間をかけずに、そのような知識をチーム全体で共有できます。
チームワークペアプログラミングを行うことで、チームの各人が互いをよりよく知ることができ、結束力を生み出しやすいです。
割り込みの削減1人で作業している人に割り込みをかけるよりも、ペアプログラミング中の2人に割り込みをかける方が抵抗があるため、割り込みが少なくなります。
端末数の削減2人で1台の開発端末を使うため、端末数が少なくて済み、余った端末をほかの用途で活用できます。

ペアプログラミングの生産性

  • ペアプログラミングでは、2人のプログラマが個人で作業した場合と比較して、コーディング速度が15%低下するが、バグの数も15%少なくなります。テストやデバッグにはコーディングよりも時間がかかります(ユタ大学)
  • プログラムの正確性は15%向上し、時間的には20%から40%程度の削減となり、全体的な成果としては、15%から60%の効率向上があるとされているものの、他の条件での実施が同じである保証はありません。(ノースカロライナ州立大学;2000年)
  • 複雑なシステムではプログラムの正確性が48%向上し、大きな時間の削減は見られず、単純なシステムでは時間が20%削減され、正確性には大きな変化が見られなかったとされています。
    全体としては、時間の削減や正確性の向上の傾向はさまざまだが、最終的な効率は84%向上しているとされているが、他の条件での実施が同じである保証はありません。(2007年)
  • 上級者1人の場合と上級者同士のペアとの間での生産性向上よりも、初心者1人と初心者同士のペアを比較した時の生産性向上のほうが大きいとされています。
    異なる役割(エンジニアxビジネススペシャリスト、開発エンジニアxテストスペシャリストなど)や経験の多寡のメンバーの組み合わせにより、教育効果なども生み出すことができます。

デメリット

  • 経験を積んだ開発者によっては、初心者とのペアプログラミングを退屈な指導と捉える場合もあります。
  • 一部の技術者は1人で作業することを好み、ペアでの作業を面倒で負担に感じる場合もあります。
  • プログラマの生産性についてはさまざまな議論があり、ペアプログラミングで生産性が必ず向上することが保証されているわけではありません。
  • 経験を積んだ技術者は、非常に正確なコードを書きます。その場合、ペアを組んだとしても、もう一人が何か寄与することは難しいです。(ペアプログラミングの目的は、正確性の向上だけでなく、知識や技術の共有という面もあります)
  • コーディング・スタイルの違いによって、一種の衝突が発生する場合もあります。
    XP(eXtreme Programming)などでは、コーディング・スタイルは統一すべきものであるとしています)
  • 各人のスケジュールが異なるようなプロジェクトでは、スケジュールがうまくかみ合ったときにだけペアプログラミングが可能となるため、そのような場合にペアプログラミングを採用すると、作業にかかる工数が増加するだけでなく、ペアプログラミングに割ける時間が制限されたり、一方の作業待ち時間が発生するなどにより、結果として完了までの期間が長くなります。
    XP(eXtreme Programming)などでは、そもそもコードは特定の個人が独占するものではなく、また、30分から数時間の頻度でペアを交換し、その時に作業可能な2人がタスクをこなしていく、としているが、これが可能になるのは、XP(eXtreme Programming)のタスクの粒度の小ささにも由来しています)
« 用語集トップページ