$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
なぜリアーキテクティング専任チームを作ったのか
Search
ANDPAD inc
November 21, 2023
Programming
0
260
なぜリアーキテクティング専任チームを作ったのか
白土 慧
@kei_s
テックリード
2023 年 11 月 22 日
「
コード品質向上のいろは - 先達に学ぶ実践例 Lunch LT
」
ANDPAD inc
November 21, 2023
Tweet
Share
More Decks by ANDPAD inc
See All by ANDPAD inc
Go コードベースの構成と AI コンテキスト定義
andpad
0
130
「もっと正確に、もっと効率的に」ANDPADの写真書き込み機能における、 現場の声を形にしたエンハンス
andpad
0
510
複数チーム並行開発下でのコード移行アプローチ ~手動 Codemod から「生成AI 活用」への進化
andpad
0
220
Building the Real World with Ruby
andpad
0
49
Catch Up: Go Style Guide Update
andpad
0
300
OSS開発者という働き方
andpad
5
1.8k
Vue・React マルチプロダクト開発を支える Vite
andpad
0
170
プロダクト開発を支えるデータ利活用:中央集権から「民主化」までの軌跡
andpad
0
230
アンドパッドの Go 勉強会「 gopher 会」とその内容の紹介
andpad
0
440
Other Decks in Programming
See All in Programming
GISエンジニアから見たLINKSデータ
nokonoko1203
0
170
20251127_ぼっちのための懇親会対策会議
kokamoto01_metaps
2
450
脳の「省エネモード」をデバッグする ~System 1(直感)と System 2(論理)の切り替え~
panda728
PRO
0
110
Deno Tunnel を使ってみた話
kamekyame
0
150
dotfiles 式年遷宮 令和最新版
masawada
1
790
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
6
3.8k
チームをチームにするEM
hitode909
0
350
Cap'n Webについて
yusukebe
0
140
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
3
840
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
200
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
39
26k
開発に寄りそう自動テストの実現
goyoki
2
1.2k
Featured
See All Featured
Designing for Performance
lara
610
69k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Building an army of robots
kneath
306
46k
[SF Ruby Conf 2025] Rails X
palkan
0
540
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Side Projects
sachag
455
43k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
1
200
Tell your own story through comics
letsgokoyo
0
740
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では、コード品質向上・開発者体験の向上の ために、リアーキテクティング専任のチームを立ち上げ た • 今回はライブラリアップデートを事例に紹介