- 「モブ」→「人の集団」という意味の3人以上で行うプログラミングの開発手法
- 全員で1つのコードを共有して同期的に作業をするのが特徴
- 作業をするドライバー、指示をするナビゲーターの役割がある
ここまでで7秒!もっとくわしく知りたい人は続きをどうぞ!
モブプログラミングをわかりやすく
モブプログラミングをわかりやすく説明すると
3人以上の複数人で1つのコードを共有しながら、実際にコードを書く「ドライバー」とコードを見ながら指示を出す「ナビゲーター」の役割でプログラミングを行う開発手法
モブプログラミングとは わかりやすい例
もっと噛み砕いてわかりやすく説明すると
3人以上の複数人で1つのコードを共有しながらプログラミングを行う開発手法です。作業の進め方は、最初にコードを書くドライバーとコードを見ながら指示を出すナビゲーターを決めます。実際にコードを書く役割のドライバーは1人で、残りの人はナビゲーターになる。ナビゲーター同士で相談しながら、議論しながらドライバーに指示を出していく。ドライバーとナビゲーターは、一定期間で交代する。ドライバーとナビゲーター以外に作業を黙って見守るモブメンバーという役割もある。モブプログラミングを行う人数は、3〜5人が適切とされている。モブプログラミングを行うことで、チーム内のノウハウ共有が捗り、チームの一体感が高まり、コードレビューが常時されるので、質の高いコードに仕上がる。
通常のチーム開発の進め方の場合、作業の分担がされ各自割当られた範囲のコーディングを行い、ある程度進んだ時点での確認になります。そのレビューも全体ではなくプロジェクトマネージャーと担当者だと共有範囲が狭いです。
モブプログラミングのメリット
モブプログラミングでは、全員が同じコードを追いながら開発を進めていきます。そのため、ドライバーの作業を全員で見守り、ナビゲーターとモブメンバーがノウハウを吸収することができるのです。また、それぞれが常時、コードに対してフィードバックをしあえるので、高品質なコードが書け、バグの発生も抑えられます。全員で一つのコードを共有しているため、開発への責任感が高まり、チームの一体感も高まるでしょう。さらに、コードと進捗を全員で共有しているため、別途ドキュメントを作成する必要がありません。
モブプログラミングのデメリット
モブプログラミングには、作業効率が下がる可能性があります。なぜなら、メンバー全員が同じ場所に集まり、同じ時間を使用しなければならないため、個人作業に比べて生産性が落ちるおそれがあるからです。さらに、メンバー全員で常に高い集中力を維持しなくてはいけませんので、長時間の作業には向かない欠点もあるのです。加えて、メンバーの人数が多すぎると、コミュニケーションが円滑に行えなくなってしまいます。通常は3〜5人程度が適切な人数だと言われています。そして、メンバー全員が一つの端末を共有する必要があり、同じ場所に集まらなければならないという環境的な制約もあるので、リモートワークには不向きです。
モブプログラミングが効果的な場面
モブプログラミングは、重要な機能やコア部分の実装時や、難易度の高い問題解決に有効活用できます。新しい技術の習得にも適しており、メンバー全員で実践的に学ぶことができるのです。また、レガシーコードの理解を深めたり、プロジェクト立ち上げ時にコーディングルールを統一したりする際にも役立ちます。さらに、新技術の試験的実装やアイデアを形にする短期的なスパイクにも効果的でしょう。
一方で、長時間の集中作業が難しいこと、リモートワークには不向きなことなどデメリットもあります。メンバー全員が同時に集中し続ける必要があり、人数が多すぎると工数がかかる、コミュニケーションが複雑になるのもデメリットです。つまり、モブプログラミングは重要な時にだけ、集中して取り組む短期的な作業には適していますが、長期の通常開発では生産性に課題があるため、状況に応じて適切に使い分ける必要があるというわけです。
モブプログラミングとペアプログラミングの違い
モブ | ペア | |
---|---|---|
人数 | 3人以上 | 2人1組 |
役割 | ドライバー ナビゲーター モブメンバー 3つの役割がある |
役割の区別はない |
ノウハウ共有の範囲 | 参加者全員 | 2人の間でのみ |
コミュニケーションの難易度 | 人数が増えるほど複雑 | 2者間なのでシンプル |
効果的に使える場面 | 重要な機能やコア部分の実装 難易度の高い問題解決 新しい技術の習得 チーム開発の初期段階 |
重要な機能やコア部分の実装 難易度の高い問題解決 新しい技術の習得 コードの引き継ぎ 新人教育 |
モブプログラミングまとめ
- 作業をするドライバー、指示をするナビゲーターの役割があり、メンバー全員で1つのコードを共有して、同期的に作業をする3人以上で行うプログラミングの開発手法
- 広範囲のノウハウ共有、高品質なコードが書ける、チームの一体感が高まる、ドキュメントの作成が不要のメリットがある
- 個人作業に比べて生産性が落ちる、集中力の維持が難しい、コミュニケーションが複雑になる、同じ場所に集まる環境的な制約のデメリットがある
モブプログラミングについて理解は深まりましたか?
まだ分からない点や疑問点があれば、ぜひコメント欄で質問してください。生の声を聞かせていただければ、より良い内容を提供できるはずです。
以上、モブプログラミングについてでした。コメント欄での活発な意見交換を心よりお待ちしています!
コメント