こんにちは、YOUTRUSTのモバイルチームでエンジニアをしている中村です。
先日YOUTRUSTにもバスケ部が発足し早速活動をしてきました。2年ぶりのバスケが楽しかったので、部以外でもバスケしてたら膝に全治1ヶ月半の怪我をしました。年齢には勝てませんね... バスケに興味がある方は是非下記コミュニティにご参加ください🏀
さて、現在私はモバイルチームでリリース管理やエンジニアメンバーのタスクのアサイン、PdMなど上流工程との窓口など、マネジメント周りをメインでやりつつ、Flutterで開発しています。
副業で手伝っていた時や入社時はWebフロントエンドを担当していたのですが、Android版の開発とローンチの目標が決まり、その間に施策関連の開発も止めたくないという背景があり、半年前ちょっと前くらいから本格的にモバイルチームに異動しました。
以前モバイルエンジニアの朝日が技術構成について書いていたので、私はモバイルチームが日々どのように開発しているかを紹介できればと思います。
メンバー構成
現在フルタイムが2人、副業メンバーが2人の4人構成です。
フルタイムはしばらく朝日1人だったのですが、前述の通り私がモバイルチームに異動しました。フルタイムはまだまだメンバーが足りないので募集しています。
副業メンバーは平日夜および休日の稼働がメインで主にリファクタリングや施策関連の実装をスポットで対応いただいています。ちょっと大きめの施策が走るときは週1でMTGを開催し同期的にコミュニケーションを取る機会を設けています。
イテレーション
イテレーション内のイベントなどを図にしてみました。
図にしてみるととてもシンプルですね。(やっているとなんかバタバタするなーっていつも感じています...)
基本は2週間を1イテレーションとして回しています。 ただし、プロダクトの目標数値達成のために納期がある場合やその他キャンペーンの開催、プレスリリースを出すタイミングやビジネスサイドの要望などで調整しています。
また、図には記載がないですが、以下のようなMTGがあります。
- 夕会(毎日夕方15分)
- 振り返り(リリース後)
ここからは図に記載のあるイベントで何をやっているかを書いていきます。
キックオフ
今イテレーションで何をやるか、どこまでやるかを決めます。
現在の開発の流れとして、PdMやデザイナーが施策を考え、エンジニアが実装します。それなりに分業化が進んでおり、アプリエンジニアはアプリの実装に注力できる環境です。クォーターのはじめなど時期によっては、施策関連の実装がないこともあり、エンジニア主導でリファクタリングやパフォーマンス改善、テストの拡充など、普段あまり着手できない部分の開発を進めています。
そのため、キックオフMTGでタスクの優先度やアサイン決めをし、PdMとエンジニアの目線を合わせています。
次イテレーションの検討
次のイテレーションでの方針を決めます。主に私とPdMで認識を合わせています。
キックオフMTGで「これをやりたい」となった場合、「APIの開発が必要なのですぐはできませんね...」や「今のイテレーションのタスクが遅れてるからできない...」みたいなのが極力発生しないように頭出しをする会です。
この会を始める前と始めた後では、キックオフMTGの進めやすさが違いました。
QA
1~3日ほど確保していますが、大きめの機能のリリース(Room機能など)がない限りは1日で完了します。
挙動のQA(書いたコードの意図通りに動いているか)をエンジニア、機能の仕様が正しいか・意図したものになっているかのQAをPdMが行います。
ここは全て手動でやっているため、結合テストやE2Eを導入して、徐々に自動化していきたい工程ですね...
申請・リリース
QAが完了したら申請・リリースをします。
リリース後はワイワイと盛り上げます!!!
意識していること
タスクのアサインやリリースマネジメントを考える上で意識していることは、フロー効率を最大化するというところです。簡単にいえば「人が余ってもいいから優先度高いやつを早くリリースしようね」ということです。(余ることはないですが)
フロー効率とリソース効率は以下のスライドを参考にしています。
www.slideshare.net
エンジニアリングは多くの人が手を動かせば、早くリリースできると言うものではないです。なので、最優先のプロジェクトを早くリリースするためには最適な人数のアサインと最適なタスク配分をすることを常に考えています。
課題・今後やっていきたいこと
QAの仕組み化
現状QAはエンジニアが項目を作成し、実機でぽちぽちと確認する手法になっています。 不具合があるとユーザーに不利益になる機能(投稿ができない、ログイン・登録ができないなど)は毎回確認しているのですが確認箇所が増えてきたこともあり、結合テストの導入やE2Eの導入をしたいと考えています。
アプリの体験品質の向上
アプリをローンチして1年ちょっとが経過しました。 慢性的にリソース不足の中、超特急で作ってきたこともあり、実装面でもサービスの成長に耐えられないところが出てきた部分もあるのかなと感じています。 以前に比べ画面のカクツキが発生していたり、データ量の増加に伴い画面表示が遅くなっていたりします。 これまで、施策関連の開発が9割くらいをしめていたのですが、今後はコード品質などの改善タスクをうまいことバランスを取りながらやっていければと思っています。
開発力の可視化
前述した「今後はコード品質などの改善タスクをうまいことバランスを取りながらやっていければ...」を実現するためには、現在のモバイルチームの開発力を知る必要があります。
そのために、いわゆるストーリーポイントみたいなものをつけて、イテレーティブ内でどれくらい消費できるのかを計測したいと考えていますが、現在のメンバー構成ではスクラムは大きすぎる気もしており、もう少し同期的にコミュニケーションが取れるメンバーが増えた時にしようか検討しているところです。
最後に
YOUTRUSTの開発チームが日々どのように開発をしているか、また自分が何を意識し課題に感じているかを書いてみました。
やりたいことがたくさんありますが、まだまだ人数も少なく当面の課題は採用かなと感じています。 もしYOUTRUSTのモバイル開発に興味がある方は一度お話しできればと思っています。まずはカジュアル面談からでもご応募いただけると嬉しいです!