少人数チームにおける複数アプリの継続的デリバリー_Yoshihiro Tanaka
by
UPSIDER, Inc. Tech&Product div.
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
おわり