少人数チームにおける複数アプリの継続的デリバリー_Yoshihiro Tanaka
by
UPSIDER, Inc. Tech&Product div.
×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
少⼈数チームにおける複数 アプリの継続的デリバリー Yoshihiro Tanaka
Slide 2
Slide 2 text
Yoshihiro Tanaka ● UPSIDER, Inc. ● App team ● ⼤体 2 年くらい
Slide 3
Slide 3 text
No content
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
Agenda 1. App team の役割 2. Team 構成 3. 私たちの課題 4. 課題に対する対応
Slide 7
Slide 7 text
App team の役割
Slide 8
Slide 8 text
● いくつかの app と backend を管理するのが主な役割 ○ UPSIDER ○ PRESIDENT CARD ○ Mobile backend ○ 今後は White label apps も展開 ● App team ⾃⾝でも計測や評価を⾏い、機能を設計している ● ⼀部 QA の設計や実施も担っている
Slide 9
Slide 9 text
Plan Action Analyze Evaluate App team Plan Team B Plan Team A
Slide 10
Slide 10 text
Team 構成
Slide 11
Slide 11 text
● Engineer 3 名 ● 全員が Android / iOS / backend を実装する体制 ○ Flutter app なので実装コストが⽐較的低い ○ Backend は Go なのでこちらも学習‧実装コストが抑えられる ○ 仕様は基本的に全員が把握‧共有する
Slide 12
Slide 12 text
課題
Slide 13
Slide 13 text
● 2 つの app / backend を効率よく開発していく必要がある ○ QA の設計などもあるため、リリースが混み合うと開発⼯数が少なくなる ○ Hotfix などもその都度発⽣し得る
Slide 14
Slide 14 text
● UPSIDER app と PRESIDENT CARD app には重複した機能 が多い ● ⼀⽅で、それぞれ個別の機能も存在する ● A に⼊った機能や修正は B にも⼊れたい
Slide 15
Slide 15 text
対応
Slide 16
Slide 16 text
Repository ● 数ヶ⽉前に monorepo に変更した ● 今までは App, package 別の repository で管理していたが… ○ 別の app に機能を持ってくるのが⾯倒 ○ 修正を⽚⽅に反映するのを忘れる ○ CI/CD 上での private package の管理が煩雑
Slide 17
Slide 17 text
App packages UPSIDER And more… PRESIDENT CARD Before
Slide 18
Slide 18 text
App packages UPSIDER PRESIDENT CARD Shared Package C apps UPSIDER PRESIDENT CARD Shared Package A Package B After
Slide 19
Slide 19 text
Development ● Pub workspaces を使⽤して管理 ● 共通機能に関しては shared 配下の package に順次切り出す ● Apps 配下の shared ○ まだ package に切り出せていないもの ○ CI/CD 関連の共通のもの
Slide 20
Slide 20 text
CI/CD ● それぞれの directory の変更に応じて lint などを実⾏する ○ Package / Shared が変更された場合はそれぞれが⾛るように
Slide 21
Slide 21 text
CI/CD ● Release 時は namespace で release branch を切り分けて それぞれ QA 向け、Prod 向けの準備をする ○ E.g. releases/upsider/v1.0.0
Slide 22
Slide 22 text
Cons ● リリースでどのような差分が⼊ったか把握す るのが難しい ○ Devin などを活⽤して markdown 形式で書き出させ ている ● Devin などの⾃⽴型 AI agent に repository の構成を教えたり、workspace の setup を ⼯夫する必要がある
Slide 23
Slide 23 text
Pros ● 開発効率は上がっている ○ 依存関係などもより早く upgrade できるようになった ● CI/CD の管理がかなり楽になった ○ 主に⾃分が管理していたため、個⼈的に⼀番嬉しい
Slide 24
Slide 24 text
今後の展望
Slide 25
Slide 25 text
● Cursor, Devin, v0, Claude Code などを活⽤した効率化 ○ 特に事務作業やリリース作業の効率化を今後も進める ● Figma や Designer との連携強化 ● AI を活⽤した E2E test の実施
Slide 26
Slide 26 text
おわり