自身以外アプリ開発が初めてのエンジニア・デザイナー・ディレクターで構成されたモバイルアプリ開発チーム
- デザイナーはアプリに適したUIやユーザの行動設計などの、iOSアプリに関するナレッジを貯め、新規開発からグロースまで行えるようにする
- エンジニアは1人でもアプリを作れるよう育成する
### 時期
2018〜2020年頃
### 前提
- 自分含めた4人の少数チーム
- 自分以外がiOSアプリの開発が初めて
### 内容
まずは少人数のチームなので、進捗・タスク管理にかかる手間を軽くするため、GitHub Projectsを利用しました。当時はまだ機能が少なかったツールですが、開発に近い場所で管理できるように、チームへ運用方法の共有をし、エンジニア以外のタスクも管理する形で進めました。
iOSが初めてのエンジニアは、GUIでのレイアウト設計に時間がかかってしまうことが多いため、そこを重点的に教えつつ、アプリの設計MVVM(RxSwift) + Clean Architectureをコードベースで教えました。また、その学習フェーズに合わせたタスクを振るようにしていました。
iOSが初めてのデザイナーは、Apple Human Interface Guidelinesの内容やワイヤーフレームからデザインに落とし込む際に、どういうコンポーネントが標準であるのか、カスタムする際どの程度であれば作りやすいのかなどを共有しながら、デザインを詰めていきました。
また、施策に対してどういう風に実現すれば、より工数を低くしながら目的を達成できるのかなど、ディレクターとも連携し、アプリの全体像を作っていきました。
マルチデバイス(Android/iOS/AndroidTV/FireTV/Web/ゲーム)対応のモバイルアプリチーム
### 初期リリースまで
- マルチデバイスを考慮して要件整理し、作るものを明確にする
- 要件から仕様を明確にし、各デバイスで意図しない機能の差分がないようにする
- タスク管理・運用を行い、進捗を管理できるようにする
- モバイルアプリの設計・ベースの開発を行い、チームで並列して開発をできるようにする
- 主にiOSアプリの開発をし、リリース品質に耐えるアプリを完成させる
### 初期リリース後の運用フェーズ
- 初期リリース時点で後に回した機能の追加要否の整理をする
- 追加開発に必要なタスクの整理をする
- 不具合や問い合わせの対応をし、アプリを改善する
- 安定したリリースサイクルを回せる状態にする
### 時期
2022年〜現在
### 前提
- 既存アプリの動画プレイヤーアプリのフルリプレイスも兼ねた、新規アプリとしての開発
- 既に稼働していたチームへのリーダーポジションでの参加(開発自体は1,2ヶ月ほど既に進んでいた)
- 参加当時、リリース目標だけ決まっていて、内容は殆ど固まっていない状態
- クライアント・バックエンド含め、殆どが新規開発
- iOSアプリ開発メンバーだけで7人前後、他の各デバイスチームも少なくて4人前後のチーム規模
### 内容
既に稼働していたチームへの参加だったため、元々リーダーポジションとして動いていた方とまずは現状の状態の認識や、チームメンバーの個性・働き方など、チームへ馴染むことを意識しました。
他チームとのやりとりに関しては、モバイルアプリチームのリードとして、現状のリリース目標を基準とした仕様調整をして行きました。
タスク管理に関しては、擬似スクラムな状態で進んでいて、形自体は大きくは変えず、
チームの1スプリントの生産性の可視化、開発予定タスクの工数可視化を行いました。
具体的には、日々決まっていく内容をタスク化しながら、概算見積もりをリーダーがつけ、それに対して実際にかかった工数を記録し、メンバー個人の生産性が分かるようにしました。
また、長期的に見れば属人化は避けるべきだと思いながらも、リリースまでの時間が短かったため、
大きく区切った機能単位で属人性をあえて持たせるようなタスクの割り振りをして進行して行きました。
これによって進みやすい/にくい機能も見えてくるようになり、それが仕様・技術力など何が問題なのかを整理を行なって行きました。
iOSアプリ開発に関しては、主には技術力的に足りていないチームだったため、既に少し開発が進んでいた基盤部分の改善から進めました。
- CI/CD環境の構築
- 新規画面を作るためのテンプレート準備
- 開発メンバーによってブレない設計
- 速度を求めるため、ある程度属人化した状態での機能開発の進行整理
- KMPをiOSで利用しやすくするための開発(当時はKMPオブジェクトがスレッドセーフではありませんでした)
- 進みの悪い機能開発のヘルプ
- QAチームとの連携
- etc...
リリースの終盤では、チーム内外での温度感のズレもありましたが、
メンバーにチーム全体としての具体的な生産性の期待値をベースに認識を合わせ、
愚直ではあるがモチベーションの低下に気をつけながら、無理のない範囲の残業でカバーする形で解決をしました。
最終的には色々な要因により、リリース時期は予定遅れましたが、ファーストリリースとしては耐えられる品質でリリースをできました。
リリース後に関しては、ビジネス的に致命的な不具合が長期間残ることもなく、大小不具合の優先度を決めながら、週一でのリリースを行い、3,4ヶ月ほどでユーザに影響が大きい不具合は解消することができました。