- 更新日: 2018年10月19日
- 公開日: 2018年10月14日
ペアプログラミングとは?メリットとデメリットをまとめてみた
エクストリームプログラミングのプラクティス(実践項目)として知られる「ペアプログラミング」。エクストリームプログラミングとはソフトウェア、システム開発の手法のひとつで、従来のウォーターフォール型は開発が進むにつれ変更のコストが大きくなりますが、エクストリームプログラミングは全体を小さな部分に分け短期間でそれを開発していくことで途中で変更があった時でも柔軟に対応できるという特徴があります。
ペアプログラミングはあくまでエクストリームプログラミングを行う上でのプラクティスのうちの1つで、現在ではそこまでメジャーな開発手法ではありませんが、試験的導入や部分的に取り入れているプロジェクトもあるようです。
今回はそんなエクストリームプログラミングのプラクティスであるペアプログラミングの概要や実践するうえでのメリット、デメリットを分かりやすく解説していきます!
ペアプログラミングとは?
ペアプログラミングとは1台のPCで2人のプログラマーが共同で開発を行う手法です。2人で行うといっても両方プログラムを行うのではなく各自には「ドライバー」「ナビゲーター」という役割があります。このドライバーとナビゲーターという役割はプログラム開発の小さな区切りや一定時間(30分、1時間など)で交代するのが望ましいとされます。また、役割だけではなく2人のペア自体も同様に一定期間で交代します。
ナビゲーター | ドライバーに仕様に基づいたコード記述の指示や、コードの誤りの指摘などのサポート作業を行います。ナビゲーターはPCは使用しません。 |
ドライバー | ナビゲーターの指示に基づきPCを使用しプログラムのコード記述を行います。また、ナビゲーターの指示に対しての質問や改善の提案なども併せて行います。 |
ペアプログラミングのメリット
ミスの軽減
コードレビューをしながら作業を進めるような感じになるので、コードの誤りや仕様に沿っていない命令などのミスはナビゲーターによって指摘されます。そのため、イージーミスや仕様違反などのミスが軽減されます。
コードの共有
1つのプログラム2人で協力して開発しますので、プログラムの詳細を知る人物が2人になります。病欠や、やむを得ない理由で人員が減ったとしてもプログラムを知る人がいなくなるというリスクが減るとともに、プログラムを知る人が多い方がリリース後のメンテナンスなどが容易となります。
作業のスピードアップ
プログラム開発は基本的には1人で行うことが多いため、難しい部分やエラーの発生原因が分からなくて無駄に時間が過ぎてしまう時があります。誰かに聞きたくても他の人が忙しくしているとついつい質問するタイミングを失ってしまい自分だけで解決しようと多くの時間を使ってしまうことがあります。
そんな時にもペアプログラミングなら常に2人で作業するため協力して問題の早期解決に取り組むことでき、1人で開発を行う時よりもスムーズに開発できるため結果的に作業スピードのアップにつながります。
知識の共有
通常の開発業務では2人でプログラムを作成することはあまりないため、他の人がどのような考えでプログラムを作成するのかということは意外と知られていません。2人でプログラムを作成することで相手の知識やテクニック、開発への考え方を自分に取り入れる絶好の機会を得られるということです。
特にプログラム開発初心者や経験の浅い技術者にとっては自分の知識を高めるとても良い時間となるでしょう。また、経験が浅くても何かしらの技術は持っているため、経験に差があるプログラマー同士でも何か得るものはあるでしょう。
チームワークの向上
プログラム開発というものはしばしば考えがまとまらず1人で悩むことも多いものです。こんな時にも2人で開発するということは知識を出し合い、協力して進めることでチームであることを再認識し、チームワークの向上につながります。
また、あまり知らない人同士でも1つの開発を2人で行うことにより、さらに相手を知る機会となりチーム内のモチベーションアップや信頼関係の向上につながります。
レビューの時間減少
常にレビューをしながら作業が進むのでレビューの必要性がなさそうに思いますが、基本的には担当者以外の人間のレビューは必要であると考えられます。ただし、ペアプログラミングの場合はミスや仕様に沿っていない部分は随時指摘されるため、ミスが少なくレビュー時間は少なく済みます。
ペアプログラミングのデメリット
熟練者は退屈
熟練したプログラマーと経験があまりないプログラマーがペアとなった場合は熟練したプログラマーは退屈、あまり意味がないと思われがちです。経験があまりないプログラマーにとっては自分の知識を増やすチャンスですが、あまりに技術レベルが違うペアの場合、熟練したプログラマーは1人で作業した方が効率が良いことがあります。
初心者同士のペアには不向き
初心者、または極端に経験が浅い技術者同士のペアの場合、お互いにレビューやミスの指摘をできるだけの知識を持ち合わせていない場合が多いのでペアプログラミングを行うこはあまりお勧めできません。ペアを組んだとしても2人で悩む時間が増えるだけであまり作業が進まないこともあります。
コーディング方法の対立
プログラマーの中には自分の開発手法にこだわりを持った人がいます。そういう人の場合、もう1人の開発手法が気に入らず自分の型にはめようとしたり、文句を言って険悪になる場合があり、かえって作業効率が落ちる場合があります。こういう場合、コーディングの規則などをきっちりと決めておけば対立を避けられるかもしれません。
スケジューリング、作業工数調整の難しさ
ペアプログラミングのみに集中できる場合は問題ありませんが、そのほかに作業がある場合、ペアのスケジューリングや作業工数の調整がうまくいかずペアプログラミングの時間が取れない場合があります。複数のプロジェクトを抱えていたり、設計などのプログラム以外の作業に時間を必要とする場合ペアを組むのが難しくなります。
合わない場合の作業効率の低下
他人とかかわるのが上手ではない人や、あまり人に意見するのが得意ではない人とペアプログラミングをする場合はペアで作業すること自体をストレスと感じ、ペアプログラミング効果を生かせないかもしれません。しかし、これを機に絆を深めチームワークの向上を狙ってみるのもよいかもしれません。
合いすぎる場合の作業効率の低下
気が合いすぎる者同士でペアを組むのも効率が下がる場合があります。仲が良すぎて無駄話が多くなったり、緊張感がなくなることでイージーミスやミスの見逃しなどが発生しやすくなります。
\Webサイト担当者としてのスキルが身に付く/
まとめ
ペアプログラミングは日本ではまだまだ一般的ではありません。しかし、開発人数や規模などの条件が合えばペアプログラミングを取り入れるメリットは多いと考えられます。特に、他の技術者と知識を共有するということは技術者にとって非常に有意義な時間となるでしょう。
実際のところ、開発の規模や期間、人数の関係でペアプログラミングが導入できないというプロジェクトは数多く存在します。ただ、通常の開発案件ではなくてもプログラム研修などの機会で試験的に試してみるのもよいかもしれませんので、今回ご紹介したメリット、デメリットを考慮して必要に応じてペアプログラミングを取り入れてみてはいかがでしょうか。
もしかすると、ペアプログラミングが孤独な作業になりがちのプログラミング開発に一筋の光をもたらすかもしれません。
- この記事を書いた人
- ふろっく