Blog

リモートモブプロ支援ツール「mob」を使ってモブプロしてみた

この記事は、ニフティグループ Advent Calendar 2022 14日目の記事です。

今回は、モブプロ支援ツールの「mob」について紹介していきたいと思います!

モブプロとは?

モブプログラミング(モブプロ)とは、複数人の開発メンバー(モブ)がコミュニケーションを取りながら実装を進め、実際にコードを書く「タイピスト(ドライバー)」と、「その他のモブ(ナビゲーター)」に分かれて行うソフトウェア開発手法です。また、タイピストは一定時間で交代することが良いとされています。

モブプロのメリットとしては以下のようなものが挙げられます。
  • 一人で考え込まず、参加者と知識を共有し合うことで、素早く問題を解決できる
  • 複数人で確認し合いながら作業を進めるため、レビューの時間を短縮できる
  • 個人でそれぞれ持つ知見を他の参加者に共有でき、全員が共通認識を持って作業することができる。誰か一人がプロジェクトを抜けてしまっても、他の人がカバーすることができる
  • コミュニケーションが促進される
反対に、デメリットは以下です。
  • 大勢でのモブプロの場合、発言する回数が少なくなり集中が続かない
  • 全員で一つのタスクについて作業をするため、リソース効率は落ちる
  • 全員の予定を合わせるのが難しい
モブプロの概要やメリット・デメリットを踏まえた上で、モブプロ支援ツールである「mob」について触れていきたいと思います。

mobとは?

リポジトリ → https://github.com/remotemobprogramming/mob
mobとはモブプロをリモートで実施する上で便利に使えるツールです。
実装されているコマンド群を使って、以下のようなことができます!
  • タイマーを使った時間管理
  • Git経由で次の人へソースコードを渡すことができる(Git Handover)
  • モブプロ用にブランチを作成し、そこにcommitしていくので、ブランチをクリーンに保つことができる
なお、mobはGitHub上でOSSになっており、Go言語で実装されているようです。

インストール

基本的には以下のコマンドを使うことでインストールできます。 macOSの場合はHomebrewを使ってもインストールできます。

実際に使ってみる

必要なコマンドはmob startmob nextmob doneのみです!

mob start

まず、mob startでモブプログラミングを開始します。
mob-programming-testというリポジトリのmainブランチでモブプロすることを想定します。 git branchコマンドを見てみます。すると、mainブランチからmob/mainというブランチが新たに作成され、checkoutしていることがわかります。モブプロ中はこちらで作業していきます。   ちなみに、mob startはタイマーを設定することができます。以下のコマンドでは10と設定しました。現在時刻が19:57なので、20:07までの10分間のタイマーが設定されました。 10分経過すると、Macの場合はAppleScript (osascript)を使って通知されるようになっています。さらにsayコマンドを使って mob nextと読み上げてくれます。

mob next

mob nextは、タイピストが実施した全ての作業をコミットにまとめてリモートブランチにpushし、次のタイピストへGitを経由してソースコードを渡します。
作業の例としてsample.txtを生成します。 その後mob nextでタイピストを交代します。 次の人はモブプロが始まったブランチ(この場合はmainブランチ)でmob startを実行します。
mob/mainブランチにcheckoutし、前のタイピストが実施したところまでのコミットをローカルに反映します。

mob done

何度かmob startmob nextを駆使し、モブプロで実装する機能が完成したとします。
mob doneコマンドを実行し、派生元のブランチにマージしていきます!
ここではmainブランチへマージします。 あとはgit commitし、リモートブランチへpushするだけです!

まとめ

  • mobコマンドはリモートでモブプロをするときに便利!
  • それぞれのコマンドはGit Handoverで実現されているのでソースコードの受け渡しが簡単にできる!
    • mob start: モブプロを開始する
    • mob next: タイピストの交代
    • mob done: モブプロを終了する
リモートでモブプロを実施するときに使ってみてください!

We are hiring!

ニフティでは、さまざまなプロダクトへ挑戦するエンジニアを絶賛募集中です! ご興味のある方は以下の採用サイトよりお気軽にご連絡ください! Tech TalkやMeetUpも開催しております! こちらもお気軽にご応募ください!  
明日は、@spicy_laichiさんの記事です。お楽しみに!