こんにちは!エウレカにてAndroidチームの責任者をやっている海藤です。国内最大級のオンラインデーティングサービス「Pairs」のAndroidアプリ開発と、Androidエンジニアのメンバーマネジメントを担当しています。
今回は、エウレカのAndroidチームが普段どのように仕事をしているのかを紹介したいと思います。エウレカの中でも少し特殊な働き方をしているチームで、一般的にも珍しいような気がするのでぜひ読んでみてください!
エウレカの開発組織
まずAndroidチームの紹介をする前に、前提となるエウレカの開発組織についても軽く紹介したいと思います。
目的別組織
エウレカは2018年3月までは以下のような目的別組織でプロダクトの開発を行っていました。
このような目的別組織では、各チームのKPIがはっきりとしていることから各チームがKPI達成に向かって一丸となって挑戦することができます。一方で、目的別組織を運営していく中で次第に以下のような課題感が生まれました。
- ビジネス状況の変化と各チームのKPIを柔軟に対応させていくのが難しい
- 施策実施時の開発終盤に大規模なコンフリクトが発生する
- 大きな技術的負債への対応が後手に回りやすい
そこで社内でディスカッションを重ねた結果、次に紹介する職能別組織への変更を行いました。
職能別組織
Androidチーム
職能別組織に変更になったタイミングではじめて一緒に働くメンバーがいたり、Pairs事業部から長らく離れていたメンバーがいたり、といった状況でした。そこで新しくチームとしてスタートするにあたり、特定のメンバーに分散してしまっているドメインナレッジをチーム全体のドメインナレッジとして浸透させることが優先課題であると考えて、モブプログラミングという開発手法を取り入れることにしました。
Androidチームにおけるモブプログラミングの導入については、同じくAndroidエンジニアの二川が弊社主催の勉強会で登壇した資料があるので、こちらもあわせてご覧ください!
モブプログラミング
モブプログラミングを一言で説明すると、1つのタスクに対して複数人で同時に取り組む開発スタイルです。具体的には、ドライバーと呼ばれる人が実際にコードを書き、周りにはナビゲーターと呼ばれる人がいてドライバーと一緒に作業します。ドライバー自身がゴリゴリとコードを書くこともありますし、ナビゲーターがサポートしつつする形でドライバーがコードを書くこともあります。
モブプログラミングを導入した目的は、チーム全体にドメインナレッジを浸透させることでした。導入後の振り返り会でのトピックを掘り起こしてみると、当初の目的は達成できていたようです。
- モブプログラミングによって知らなかった仕様に気付けた
- みんなの知恵を持ち寄ることによって以前よりもPairsに詳しくなれた
- 仕様が分からないことによる調査時間などが少なくなった
また、ドメインナレッジの浸透に加えて、以下のようなメリットもあったようです。
- 開発作業を効率化するためのショートカットや小技を覚えることができた
- 自分が書くコードを改めて言語化することで自分のスキル向上につながった
- 他の人から設計や開発スキルを盗むことができた
本記事公開時点(2019年2月)で開発組織の変更から1年弱が経過していますが、チームの総意としてソロでの開発よりもモブプロによる開発のほうが良いと考えており、今でも基本的には全ての作業をモププロで進めています。
アーキテクチャMTG
モブプログラミングと平行してアーキテクチャミーティングMTGも必要に応じて実施しています。このMTGの目的は、プロジェクト途中における仕様や設計方針の認識相違による手戻りを最小化することです。具体的には、2週間以上かかるような規模のプロジェクトの場合には、事前にクラス図やシーケンス図を書き、チームメンバー全員でディスカッションすることで認識統一を行います。アーキテクチャMTGを進めるために、プロジェクトオーナーがアーキテクチャの草案を作り、それをもとにして全員でディスカッションを行います。
例えば、以下のような資料をもとにチーム全員であれやこれやとディスカッションします。
開発に着手する前に設計方針についてチームメンバーが合意できる状態を目的としているため、紙で作成する場合もあれば電子媒体で作成する場合もあります。
Pairsで採用している技術やアーキテクチャについては、外部のカンファレンスでアウトプットしているメンバーもいます。例えば、私は「DroidKaigi 2019」にて、Pairsで採用している「Redux」というアーキテクチャについて発表してきました。
技術的負債の返済
エウレカでは職能別組織になっていることから、各プラットフォームのエンジニアで相談して大きめな技術的負債の返済を進めています。Androidチームではクラッシュフリー率とフリーズ率の改善を集中的に進めていました。具体的には、クラッシュフリー率が90%程度だったところからチーム全員で99%超まで改善を行ったり、フリーズ率も他社と同水準まで改善を行ったり、といったことをやりました。
クラッシュフリー率はAndroidエンジニアにはお馴染みの「Crashlytics」にて計測を行っており、今では定常的に99%を超える状態になっています。
フリーズ率は「Google Play Console」のAndroid Vitalsから確認することができ、様々なアプリとのベンチマークを確認することができます。チーム全員で改善を行った結果、今ではベンチマークで平均以上の数値を維持することができています。
まとめ
エウレカのAndroidチームは、誰かがスタンドプレーでチームを引っ張っていくのではなく、モブプログラミングやアーキテクチャMTGを通してチーム全員でタスクを倒していくというスタイルで開発を進めています。極稀に私がスタンドプレーをすることもあるんですけどね(笑)。
このようにチーム一丸となってプロダクト開発を進めてみたいAndroidエンジニアを大募集しています(切実)。もし少しでも興味がある人がいれば、私のTwitterでDMするか、以下のリンクからご応募ください!現時点で転職意思がなくともOKです!
===
最後までお読みいただきありがとうございます!今回は、Pairs JapanのAndroidチーム責任者 海藤によるAndroidエンジニアチームの働き方をご紹介しました。
エウレカでは、サービスを利用されるユーザーはもちろん、エウレカメンバーも含め「すべての人が、人生の可能性を拓いていける世界をつくる。」ことを真剣に目指しています。
エウレカにご興味をお持ちいただけた方は、ぜひWantedlyよりエントリーください。
ご応募お待ちしております!
Instagramはじめました**