Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
なぜリアーキテクティング専任チームを作ったのか
Search
ANDPAD inc
November 21, 2023
Programming
330
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
なぜリアーキテクティング専任チームを作ったのか
白土 慧
@kei_s
テックリード
2023 年 11 月 22 日
「
コード品質向上のいろは - 先達に学ぶ実践例 Lunch LT
」
ANDPAD inc
November 21, 2023
More Decks by ANDPAD inc
See All by ANDPAD inc
R8 の設定見直しでアプリサイズ削減
andpad
0
220
Go 探無比ワークショップ開催レポート
andpad
0
93
self-service-infrastructure-with-argocd-and-atlantis
andpad
0
15
実行場所を意識させない i18n API を作った話
andpad
1
250
Go 1.27 における memory allocation の高速化
andpad
0
460
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
230
OS アップデート対応の取り組み方がもっと共有されてほしい
andpad
0
160
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
630
ANDPAD Ruby sponsor session in RubyKaigi 2026
andpad
0
310
Other Decks in Programming
See All in Programming
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
Kotlinの15年とServer-Side Kotlin
n_takehata
1
150
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.2k
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
130
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
120
Railsバージョンを4倍にした話
optim
0
350
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
8.5k
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
110
気持ちぃ〜角丸 Squircle
ryu1013
0
310
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
Featured
See All Featured
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
520
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
280
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3.1k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
870
Ethics towards AI in product and experience design
skipperchong
2
430
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
360
Being A Developer After 40
akosma
92
590k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1.1k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
480
Site-Speed That Sticks
csswizardry
13
1.6k
Transcript
なぜ リアーキテクティング専任チームを 作ったのか 白土 慧, Kei Shiratsuchi, @kei_s ίʔυ্࣭ͷ͍Ζ
- ઌୡʹֶͿ࣮ફྫ Lunch LT, 2023.11.22(Wed)
自己紹介 • 白土 慧 (シラツチ ケイ) • kei-s • @kei_s
• 2021〜: 株式会社アンドパッド • リアーキテクティングチーム(リアーキチーム)を立ち上げ • 主に大規模な Rails アプリケーションを対象
このトークでは • コード品質の向上・維持のために「専任チーム」を作るとい うアプローチがある、という事例をお伝えしたい • 特にライブラリ等のバージョンアップを事例にして • トークの流れ 1. リアーキチームができる前の状況
2. リアーキチームを立ち上げるときに考えたこと 3. リアーキチームでやっていること
前提 • ANDPAD: 建築・建設業向けのSaaS • 様々な業務ドメイン向けのプロダクトを提供 • 施工管理、検査、チャット、etc… • 顧客がサービスを様々な組み合わせで利用できる
• 提供するプロダクトが多く、開発チームも多い
アーキテクチャ • 中心となるRailsアプリ(本体Railsアプリ)と、それに接 続する各ドメイン向けプロダクトで複数のプロダクトを提 供 • 本体Railsアプリだけでも複数のプロダクトを提供 • 開発開始から8年の歴史 •
プロダクトごとの約10チームが同時に開発 • 比較的新しいプロダクトはGoなどで構築
1. リアーキチーム開始以前の状況
「何か開発がうまく行かない」 • 障害が発生する • 機能開発に時間がかかる • ライブラリアップデートが滞る • 「価値を遅滞なく提供し続ける」ことが難しい状況
ライブラリアップデートが滞る • 具体的には、本体Railsアプリの一部ライブラリのバージョン アップが滞っている • いくつかのライブラリは開発停止していたり、マイグレー ションパスが長いものがある • 複数のプロダクトチームにまたがって使われているライブ ラリは、一つのチームで責務を持ちにくい
• Ruby、Rails自体も同様 • 上記二つの理由から、各プロダクトチームのロードマップに載 せにくい
ライブラリアップデートの重要性 • 「価値を遅滞なく提供し続ける」ことが難しくなる • 古いライブラリに依存したコードによるメンテナンス性 の低下 • ドキュメント・知見が見つからなくなっていく • セキュリティリスクの増加
• OSSを用いるメリットを受けられない • パフォーマンスの向上 • 新機能による生産性向上
2. リアーキチームを 立ち上げるまで
リアーキチームの発足 • 全体を俯瞰して課題を発見、解決していきたい • 既存の各チームはプロダクトロードマップを進めること を優先し、広い動きがしづらい状況 • チームの特徴 • 特定のサービス・ドメインに責務を持たない
• 全体の中で改善が追いついていないところをやる • 専任。リアーキにフルコミットする
ライブラリアップデートの対応 • 重要度・危険度を加味して優先順位をつけ、上から倒していく • 重要機能を担っているか • 開発予定の新機能が依存しそうか • セキュリティリスクが高まっているか •
リアーキチームで対応する • リソース(対応人数)を固定し、与えられたリソースで可能 なところまでやる • 「兼任」「有志」では対応が難しい長期課題に取り組む
3. リアーキチームで やっていること
リアーキチームの位置付け • 目的 • 既存の仕組みのつらみを解消 • 新規サービスの開発を楽にできるように • 改善を継続してやるぞ、という文化を醸成 •
その背景 • 放っておくと既存のつらみを踏襲した部分が増えていくので阻止 • リアーキチームだけでは限界がある。エンジニア全体でよりよい コードが書けるように
リアーキチームの位置付け • スコープ • プロダクトを跨いで共通に利用される箇所 • プロダクトに閉じた部分は各チームに任せ、スコープ 外とする • その背景
• 共通に利用される箇所の改善が追いついていない。 影響が広く、各チームだけで改善を進めにくい
ライブラリアップデートの例 • Ruby,Railsのアップデート • Ruby 3.0→3.2 をリアーキチームで対応 • 各チームの動作確認をスムーズに抜け漏れなく行うための環境 整備
• なぜ、アンドパッドは最新のRuby/Railsにこだわるのか?アップデートを 止めないための体制と仕組み • 古いライブラリのアップデート • 例: Webpack から Vite への移行(作業中) • プロダクトチームでは作業見積りが難しく着手されていなかった ライブラリのアップデート作業を実施
その他チームでやってきたこと • エラー通知の整理 • 本体Railsアプリの開発者向け • 共通で利用されるデータのリファクタリング • 中長期の課題向け •
🔎 @kei-s 実践 Rails アソシエーションリファクタリング - Kaigi on Rails 2023 • 本体Railsアプリ内部で広く使われていた独自の仕組みを廃止 • 新たに参加する開発者向け • 🔎 @makicamel 歴史あるプロジェクトのとある技術的負債を隙間プロジェクト の 210 PullRequests で倒しきった話 - Kaigi on Rails 2023
責務のさじ加減 • 「ライブラリアップデートは特定チームの仕事」にはしたくない • ライブラリも我々のプロダクト・コードの一部 • エンジニアチーム全体で責任を持つべき • とはいえ、放っておくと進まない領域は存在する •
広く共有されるライブラリや、極端に古くなったライブラ リ • 「ライブラリアップデートを進めていく姿勢」をエンジニアチー ム全体に広めていきたい
まとめ
まとめ • ANDPADでは、コード品質向上・開発者体験の向上の ために、リアーキテクティング専任のチームを立ち上げ た • 今回はライブラリアップデートを事例に紹介