技術開発部 統括部長
COLUMN
コラム
BizTechコラム
ITアーキテクト育成
プログラミングはペアからモブへ
森 隆彦
2018.02.02
本コラムでは、当社とグループ企業とで共同開催している勉強会で実践している「モブプログラミング」についてご紹介します。
モブプログラミングとは
モブプログラミングとは「モブ(群集、群れ)」と「プログラミング」を組み合わせた言葉で、その名の通り、複数人のメンバーが同じ場所、同じコンピュータ・画面(プロジェクター)でプログラミングを行う開発手法です。似たような開発手法にペアプログラミングがあります。実際に手を動かす「ドライバー」と、レビューを含め作業をサポートする「ナビゲーター」、2人1組で役割を交代しながら生産性向上を図る開発手法です。モブプログラミングは、このナビゲーターが多くいる状態と考えると理解しやすいと思います。ペアで作業する場合、ナビゲーターはドライバーの考え方や意図をリアルタイムに汲むことができるため、認識あわせをしながら開発作業ができるというメリットがあります。モブの場合には、この認識あわせを当事者間だけでなくチームレベルで実施できるため、効率をさらに高めることが期待できます。
モブでプログラミング
協調活動は教育に効く
今回は勉強会という通常の開発業務とは異なる状況ではありますが、実際にモブプログラミングを経験して、スキルトランスファーや若手エンジニア教育のシーンに有効だと感じました。従来方式の、個々人の作業に対する有識者レビューだけでは、複数人いるレビュアー毎に品質にバラつきが出てきたり、スキルセットの差により当事者しか理解できないロジックになってしまったりと、少なからず問題が発生する可能性があります。
片や、モブプログラミングの場合は、参加しているメンバー全員の理解と認識共有をしながら進めることで従来方式の問題発生リスクを軽減できます。メンバーには過去経験した案件や担当領域によって得手・不得手があります。今回のフロントエンド勉強会では知識や経験はほとんど同レベルではあるものの、決めたテーマに対して「Javaならどうやって書くだろう」「ドメイン駆動設計の観点から見ると分かりやすい」といったように、メンバー共通のバックグラウンドを活用して、協調しながら知識習得ができました。モブ形式でフロントエンドとバックエンドの違いを整理していくことで、バックエンド側の理解も深めることができるという副次的な効果もありました。
業務に活用するためにはプロセスの見直しが必要
一方で、業務適用を考えると運営プロセスの検討・改善が必要です。短期間試行しただけですが、下記のような問題が見えてきました。
問題点:特定のメンバーだけが盛り上がる...
解決案:ドライバーをうまく切り替えてチーム全体のモチベーションを高める
問題点:課題を解決できずに時間だけが過ぎていった...
解決案1:ゴールをブレイクダウンして明確化する
解決案2:タイムキーパーを設けて時間ごとに役割を交代する
また、複数人が1つのタスクを対応することになるので、従来手法では管理しきれなくなることも予想されます。これまで通り、各メンバーがそれぞれ別のタスクを対応すれば、人的リソースを有効活用でき稼働率を上げることができます。
一方で、リーン開発手法の元となったTPS(※)では、仕掛かり中を1つないし、限りなく少なくして市場投入スピードを速めるOne Piece Flowという考え方があります。モブプログラミングの利点・考え方は後者に近いため、リーン開発手法を実践している現場では、モブプログラミングの導入の障壁が低いと考えられます。
まとめ
本コラムではモブプログラミングとその所感についてご紹介しました。すぐに業務へ適用するには難しそうですが、まずは始めてみることが重要です。なにより、モブでの作業は楽しいです。プロトタイプの作成や共通処理方式のアーキテクチャ標準化などのシーンがあれば、是非試してみることをおすすめします。
- ※ TPS Toyota Production System:トヨタ生産方式
最終更新日: 2022.5.2
著者プロフィール
森 隆彦
お客さまのビジネスに貢献するITサービスの提供を、ITアーキテクトとして戦略的情報化企画から開発、運用まで、幅広くアシストします。エネルギー系企業や金融系企業などのシステム構築経験をバックボーンに、高可用性が求められるシステム開発における非機能要件定義やデータモデリング、パフォーマンスチューニングを得意としています。また、社内外のITアーキテクトコミュニティの運営にも携わり、ITアーキテクト職の啓発および後進の育成を推進しています。
※ 所属部署・役職は2021年3月以前のものです