はじめに
こんにちは。
NX開発推進部プロダクト開発第1グループでAndroidアプリを開発している休井です。
我々Androidエンジニアはグループの取り組みとして、モブプロ会を定期開催しています。
今回は、モブプロ会の経緯やそこで得られた成果を紹介したいと思います。
モブプロとは
モブプログラミング(モブプロ) は、複数人で1つの課題に取り組みながら、1台のPCを使ってコードを書いていく開発手法です。
コードを書く「ドライバー」と、方向性を示す「ナビゲーター」に役割を分け、交代しながら進めていきます。
ペアプログラミング(ペアプロ)と似ていますが、モブプロは3人以上のチームで行う点が特徴です。
チーム全員で議論しながら進めるため、ナレッジ共有や設計の理解が深まりやすいという利点があります。
モブプロ会について
背景
我々レコチョクのAndroidチームでは、次のような課題感を持っていました。
- 多くの現行プロダクトが運用フェーズに移行している中で、0からの設計や技術の導入に関わっていないメンバーが多い
- 未導入の技術や新しい技術に対し、プロダクトに本格採用する前にあらかじめ検証を重ねて知識を深めておきたい
元々Jetpack Compose等の新技術についてモブプロ形式で学習をした経験があり、チーム全体での学習にモブプロが有効的であるという認識がありました。
そのため、上記課題を解決しエンジニアとしてのスキルを底上げするためにモブプロ会を定期開催しよう!という運びになりました。
参加者
モブプロ会には10名程度参加しており、Android開発経験は以下のような分布になっています。
- 経験年数
- 1~3年:2~4名
- 4~6年:4名
- 7年以上:2~3名
全員参加必須というわけではないのと、多少のメンバーの入れ替えがありましたが常に8名程度は出席しています。
幅広い経験を持つエンジニアが参加することで、各メンバーが互いに知識を共有し合い、実践を通じて新たなスキルを習得する場となっています。
準備
モブプロ会を実施する前に、以下について話し合いを行いました。
- 学びたい内容
メンバーが興味を持っている技術や、実務で利用する可能性が高い技術をリストアップしました。
その中で、以下のような技術を学ぶことを目指しました。- アーキテクチャ: MVVM、マルチモジュール
- 通信: Retrofit、OkHttp
- メディア再生: Media3
- DI: Hilt
- UI: Jetpack Compose
- 進め方
0からアプリを作成するにあたって、どこまで実際の業務に沿った形にするかを話し合いました。
実務では要件定義やデザイン作成をAndroidエンジニア主体で行うことはあまりできないので、モブプロ会ではその辺りも含めて自分たちで進めてみようということになりました。
進め方としては、以下のステップで進めることにしました。- 要件定義
- デザイン作成
- 設計
- 実装
- テスト
- 開催方法
モブプロ会の開催頻度や対面・オンライン等をどうするかについて決めました。
ただ、進行中に課題に直面することがあり、その都度形式を見直すこととなりました。
これらの過程を3つのフェーズに分け、時系列で説明していきます。
フェーズ1
開催方法
- 週に1度1時間リモートで開催
- 8名程度
- 要件定義、デザイン作成、設計等
課題
- 進みが遅い
予定が合わなかったり業務が立て込んでいたりするとキャンセルになることもあるので、週に1度の予定だと次の開催が2~3週間空くなんてことも多々ありました。
その度に前回は何をやっていたのかの確認から入るので、それに時間が取られなかなか進まないという状態になりがちでした。
対策
- 開催頻度を変更 参加メンバーが多く毎度リスケするのも難しいのと、週1で1時間はそもそも少ないのでは?ということになり、開催頻度を週1回から週2回に増やすことにしました。
フェーズ2
開催方法
- 週2で1時間ずつ、リモート(途中から1日は出社)
- 8名程度
- アプリの実装(UI、ネットワーク、ローカルデータの取得等)
課題
開催頻度を変更したことで、単純に開催回数が増えて進みやすくなりました。
ただ、まだ以下のような課題があり、開発効率が良くない状態でした。
chiaki.kyui