株式会社Neverのshoheiです。
株式会社Neverは「NEVER STOP CREATE 作りつづけること」をビジョンに掲げ、理想を実現するためにプロダクトを作り続ける組織です。モバイルアプリケーションの受託開発、技術支援、コンサルティングを行っております。アプリ開発のご依頼や開発面でのお困りの際はお気楽にお問合せください。
概要
弊社で実践しているペアプログラミングをご紹介します。
ペアプログラミングとは
ペアプログラミングはソフトウェア開発の手法の1つで、2人のプログラマーが1つのモニターでプログラミングをしていく手法です。
ドライバー役(コードを映し出して操作する人)とナビゲーター役(指示する人)の2人で作業していきます。3人以上で作業することをモブプログラミングと呼びます。
ペアプログラミングの詳しい説明はこちらの記事をご参考ください。
皆で楽しく成長するためのペアプログラミングとモブプログラミングのガイドライン
ペアプログラミングの目的
- 実装タスクを齟齬なく前に進めれる
- 実装不安の解消、問題解決
- スキルアップ
- 開発効率の向上、ドメイン知識や新しい知見の習得
- メンバー間の信頼関係の構築
- お互いの人間性を知り、心理的安全性を担保する
具体的なやり方
弊社では実装の相談をしたい時やコードレビューを同期的にしたい場合にペアプログラミングをします。リモートワークがメインですので、SlackのハドルやGather上でペアプログラミングを実施します。
ペアプログラミングしたい時に有識者に声をかけ、時間を決めて実施します。
SlackやGatherは誰と誰が話しているのか分かるので、プロジェクト内の第三者も時間があればペアプログラミングに参加して視聴します。
実装相談 or 実装で詰まった時
実装相談したい内容や詰まっている箇所を議題に進めていきます。相談者はドライバー役として画面共有やLive Shareをしてソースコードや関連記事を映し出しながら説明します。
相談を受ける側はナビゲーター役として、ソースコードの確認や関連情報を調べるよう指示します。
また、ナビゲータ役が相談内容の解決方法を既に知っている場合はナビゲータ役が自ら画面共有やして、ライブコーディングしたり関連情報を検索してソース元を共有します。
まさに見て覚えろ的な感じで進めていきます。この方法はかなり有効ですが、相談者は聞いているだけで答えを得られるため、本当に理解したかどうか不安になると思います。その場合、相談者は 他の人に同じように教えれるか? を意識してしっかり聞き、疑問点があれば質問して理解を深めます。
コードレビュー
レビューイがドライバー役、レビュアーがナビゲータ役として進めていきます。
レビューイがレビュー対象のソースコードを画面共有やLive Shareしてレビュアーと同期的にコードを確認します。どこから説明して良いか分からない場合は、レビュアーに指示を促し、レビュアー主導でコードレビューを進めていきます。
レビュアーは以下の観点でコードを見ます。
観点 | 詳細 |
---|---|
PR(Pull Request)の要件通りに実装されているか | ドメイン知識の確認、デザイン通りの実装か確認 |
コーディング規約通りに実装されているか、アンチパターンな実装はしていないか |
株式会社NeverのFlutterコーディング規約5選 公式 or 外部パッケージのドキュメントや今までの経験から確認 |
調査方法やツールの使い方が適切であるか | IDEのショートカットキー活用、デバッグ方法、ググり方(英語ワードを活用して狙った記事をHitさせる方法)を確認 |
レビューイの説明途中であっても、指摘事項が見つかった場合はすぐに指摘し、レビューイがコード上にコメントします。コメントは正確に書く必要はなく簡潔なもので良いです。ただし、後でGrep検索できるようコメントのプレフィックスは統一します。
以下の例では TODO
で検索できます。
final user = User();
// TODO: 指摘
state = user.name!;
指摘後、レビューイの実装イメージが湧いていないような雰囲気であれば、レビュアーが自らライブコーディングして実装風景を見せ、書いたコードをSlack等で共有します。
ペアプログラミングで得られる恩恵としては以下の通りです。
立場 | 恩恵 |
---|---|
レビューイ | 分からない事や仕様についてすぐに確認できる。 |
レビュアーのライブコーディングが見えるので、知らない事を目で学べる。自分の実装方法と比較して確認できる。 | |
レビュアー | コードの誤りをすぐに指摘できる、温度感を伝えれるので誤りのヤバさを明確に伝えれる。 |
IDEの使い方、デバッグ方法、検索方法など開発効率が上がる方法を教えれる。 |
最後に
ペアプログラミングは同期的な作業なので双方の時間は取られてしまいますが、テキストでやりとりするより遥かに早いです。
困ったら助ける、だって同じチームメンバーだもの。
チームで楽しく良いアプリを作っていきましょう👍
参考文献
明日からできる働き方改革「モブプログラミング」 WHOLE TEAM APPROACH
ペアプロ・モブプロでメンバーが驚くほど成長した話
レビュー指摘が多い原因がレビュアーにもある事を共有する(#14)
VSCode Live Shareすげぇ
Android StudioでCode With Meを試してみた