Upgrade to Pro — share decks privately, control downloads, hide ads and more …

モバイルアプリ開発チームをプラットフォームチームで分割した話

tinpay
July 20, 2023
370

 モバイルアプリ開発チームをプラットフォームチームで分割した話

tinpay

July 20, 2023
Tweet

Transcript

  1. 自己紹介 2 • 名前:福井 章平 (tw: @tinpay) ◦ 2014年入社 •

    役職:プロダクト本部    モバイルアプリケーション開発部    マネージャー    (15年前にiOSアプリ作り始めた) • 趣味 ◦ 大阪のスパイスカレー屋さん巡り ◦ ビール🍺
  2. 事業概要 *1 Chatworkセグメント以外の事業として、ESET社提供のセキュリティ対策ソフトウェア「ESET」の代理販売事業を展開。安定的な収益貢献となっている *2 Nielsen NetView 及びNielsen Mobile NetView Customized

    Report 2022年5月度調べ月次利用者(MAU:Monthly Active User)調査。   調査対象はChatwork、Microsoft Teams、Slack、LINE WORKS、Skypeを含む47サービスをChatwork株式会社にて選定。 *3 2023年3月末日時点 • 国内最大級のビジネスチャット「Chatwork」 を中心に、複数の周辺サービスを展開*1 • ビジネスチャットのパイオニアであり国内利用 者数No.1*2、導入社数は39.7万社*3を突破 • 電話やメールから効率的なチャットへ、ビジネ スコミュニケーションの変化を加速させ、 プラットフォーム化を目指しています 4
  3. ① iOS/Android混合チームを発足 iOS iOS iOS iOS Android Android Android iOS

    iOS Android iOS iOS Android Android Android Android iOSチーム Androidチーム チーム チーム OSごとのチームではなく、 iOS/Androidエンジニア混在チームを 2つにした
  4. ① iOS/Android混合チームを発足 結果 • 部内においてiOSエンジニアとAndroidエンジニアのコミュニケーションが活性化し、機能 差異が生まれないようにしようとする動きがでてきた。 • 別プラットフォームのチケットをやる方もいたが、日常的に開発をしないとなかなか身につ かなかった。 ◦

    モバイル領域は変化が激しいので、キャッチアップを行うのに労力がかかる。 • 機能開発が優先されてしまい、技術的負債の解消が後回しになることが多かった。 • チーム間でコンフリクトすることを防いだり、リリース時期を調整したり、別チー ムのコードレビューをするために、別チームが開発している機能の仕様や実装を認 知しておく必要があった。 • 2つのiOS/Android混在チーム • iOSチーム • Androidチーム Good More More More
  5. ② プラットフォームチームを発足 iOS iOS iOS iOS Android Android Android Android

    チーム チーム ちいとぽを参考に、ストリームアラインドチーム、プラットフォームチームに分割した iOS iOS Android Android iOSプラットフォームチーム Androidプラットフォームチーム iOS Android iOS iOS モバイルストリームアラインドチーム Android Android
  6. ② プラットフォームチームを発足 どういう課題を解決したかったのか? • チーム間でコンフリクトすることを防いだり、リリース時期を調整したり、別チームの コードレビューをするために、別チームが開発している機能の仕様や実装を認知して おく必要があり、そこにコストがかかった。 → 認知負荷の向上 新チームに期待したこと

    • ストリームアラインドチームの認知負荷を軽減 ◦ 組織としてフィーチャーチーム化を目指しており、将来的には部外のチームでもモバイ ルアプリ開発がどんどん行われていく想定。それらフィーチャーチームの認知負荷軽減 を目指す。 • 2つのiOS/Android混在チーム • ストリームアラインドチーム (iOS/Android混在) • iOSプラットフォームチーム • Androidプラットフォームチーム
  7. ② プラットフォームチームを発足 ストリームアラインドチームの作業 • 機能開発 プラットフォームチームの作業 • ストリームアラインドチームのコードレビュー、開発サポート • リリース作業

    • モバイルアプリ開発基盤整備 ◦ CI/CDメンテナンスなど • リアーキテクチャ主導 • カスタマーサポートからの問い合わせ窓口 • 2つのiOS/Android混在チーム • ストリームアラインドチーム (iOS/Android混在) • iOSプラットフォームチーム • Androidプラットフォームチーム
  8. ② プラットフォームチームを発足 結果 • ストリームアラインドチームの認知負荷が下がった。 ◦ 機能開発に集中できるようになり、リードタイム短縮に繋がった。 • いきなりちいとぽのプラットフォームチームとして振る舞うのは難しい。 ◦

    オフライン、アクセシビリティ、審査ガイドライン、 HIG/MDなどモバイル領域の専門性が高く、 機能開発してリリースするまでの流れの中でこれらの知見が必要。 ▪ ストリームアラインドチームの中には上記のような専門知識がないチームもある。その ため、プラットフォームチームがファシリテーションし、チームの自律性を高める必要が ある。 • アーキテクチャやコーディングルールだけでは網羅できない領域が多い。 • 2つのiOS/Android混在チーム • ストリームアラインドチーム (iOS/Android混在) • iOSプラットフォームチーム • Androidプラットフォームチーム More Good
  9. まとめ • ちいとぽを参考にプラットフォームチームを発足させてみて … ◦ ストリームアラインドチームの認知負荷はある程度軽減できたと思う ◦ モバイルアプリ開発の専門家が少ないチームだとチーム内でコードレビューが完結しないため、他 チームにコードレビュー依頼することでリードタイムが長くなってしまう ◦

    ストリームアラインドチームとプラットフォームチームの責務の分割が難しい ▪ チーム分割の目的としてはストリームアラインドチームの認知負荷を下げること ▪ 負荷を下げるためには、機能開発以外の作業をすべてプラットフォーム取れば良いわけではな い • 組織が目指している「 DevOpsを実現する職能横断型の自己管理されたチーム」とは違う • ストリームアラインドチームは運用保守も行う • モバイルアプリ開発において、開発生産性を上げていくアイデアがあれば教えてください