モブプログラミングとは?チーム全員が1台のPCで同時にコードを書く開発手法

システム開発・テクノロジー
モブプログラミングとは?ざっくりと3行で
  • チームの全員(3〜6人程度)が1台のコンピューターの前に集まって「ドライバー(タイピング役)」と「ナビゲーター(指示役)」をローテーションしながら同時にコードを書く開発手法のこと
  • ペアプログラミングを2人から全チームに拡張した手法で「チーム全員の知識・経験・視点を同時に活用することで高品質なコードを生み出しながらチームの知識共有・学習を同時に実現する」という考え方が核心だ
  • Woody Zuill氏が2012年頃から広めた手法で「1台のPCで全員が作業すれば生産性が下がるのでは」という直感に反して品質向上・知識共有・コードレビューの削減という恩恵があると報告されている

【深掘り】これだけ知ってればOK!

モブプログラミングの役割ローテーション:ドライバー(Driver)(実際にキーボードを打つ役割。ナビゲーターの指示を実装することに集中)・ナビゲーター(Navigator)(ドライバーに次に何をすべきかを指示する役割)・その他のメンバー(観察・提案・議論に参加)。役割は15〜20分ごとにローテーションする。

モブプログラミングのメリット:品質の向上(複数の目でリアルタイムにコードをレビューするためバグ・設計ミスの発見が少ない)・知識の共有(チーム全員が同じコードに関わるためバスファクターが下がる)・学習効果(経験の浅いメンバーが経験豊富なメンバーのアプローチをリアルタイムで学べる)。

モブプログラミングのデメリット:短期的な生産量の低下(全員が1つのタスクに集中するため並行作業ができない)・疲労感(高い集中力が求められるため1日4〜6時間程度が適切)・導入コスト(慣れるまでの期間と物理的な環境の整備が必要)。

モブプログラミングとペアプログラミングの使い分け:ペアプログラミング(2人で行う・集中作業が可能・導入しやすい)・モブプログラミング(チーム全員で行う・知識共有・複雑な設計判断・新メンバーのオンボーディングに特に効果的)。両者を状況に応じて使い分けることが実践的なアプローチだ。

リモートワーク環境でのモブプログラミングツールとして、VS Code Live Share・Tuple・ZoomのAll Hands画面共有などが活用されている。対面より疲労感が増す傾向があるため1日2〜4時間程度に制限することを推奨する。ポモドーロテクニック(25分作業・5分休憩)と組み合わせることで集中力を維持しやすい。

よくある誤解

モブプログラミングは個人の生産性が下がるから採用すべきではないと思っている

個々のタイピング量は減るが、リアルタイムのコードレビュー・設計議論・知識共有によって後工程のバグ修正・レビュー・引き継ぎのコストが大幅に減少する。チーム全体のスループットは必ずしも下がらないという報告が多い。

モブプログラミングは全ての開発作業に向いていると思っている

複雑な設計判断・バグの原因調査・新機能の方針決定にはモブプログラミングが効果的だ。一方で単純なタスク・個人が集中してこなせる作業は個人作業の方が効率的な場合がある。

会話での使われ方

ITKAGYO運営者デプロイ太郎のアイコン画像

モブプログラミングで複雑なバグを全員で調査したら、誰か1人では気づかなかったポイントを別のメンバーが指摘して10分で解決できました。

モブプログラミングで複数の視点が問題解決を加速した場面。

ITKAGYO運営者デプロイ太郎のアイコン画像

新しく入ったメンバーのオンボーディングにモブプログラミングを使っています。実際のコードベースに触れながらチームの設計思想を学べるので2週間で戦力になりました。

テックリードが新メンバーのオンボーディング手法としてモブプログラミングの効果を説明している場面。

ITKAGYO運営者デプロイ太郎のアイコン画像

今日のモブ、設計議論が主で全員の意見が揃ったのでコードは30分で書けました。複雑な設計判断ほどモブが効率的ですね。

モブプログラミングセッション後の振り返りでの会話。

【まとめ】3つのポイント

  • チーム全員が1台のPCで同時にコードを書きナビゲーターとドライバーをローテーションする開発手法:高品質なコードを生み出しながらチームの知識共有・学習・バスファクターの低下を同時に実現するモブプログラミングは複雑な設計判断・バグ調査・新メンバーのオンボーディングに特に効果的だ
  • 個人の生産量より後工程のコストを含むチーム全体のスループットで評価する:1人のタイピング量は減るがリアルタイムのコードレビュー・設計議論による後工程のバグ修正・レビュー・引き継ぎコストの削減でチーム全体の生産性は必ずしも下がらないという報告が多い
  • ペアプログラミングとモブプログラミングを状況に応じて使い分ける:2人で行うペアプログラミングは集中作業に・チーム全員で行うモブプログラミングは複雑な設計判断・知識共有・オンボーディングに向いており状況に応じた使い分けが実践的なアプローチだ

よくある質問

Q
モブプログラミングの始め方はどうすればいいですか?
A

まず2〜3時間の試験的なモブセッションを実施することをお勧めします。大きなモニター・ワイヤレスキーボード・15〜20分のタイマーを準備して、ドライバーとナビゲーターの役割を明確にしてスタートします。

Q
モブプログラミングはリモートワークでもできますか?
A

はい。VS Code Live Share・Tuple・ZoomのAll Hands画面共有などを使ってリモートでモブプログラミングができます。

Q
モブプログラミングとコードレビューはどちらが効果的ですか?
A

目的が異なります。モブプログラミングはリアルタイムに全員でコードを書きながらレビューする継続的なプロセスです。コードレビューは書き終えた後に確認するプロセスです。

Q
モブプログラミングのセッションはどのくらいの時間が適切ですか?
A

1日あたり4〜6時間程度が一般的な目安です。継続的な高集中は疲労につながるため、こまめな休憩と組み合わせることが推奨されます。

【出典】参考URL

https://mobprogramming.org/ :Mob Programming公式サイト(Woody Zuill氏)
https://www.agilealliance.org/glossary/mob-programming/ :Agile AllianceのMob Programmingの解説

:VS Code Live Share

コメント

「IT用語、難しすぎて心が折れそう……」という方のための、ハードル低めな用語辞典です。

情報レベルは「基礎中の基礎」。会話を止めないためのエッセンスだけを抽出しています。分かりやすさを追求するあまり、時々例え話が暴走しているかもしれませんが、そこは「ほどよく」聞き流していただけると幸いです。
ほどよくIT用語辞典システム開発・テクノロジー
デプロイ太郎のSNSを見てみる!!
タイトルとURLをコピーしました