ペアプロは、一つのプログラムを二人で開発する手法です。コードの共有・作業分担など、制作時間の短縮が期待できるメリットなどがあります。
具体的にペアプロがどのような開発方法なのかを紹介します。ペアプロの導入を検討している人の判断材料になれば幸いです。
ペアプロとは?
ペアプロは、ペアプログラミングの略称語で、二人で共同開発する手法です。アジャイル開発で採用されることのある開発方法で、コーディング担当とナビゲーター担当と分担して業務を行います。
具体的に
- ペアプロの役割
- ペアプロの進め方
この2点について解説します。
単語メモ
- アジャイル開発:「素早い」「機敏な」という意味で、システムやソフトウェア開発におけるプロジェクト開発手法のひとつ。小単位で実装・テストを繰り返して開発を進めていく。
①ペアプロの役割
ペアプロでは、それぞれ役割があります。
役割
- ドライバー:コーディング担当
- ナビゲーター:指示を出す担当
役割をしっかりと意識することで、効率に変化が生じます。そのため、大切なのは「役割を意識すること」です。役割を認識しないとペアでプログラミングをしても、コードや仕様に関する理解度が高い人や技術レベル高い人が実装方針を決めて指示だけして、もう一人が言われるままコーディングだけをするなどの状況になります。
ペアプロでは、「自分の知らない知識」「自分の知らない考え方」を得られるかどうかが重要です。自分で思い浮かばなかった考え方や観点などを話し合うことで色んな考え方が浮かびます。どちらかが一方的に方針を決めるなどすると高め合うなどプラスに働かなくなってしまいます。
②ペアプロの進め方
ペアプロの進め方について簡単に解説します。
進め方
- チーム全体で仕様面・実装概要を決める
- ペアに分かれて設計をする
- コーディングの工程を事前に認識合わせする
- 実際にコーディングを始める
事前に認識を合わせていくことが大切だったので、この認識を合わせるタイミングで自分がきづかなかった点や最適なロジックなどを防げます。2人で決めていくことで、責任配分や役割が理解できます。結果、効率的にプログラミングを進められ、技術力アップなどにも繋がります。
おすすめ書籍:ペアプログラミング エンジニアとしての指南書
ペアプログラミングに関する情報を提供するために制作された書籍です。ペアプログラミングの詳細な知識と技法を紹介し、より実践的なペアプロが行えるような指南書になります。ペアプロを始めると生じる疑問・懸念に対しての答えがあります。各々のペアに最も適した状況などを示してくれます。
ペアプロが必要な理由
ペアプロは、チーム内の技術力を底上げし、強いエンジニアチームを作ることが期待できます。ペアプロでは技術書には載っていない情報を伝えられ短期間でメンバーの技術力が底上げされます。
ペアプロが必要な理由について、解説します。
理由①:質の高いコードレビューとしてのペアプロ
質の高いコードレビューの場にもなります。最初の設計方針から変数のネーミングなどの細かい部分までを話し合って決めるので、修正するタイミングや初期設定の不具合・ミスなどの手戻りが発生しません。
ペアプロでは、知識だけでなく刺激もあります。ペアプロを導入すると自主的に学習するエンジニアが増えた企業などもあるようです。「自分に足りないスキルを補いたい」と勉強を進んで行うので、結果、チーム全体の技術力が上がります。
理由②:ペアローテーションで知識共有を加速
ペアプロは、毎日ペアを組み替える「ペアローテーション」がおすすめです。ペアローテーションは、毎日ペアを変えて行うことで、知識・情報を共有する速度を加速度的に向上させられます。
技術力に格差が生じているプロジェクトを立ち上げたり、新卒や転職者がプロジェクトに参画する時、最も効果を発揮します。ローテーションを行う上では、ペアの片方だけが必ず残り、もう片方から迎え入れて組ませることが大切です。そして、前日に取り組んでいた作業を新しく組むペアの人に10分程度レクチャーする時間を儲けましょう。
ペアプロを実践してみる
ペアプロを実践してみると次の2点がポイントとなります。
- 属人化を排除できる
- 新人からペアプロに参加する
①属人化を排除できる
先述した、ペアローテーションを導入することで、一週間以内に各メンバーがチーム内の全ての作業に触れることになるので、ペアローテーションを繰り返すことで、全員が案件全体の仕様に詳しくなります。結果、属人化を防げます。
属人化を排除することで、もし誰かがプロジェクトから離れることになっても他の誰かが仕様を知っていることで、引き継ぎ作業を行う必要はありません。また、プロジェクトの全員が全体の仕様に詳しい状態になっているのでドキュメントを制作する必要もなくなります。
単語メモ
- 属人化:特定の社員が担当している業務の詳細内容・進め方が当人以外では分からなくなってしまう状態のこと。
②新人からペアプロに参加する
教育の一環としてペアプロに参加することで、既存メンバーとペアでコードを読んで理解するコードリーディングを行えます。既存メンバーは、当然ながら既に「設計」「ソースコード」の意図を知っているので、全体の仕様を早く把握できます。
また、ペアプロ・ペアローテーションを導入することで、リリース数の増加、受け入れテストの失敗率、残業時間の軽減などの効果が発生することもあるので、ペアプロを導入して最強のエンジニアチームを作れます。
ペアプロ導入のハードル
ペアプロ導入をすることで生じるハードルはどのようなものがあるのでしょうか。
ペアプロ導入で考えられるハードル
- 周囲の理解を得る
- ペアを組むメンバーの選び方、コミュニケーションの取り方
- リモートワーク時は無理にペアプロしない
- 気分転換を取るタイミングをつくる
それぞれについて解説します。
ハードル①:周囲の理解を得る
ペアプロを周囲からの理解を得ることが大変です。ペアプロをすることで「コードの生産性が半分になってしまうのではないか」という懸念材料になるかもしれません。ペアプロを導入することで、「品質の向上」「不具合発生時の原因特定をスピーディーにできる」などの点を解決できるので、最高の開発方法であると言えます。
この点について、周囲へペアプロ導入についての説明会を行ったり、何度でも丁寧に説明することで、理解を得られるのでしっかりペアプロについて説明をしましょう。
ハードル②:ペアを組むメンバーの選び方、コミュニケーションの取り方
ペアプロでは、ペアを組むメンバーの選び方やコミュニケーションの取り方などに悩むかもしれません。ペアの人と一日中、会話する開発が必要となるので相性は重要になります。既存メンバーと相談してメンバー選びに時間をじっくり掛けましょう。
また、ペアプロを導入する際には、お試しで1ヶ月間程度実施してみることがおすすめです。ペアプロが肌に合う・合わないというものも見えてきます。
ハードル③:リモートワーク時は無理にペアプロしない
リモートワーク中は、無理にペアプロをするのはおすすめしません。対面でのコミュニケーションを重視しているので、ペアプロはリモートワークとは相性がよくありません。そのため、リモートワーク時には、無理にペアプロをせず開発環境を整えることや、技術調査やデザインの修正などのソロタスクを行いましょう。
ハードル④:気分転換を取るタイミングをつくる
ペアプロでは、想像以上に気力と体力を消耗します。安定したパフォーマンスを出せるようにするため、休息を取ることも大切です。そのため仕事の一環として「休憩」を取り入れましょう。疲れた時は無理せず気分転換を取り入れたり、ペアで取り組むレクリエーションなどを入れることもおすすめです。
人間の集中力の限界は、30分程度と言われています。25分ごとに5分の休憩を取る流れを取り入れることで、ペアプログラミングを効率化できます。
まとめ:ペアプロを導入して最強のエンジニアチームを目指しましょう!
ペアプロ(ペアプログラミング)は、初心者のミスを軽減し、作業を効率化できるのでおすすめです。また個人でのスキルアップも期待できますが、チーム全体のスキルアップも期待できるので、ペアプロを導入して最強のエンジニアチームを作りましょう。