ペアプログラミング 【pair programming】 ペアプロ
概要
ペアプログラミング(pair programming)とは、コンピュータプログラムを作成するプログラミング作業を、二人一組のペアで行う手法。二人が別々にプログラミングを行うより効率が半減するように感じるが、実際には効率が向上することが多いとされる。一人がキーボードでプログラムコードを打ち込み、もう一人は傍らでどのようなコードにすべきか一緒に検討したり、誤りを指摘したりする。前者を「ドライバー」、後者を「ナビゲーター」または「オブザーバー」と呼ぶ。
ドライバーとナビゲーターの役割は固定的なものではなく、一定の時間(例えば30分から1時間)の経過や、作業の区切り(例えば単体テストを実行するタイミング)ごとに入れ替えるのが良いとされる。また、ペアを組むメンバーの組み合わせは固定せずに、できれば毎日違う組み合わせでペアを組むのが良いとされる。
派生的な手法として、別の場所にいるメンバー同士がネットワークを通じてコードの編集画面を共有し、ビデオ通話や音声通話で会話しながらコーディングを進める「リモートペアプログラミング」がある。文字入力が相手方にリアルタイムに反映される共同作業用のコードエディタや画面共有ツールなどを用いて行われる。
利点
一台のコンピュータを囲んで二人で共同作業することによる単純な効用としては、もう一人が常に隣にいるためサボったり休んだりしにくい、外部からの問い合わせにナビゲーターが応答することでドライバーが作業に集中し続けられるといった点がある。
効率や品質に関わる効用として、一人では難しくて考え込んでしまう問題も、もう一人の助言や二人で議論することで乗り越えやすくなる。コードに誤りがあっても、もう一人が気付いてすぐに修正でき、コードの品質が高まる。二人が理解して納得したロジックを記述していくため、「独りよがり」な難解な記述を減らし、見通しや保守性の良いコードになることが期待される。
そして、組織として中長期的に得られる効用として、開発チーム内でペアを入れ替えながらプログラミングを進めることにより、チーム全体でコードへの理解が深まり、技能や知識の共有・移転が進む。メンバーの技能レベルの向上と均等化が進めば効率がより向上することが期待できる。
難点
ペアの組み方によっては効用が十分に得られない場合もある。例えば、極端に技能に差があるペアの場合には、熟練者は初心者から得るものが何もなく、単なるプログラミング指導のような時間になってしまうこともある。初心者同士が組んだ場合、それぞれ単独でプログラミングするより効率は高まる可能性はあるものの、お互い相手から何かを得ることはあまり期待できない。
また、IT技術者は他者と密にコミュニケーションを取って共同作業することを苦手とする人も多く、一人で深く思索する方が力を発揮するタイプの人もいる。組織の構成や勤務形態などによっては、ペアを組んで長時間同じ場所で同じ作業に従事させるスケジュールを組むのが難しい場合もある。