1
/
5

scoutyで実践しているモブプロのルールとメリット

こんにちは、scoutyのフロントエンドマイスター 翁です。私は普段scoutyのフロントエンドやそれと関連するバックエンドを主に開発しています。
私は2018年の2月に4番目のエンジニアとして入社しました。scouty入社後に実施したのが複数人で同時にコードを書くモブプロです。今回の記事ではモブプロの概要とメリット、また実施するときのポイントを紹介します。

モブプロとは

モブプロとは、ペアでプログラミングを行うペアプロの「ペア」が「モブ(複数人)」になったものです。
複数人で同時にプログラミングを行うことで理解を深め、知識を共通化するという狙いがあります。
ちょっとググってみると沢山の記事が出てきます。日本でもモブプロがだいぶ広まってきているようですね!

メリット

モブプロを実施するメリットは「理解を深め、知識を共通化する」とお伝えしましたが、より詳細に紹介すると下記のようなものが挙げられます。

  • 一人だと悩むようなケースも、すぐに相談できる相手が2人以上いるので壁打ちや議論がとても捗る
  • 常にレビューされてるようなもので、レビューコストがほとんどかからない
  • 疑問点やポイントを共有しながら進めるため、開発内容について詳細まで共有・理解できる
  • 皆の開発スタイル・手法・テクニックなどを知れる

モブプロは新メンバーや普段あまり業務上の交流がないメンバーを交えて行うこともおすすめです。
その際には下記のようなメリットがあります。

  • そのメンバーが持つ技術・テクニックなどを知る良い自己紹介の場になる
  • 開発しながら浮かんだ疑問点をすぐに質問できるのでわかること/わからないことが明確になる
  • 既存メンバーの強みや特長を把握できる

ルール

モブプロに必要なのは、複数人で見られるディスプレイ(scoutyではプロジェクターで投影しました)と各自のPCだけです。難しいルールはありませんが、役割分担についてだけ紹介します。

モブプロの役割分担


モブプロにはドライバーナビゲーターという2つの役割が存在します。ドライバーは常に1人です。対してナビゲーターは常に複数人です。

ドライバーの仕事
ドライバーはナビゲーターを信頼して、迷いなくコードを書き続ける事が求められます。ナビゲーターから指示される内容をコードに起こし続けます。

ナビゲーターの仕事
ナビゲーターはナビゲーター同士で議論をしながらドライバーに的確に指示を出し続け、ドライバーを導くことを求められます。


ドライバーを1人づつ交代していき、全員が経験できるようにします。

参考動画

Youtubeにある3分ほどの動画「モブプロの1日」よければご覧ください。

scoutyでのモブプロ実施

経緯

scoutyではクローリングされたGitHubやSNSアカウントにするアウトプットを基に、「技術力・ビジネス力・影響力」を推定しています。scoutyではサービス改修を行う上で、大規模なリファクタリングをしていました。そのリファクタリング計画には「技術力・ビジネス力・影響力」を推定するシステムも含まれていました。このシステムはとても重要ですので、今後もメンテナンスしていく上でブラックボックスにならないように、どのように動いているのかをできるだけ多くのメンバーに対して詳細に共有する必要がありました。

以上のことから、「技術力・ビジネス力・影響力」を推定するシステムをリファクタリングする上で、モブプロが適していると考え実施を決定しました。

実践

scoutyのモブプロでは、ドライバーは約15分で交代しました。4人で実施し、きりの良い所までやるのに3サイクルほど使い、所要時間は約3時間でした。

ドライバー選定

モブプロをやる際にまずは誰が最初のドライバーをやるのか決めなければなりません。scoutyではジャンケンで勝った人が最初にドライバーをし、そこから時計回りでドライバー役を交代をするようにしました。

1サイクル目

ジャンケンで勝った方がまずはドライバーをしました。 そして3人のナビゲーターが議論を進めながら、ドライバーに指示を出していきます。初めに決めた事は「技術力・ビジネス力・影響力」を推定するシステムをどこに配置するのかです。scoutyではDDDで開発をしているので、このシステムのドメインを決めなければなりません。ドメインを見つけ、定める事はとても重要なことで、1人だと本当にそれで良いのか?と悩んでしまいます。しかし、ナビゲーター3人がいるおかげでとてもスムーズにドメインを見つけられました。そして、どのようなビジネスロジックを作るのかをナビゲーターがドライバーに指示していきました。

2サイクル目

このようにとても順調に進みましたが、「技術力・ビジネス力・影響力」を推定するアルゴリズムを作成する段階になりました。ここはとても重要なので、ドライバーも一旦手を休めて全員でアルゴリズムに関して議論をします。モブプロ参加メンバー全員で議論して筋の良い1つのアルゴリズムを考えつきました。ちょうどその時です。機械学習チームの方が近くを通ったので、せっかくなのでこのようなアルゴリズムでどうだろうかと相談したところ、いくつもアドバイスをいただけました。そのアドバイスをアルゴリズムに盛り込んで改善しました。モブプロメンバーはドライバーとナビゲーターの役割に戻り、ナビゲーターが考えたアルゴリズムの指針に沿って指示を出し、交代でドライバーが実装を進めました。

3サイクル目

その後は全く詰まづくこともなく今回のリファクタリングを達成できました。


感想

今回は新たなドメインの決定、重要度の高いアルゴリズムの実装などが含まれる難易度の高いリファクタリングでした。これを1人で開発した場合何度も相談したでしょう。 また、このような内容を1人で開発した場合レビューする人がその開発の詳細を知らないため、レビューするのが本当に難しいと思います。しかし幸いな事に早い段階でモブプロでやる事を決定できたおかげで無事リファクタリングができました。 モブプロでもドライバー役とナビゲーター役をしっかりこなしたお蔭でとてもスムーズに開発できました。沢山の問題を解決し、評価システムの理解を詳細まで開発チーム全員と共有し、ブラックボックス化も防げたのでモブプロをしてとてもよかったと思います。

まとめ

いかがでしたでしょうか。scoutyではモブプロ以外にもペアプロも採用しています。
またサービスとは直接は関係しないものの、開発の運用周り等ではメンバーが独自に作成したツール等も利用しており、いろいろ技術的に楽しめる風土があります。現在エンジニアチームは7名ですが、2019年春までには合計12名(2チーム)の開発組織を目指しておりまだまだ採用活動中です。

Pythonを中心に置いてはいますが、メンバーの多くが他の言語からのコンバートをしていますのでPythonが書けなくても、楽しく技術をやりたいエンジニアの方であれば是非一度オフィスに遊びにきてください。もっと詳しい技術スタックのお話ができると思います。

LAPRAS株式会社's job postings
6 Likes
6 Likes

Weekly ranking

Show other rankings
Like Okina Kahiro's Story
Let Okina Kahiro's company know you're interested in their content