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

おわり