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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for tinpay tinpay
July 20, 2023
570

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

Avatar for tinpay

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を実現する職能横断型の自己管理されたチーム」とは違う • ストリームアラインドチームは運用保守も行う • モバイルアプリ開発において、開発生産性を上げていくアイデアがあれば教えてください