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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
ANDPAD inc
November 21, 2023
Programming
310
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
Go 探無比ワークショップ開催レポート
andpad
0
74
実行場所を意識させない i18n API を作った話
andpad
1
230
Go 1.27 における memory allocation の高速化
andpad
0
410
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
200
OS アップデート対応の取り組み方がもっと共有されてほしい
andpad
0
150
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
600
ANDPAD Ruby sponsor session in RubyKaigi 2026
andpad
0
290
AWS WAFの運用を地道に改善し、自社で運用可能にするプラクティス
andpad
2
1.3k
アプリから 360 度カメラ「RICOH THETA」に接続して写真を撮影する
andpad
0
99
Other Decks in Programming
See All in Programming
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
330
Workers Cache を知る
syumai
0
320
すこし踏み込む CancellationToken
htkym
2
1.5k
SREの越境 / SRE Collaboration
y0hgi
2
290
iOSDCのペンライトを自動制御したい!
akkeylab
0
280
AHC070解法紹介
eijirou
0
150
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
270
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
190
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
730
Agents on Rails - Rails at Scale 2026
irinanazarova
0
300
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
330
Java 27新機能 / Java 27 new features
kishida
2
190
Featured
See All Featured
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
490
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Crafting Experiences
bethany
1
360
GraphQLとの向き合い方2022年版
quramy
50
15k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
910
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
750
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Paper Plane
katiecoart
PRO
4
53k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
520
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Darren the Foodie - Storyboard
khoart
PRO
4
4k
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では、コード品質向上・開発者体験の向上の ために、リアーキテクティング専任のチームを立ち上げ た • 今回はライブラリアップデートを事例に紹介