私は普段scoutyのフロントエンドやそれと関連するバックエンドを主に開発しています。私は2018年の2月に4番目のエンジニアとして入社しました。scouty入社後に実施したのが複数人で同時にコードを書くモブプロです。今回の記事ではモブプロの概要とメリット、また実施するときのポイントを紹介します。モブプロとはモブプロとは、ペアでプログラミングを行うペアプロの「ペア」が「モブ(複数人)」になったものです。複数人で同時にプログラミングを行うことで理解を深め、知識を共通化するという狙いがあります。ググってみると沢山の記事が出てきます。メソッド屋のブログメリットモブプロを実施するメリットは「理解を深め、知識を共通化する」とお伝えしましたが、より詳細に紹介すると下記のようなものが挙げられます。一人だと悩むようなケースも、すぐに相談できる相手が2人以上いるので壁打ちや議論がとても捗る常にレビューされてるようなもので、レビューコストがほとんどかからない疑問点やポイントを共有しながら進めるため、開発内容について詳細まで共有・理解できる皆の開発スタイル・手法・テクニックなどを知れるモブプロは新メンバーや普段あまり業務上の交流がないメンバーを交えて行うこともおすすめです。その際には下記のようなメリットがあります。そのメンバーが持つ技術・テクニックなどを知る良い自己紹介の場になる開発しながら浮かんだ疑問点をすぐに質問できるのでわかること/わからないことが明確になる既存メンバーの強みや特長を把握できるルールモブプロに必要なのは、複数人で見られるディスプレイ(scoutyではプロジェクターで投影しました)と各自のPCだけです。難しいルールはありませんが、役割分担についてだけ紹介します。モブプロの役割分担モブプロにはドライバー、ナビゲーターという2つの役割が存在します。ドライバーは常に1人です。対してナビゲーターは常に複数人です。ドライバーの仕事ドライバーはナビゲーターを信頼して、迷いなくコードを書き続ける事が求められます。ナビゲーターから指示される内容をコードに起こし続けます。ナビゲーターの仕事ナビゲーターはナビゲーター同士で議論をしながらドライバーに的確に指示を出し続け、ドライバーを導くことを求められます。ドライバーを1人づつ交代していき、全員が経験できるようにします。参考動画Youtubeにある3分ほどの動画「モブプロの1日」よければご覧ください。経緯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が書けなくても、楽しく技術をやりたいエンジニアの方であれば是非一度オフィスに遊びにきてください。詳しい技術スタックのお話ができると思います。自社採用に関して、こちらのアカウントにてご連絡いたします。techサービスを提供している会社です。あなたもSNSアカウントがあれば、LAPRASに集められた情報を確認することができます。インターネットに存在する情報を収集し、客観的に評価する事でスキルや価値観を可視化することで、その人の力が発揮できる企業とのマッチングを行います。従来の転職サービスのような経歴だけに関わらず、能力や努力に見合った正当な評価や機会を提供することを目指しています。私たちの人生には可能性が無数にあります。人は必ずしも人生を豊かにする機会に出会い、選択できるとは限りません。日本のキャリア事情に目を向けると、従来のナビサイトや転職サービスでは能力や努力に見合った正当な評価や機会を得られていない人たちもいます。本当に好きなことがあるのに食べていけるか不安で諦めた人、自分の望むキャリアや待遇を得るため努力しているけど方向があっているのか不安な人。LAPRASはこうした人たちが夢を掴む機会を提供できるかもしれません。LAPRASは、インターネット上にあるデータと最先端の人工知能技術を用いて、偶然を必然に変え、世の中のミスマッチをなくしていくことを目指します。それは結果として、個人の市場価値や生活の質を高め、企業の競争力を高めることにつながると考えています。