Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
明日からできる!技術的負債の返済を加速するための実践ガイド~『ホットペッパービューティー』の事...
Search
Recruit
PRO
February 16, 2025
Technology
4
910
明日からできる!技術的負債の返済を加速するための実践ガイド~『ホットペッパービューティー』の事例をもとに~
2025/02/13に、Developers Summit(デブサミ)で発表した、浅井の資料です。
Recruit
PRO
February 16, 2025
Tweet
Share
More Decks by Recruit
See All by Recruit
Curiosity & Persistence
recruitengineers
PRO
2
92
結果的にこうなった。から見える メカニズムのようなもの。
recruitengineers
PRO
1
190
成長実感と伸び悩みからふりかえる キャリアグラフ
recruitengineers
PRO
1
76
リクルートの オンプレ環境の未来を語る
recruitengineers
PRO
3
77
LLMのプロダクト装着と独自モデル開発
recruitengineers
PRO
1
95
新規検索基盤でマッチング精度向上に挑む! ~『ホットペッパーグルメ』の開発事例 ビジネス編
recruitengineers
PRO
2
52
新規検索基盤でマッチング精度向上に挑む! ~『ホットペッパーグルメ』の開発事例 技術編
recruitengineers
PRO
0
57
大規模プロダクトにおける フロントエンドモダナイズの取り組み紹介
recruitengineers
PRO
5
92
技術的ミスと深堀り
recruitengineers
PRO
3
72
Other Decks in Technology
See All in Technology
Webブラウザのセキュリティ対策に役立つぞ!!~DevToolsの使い方~
masakiokuda
0
160
EC-CUBEはサーバレスで動かせるのか?
yukishimada
1
140
DIってなんだか難しい? 依存という概念を「使う・使われる」 という言葉で整理しよう
akinoriakatsuka
0
590
プロダクトの一番の理解者を目指してQAが取り組んでいること 〜現場・マネジメント各視点のプラクティス〜
hacomono
PRO
1
140
Oracle Cloud Infrastructure:2025年3月度サービス・アップデート
oracle4engineer
PRO
0
140
エンジニア採用と 技術広報の実践/acaricsummit2025
nishiuma
1
200
やっぱり余白が大切だった話
kakehashi
PRO
7
2.8k
Kubernetesを手元で学ぼう! 初心者向けローカル環境のススメ
nayaaaa
PRO
2
810
Agent Mode とは?GitHub Copilot の新機能を探る
lescoggi
1
150
Scala meets WebAssembly
tanishiking
0
160
組織に持ち込む脅威モデリング
nikinusu
2
630
保育 AI「たよれるくん」で 保育の質向上をアシスト
skakimoto
0
140
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
48
7.5k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
600
How to train your dragon (web standard)
notwaldorf
91
5.9k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
22
2.6k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
A better future with KSS
kneath
238
17k
RailsConf 2023
tenderlove
29
1k
Facilitating Awesome Meetings
lara
53
6.3k
Optimizing for Happiness
mojombo
377
70k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
Transcript
明⽇からできる! 技術的負債の返済を加速する ための実践ガイド 〜『ホットペッパービューティー』の事例をもとに〜 株式会社リクルート 浅井 徹
⾃⼰紹介 • 浅井 徹 (あさい とおる) • 略歴 ◦ (前職)
▪ 2014年に新卒⼊社 ▪ iOSアプリエンジニア ◦ 株式会社リクルート ▪ 2019年に中途⼊社 ▪ 『ホットペッパーグルメ』 ▪ 『ホットペッパービューティー』 • 現在の仕事内容 ◦ 『ホットペッパービューティー』アプリの品質を、 中⻑期な視点で維持‧向上するための活動 https://x.com/trsxxii https://github.com/trsxxii
『ホットペッパービューティー』とは? ▼国内最⼤級のヘアサロン‧リラク&ビューティサロンの検索‧予約サービス • ネイティブアプリ(iOS‧Android)とWeb(PC‧SP)にて提供 • キレイ領域(リラク&ビューティ)ではネイル‧まつげ‧リラク‧エステなど複数ジャンルに対応 HOT PEPPER Beauty 経由での年間予約数※1
1億8388万件 (2023年度) ※1 予約受付⽇ベース
今⽇の⽬的 「機能開発で溜まった技術的負債を返済できずに困っている⼈」 に
今⽇の⽬的 「機能開発で溜まった技術的負債を返済できずに困っている⼈」 に 「改善の分類⽅法とKPIツリーに基づいた優先順位の付け⽅」 を伝えることで
今⽇の⽬的 「機能開発で溜まった技術的負債を返済できずに困っている⼈」 に 「改善の分類⽅法とKPIツリーに基づいた優先順位の付け⽅」 を伝えることで 「明⽇から技術的負債の返済活動を始めてほしい」
みなさんこんなことありませんか? • 機能開発は順調にやれている • その反⾯、技術的負債が溜まってしまっており、 負債を返済したいのになかなか着⼿できない • ⼯数が限られている中でどう進めるのが良いかわからない
『ホットペッパービューティー』アプリでも同じ課題が‧‧‧ • リプレイスから約6年が経っており、技術的負債は溜まってきていた • 返済活動をメンバーの主体性に任せていた結果、担当者によって掛ける⼯数が異なる など、計画性がなく気合でどうにかする運⽤となってしまっていた • ゴール定義が無かったので、順調に進捗しているかわからなかった
『ホットペッパービューティー』アプリでも同じ課題が‧‧‧ • リプレイスから約6年が経っており、技術的負債は溜まってきていた • 返済活動をメンバーの主体性に任せていた結果、担当者によって掛ける⼯数が異なる など、計画性がなく気合でどうにかする運⽤となってしまっていた • ゴール定義が無かったので、順調に進捗しているかわからなかった いまは計画的かつ順調に返済活動が出来ているので、ご紹介!
発表の流れ 発散 収束 決定
と、その前に
と、その前に この活動を⼀緒にやる「仲間」を⾒つけること いくつかの⼯程は1⽇集まって集中して作業すること ポイントゼロ
と、その前に 『ホットペッパービューティー』では、 • チームリーダー、iOS/Androidリーダーの計3名 + 上司のレビュー • つぎの3⼯程は1⽇集まってがっつり集中 ◦ 「理想の世界観を定義」
◦ 「理想‧課題の仮説を洗い出す」 ◦ 「仮説のマージと改善の分類」 この活動を⼀緒にやる「仲間」を⾒つけること いくつかの⼯程は1⽇集まって集中して作業すること ポイントゼロ
理想の世界観を定義 発散 収束 決定
理想の世界観を定義 技術的負債の返済を考える上で… • ⾃分たちはプロダクトをどうしたいのか • どんなプロダクトにしていきたいか ⾔語化して形に残し、悩んだときに⽴ち返る場所として使う
理想の世界観を定義 技術的負債の返済を考える上で… • ⾃分たちはプロダクトをどうしたいのか • どんなプロダクトにしていきたいか ⾔語化して形に残し、悩んだときに⽴ち返る場所として使う とにかく徹底的に話し合う ポイント①
理想の世界観を定義 ~ 『ホットペッパービューティー』では ~
理想の世界観を定義 ~ 『ホットペッパービューティー』では ~ デリバリー短縮 • アプリ公開までの納期を短縮することで 多くの案件をリリースし、予約数‧売上に貢献出来ている 品質向上 •
障害が起こらず安定して使い続けられている • 技術的負債の継続的な返済が出来ている • 開発中の弊害が少なく開発速度が速い
理想の仮説を洗い出す 発散 収束 決定
理想の仮説を洗い出す いまある最新技術などのやりたいこと(=理想の仮説)とその理由の洗い出し • 効果の有無は関係なくすべて洗い出す (=まだ仮説状態でOK) • 洗い出しと同時に簡単なグルーピングもしておく
理想の仮説を洗い出す いまある最新技術などのやりたいこと(=理想の仮説)とその理由の洗い出し • 効果の有無は関係なくすべて洗い出す (=まだ仮説状態でOK) • 洗い出しと同時に簡単なグルーピングもしておく ⽇頃から最新技術を理解しておく 普段の業務中に常に理想を考えておく ポイント②
理想の仮説を洗い出す ~ 『ホットペッパービューティー』では ~
理想の仮説を洗い出す ~ 『ホットペッパービューティー』では ~
課題の仮説と解決策案を洗い出す 発散 収束 決定
課題の仮説と解決策案を洗い出す いまのプロダクトの課題であろうもの(=課題の仮説)とその解決策の案を洗い出す • 実際に課題かどうかは関係なくすべて洗い出す (=まだ仮説状態でOK) • メンバーにアンケートをするなど、実装時の細かい課題も洗い出す • 洗い出した課題を「なぜなぜ分析」で分析しておく •
洗い出しと同時に簡単なグルーピングもしておく
課題の仮説と解決策案を洗い出す いまのプロダクトの課題であろうもの(=課題の仮説)とその解決策の案を洗い出す • 実際に課題かどうかは関係なくすべて洗い出す (=まだ仮説状態でOK) • メンバーにアンケートをするなど、実装時の細かい課題も洗い出す • 洗い出した課題を「なぜなぜ分析」で分析しておく •
洗い出しと同時に簡単なグルーピングもしておく リーダーでもコードを触って現場感を知っている なぜなぜ分析で真因を突き⽌める ポイント③
課題の仮説と解決策案を洗い出す ~ 『ホットペッパービューティー』では ~
課題の仮説と解決策案を洗い出す ~ 『ホットペッパービューティー』では ~
課題の仮説と解決策案を洗い出す ~ 『ホットペッパービューティー』では ~
仮説のマージと改善の分類 発散 収束 決定
仮説のマージと改善の分類 「課題の仮説と解決策案」を「理想の仮説」にマージする • 理想の仮説は、課題に関係なく洗い出されていて、広い範囲をカバーしているはず 再度グルーピングをすると、これが改善の分類となる • 理想の仮説とその取り組みをやりたい理由、課題の仮説とその解決策案を再度グルー ピング
仮説のマージと改善の分類 ~ 『ホットペッパービューティー』では ~
仮説のマージと改善の分類 ~ 『ホットペッパービューティー』では ~
整理‧評価 発散 収束 決定
整理‧評価 改善の分類と施策(=理想の仮説‧課題の仮説と解決策案)を表に書き写し、 コストとリターンを埋めていく • コストとリターンは「⼤中⼩」で3秒⾒積もり スコープを絞っていく • 『ホットペッパービューティー』ではコスト⼤、リターン⼤をスコープとした • それ以外の施策は、別途保守で扱うこととした
整理‧評価 改善の分類と施策(=理想の仮説‧課題の仮説と解決策案)を表に書き写し、 コストとリターンを埋めていく • コストとリターンは「⼤中⼩」で3秒⾒積もり スコープを絞っていく • 『ホットペッパービューティー』ではコスト⼤、リターン⼤をスコープとした • それ以外の施策は、別途保守で扱うこととした
計画が必要な⼤きさの課題を取り扱う ポイント④
整理‧評価 ~ 『ホットペッパービューティー』では ~
整理‧評価 ~ 『ホットペッパービューティー』では ~ コスト‧リターン (⼤‧中‧⼩)
ファクトチェック 発散 収束 決定
ファクトチェック 解決する課題が本当に課題なのかをチェックする • おそらく⼀般的に⾔われる課題が多くあるはず • 本当に⾃分たちのプロダクトでも⾔えることなのか?をチェック
ファクトチェック 定量で測れる場合は定量調査 • 静的解析ツール‧バグや障害チケットの数など • ⽐較対象やしきい値は、社内の他プロダクトと⽐較 or ⼀般的なしきい値を調べる 定量で測れない場合は定性調査 •
ソースコードをいくつか調査して証拠を集める • 過去の障害履歴を遡ってKPI毀損数を計算 • etc
ファクトチェック 定量で測れる場合は定量調査 • 静的解析ツール‧バグや障害チケットの数など • ⽐較対象やしきい値は、社内の他プロダクトと⽐較 or ⼀般的なしきい値を調べる 定量で測れない場合は定性調査 •
ソースコードをいくつか調査して証拠を集める • 過去の障害履歴を遡ってKPI毀損数を計算 • etc 本当に課題か⾒極めて、改善に取り組む意義を確⽴する ポイント⑤
ファクトチェック(補⾜) ファクトチェックするには遅くないか?という意⾒に対して、、、 これらの理由で、評価をしてスコープを絞った上で、チェックするようにした • 定量で出来るファクトチェックばかりではない • 定性調査をするのはかなり労⼒が必要 • ある程度現場感を知っていたので、⼤きく外れることはない 効果が薄いものはあったが、
課題ではないものはなかった
ファクトチェック ~ 『ホットペッパービューティー』では ~
KPIツリーとの紐付け 発散 収束 決定
KPIツリーとの紐付け KPIツリー内の「改善の分類」の指標となるノードに、実績値を記載していく • KPIツリーがない場合は「改善の分類」の指標となるノードとパスだけでも作成する • 実績値が出せない場合は、⼀旦感覚値で仮置きして考えてもいい ◦ 重要なのは改善の分類の優先度のため、⼤きく変わらなければ仮置きでもOK 最も重要なKPIに⼤きな影響を与える順で、優先度を付けていく
KPIツリーとの紐付け
KPIツリーとの紐付け 1000件/年 20件/年 200件/年 30件/年 …
KPIツリーとの紐付け 1000件/年 20件/年 200件/年 30件/年 … 1件あたり 50件/年
KPIツリーとの紐付け 1000件/年 20件/年 200件/年 30件/年 … 1件あたり 0.1件/年 1件あたり 50件/年
KPIツリーとの紐付け ~ 『ホットペッパービューティー』では ~
優先度確定 発散 収束 決定
優先度確定 ~ 『ホットペッパービューティー』では ~ 優先度 改善の分類 1 コーディングコスト削減 2 コード認知コスト削減
3 バグ/障害の流出防⽌ 4 障害復旧時間(MTTR)短縮 5 バグ/障害の混⼊防⽌
しかし、、、 改善の分類に紐づく施策に技術的な依存関係がある場合、 優先度順には実⾏できない可能性がある • 改善の分類の優先度と、 それに紐づく施策の技術的な依存関係を紐解き、 実際の計画に落とし込む
その後 ~ 『ホットペッパービューティー』では ~
その後 ~ 『ホットペッパービューティー』では ~ 各施策を⾒積もれば、完了⽬処が⾒えて、施策順序も決まる ポイント⑥
結果 改善の分類とそれに紐づく施策が整理されて、⼯数や効果と優先度が明確になり • 適切なメンバーをアサインできるようになった • 限られた⼯数の中で効果を最⼤化できるようになった • 理想に向かう計画を⽴てられるようになった
結果 改善の分類とそれに紐づく施策が整理されて、⼯数や効果と優先度が明確になり • 適切なメンバーをアサインできるようになった • 限られた⼯数の中で効果を最⼤化できるようになった • 理想に向かう計画を⽴てられるようになった なによりも、優先度の根拠が明確にあるため、 ⾃分たちが⾃信を持って進められる状態になった
結果のその先 以前の気合でどうにかする運⽤だと課題も⽬的もはっきりせず、 技術的な解決そのものが⽬的化してしまっていた Before
結果のその先 以前の気合でどうにかする運⽤だと課題も⽬的もはっきりせず、 技術的な解決そのものが⽬的化してしまっていた Before 効果を語れるようになったことで、 事業や企画組織から理解を得やすく、⼯数獲得しやすくなった After
結果のその先 以前の気合でどうにかする運⽤だと課題も⽬的もはっきりせず、 技術的な解決そのものが⽬的化してしまっていた Before 効果を語れるようになったことで、 事業や企画組織から理解を得やすく、⼯数獲得しやすくなった After 膨⼤な⼯数がかかり、効果を語るのが難しい案件でも、 適切に効果を語ることができ、案件化することができた そのため
結果のその先 具体的には、iOSアプリにて SwiftUI導⼊を案件化できた (案件化 = KPIに寄与する事業施策として対応をするもの) • UIライブラリの置き換えなので⼀⾒、KPIに直接紐づかないように⾒える • しかし今回の整理のおかげで、SwiftUIを導⼊して開発コストを下げることで開発⽣
産性に寄与し、最終的にはKPIである予約数に影響があることを伝えられた • つまり、優先度と効果を適切に語れたことで案件化することができた
まとめ 発散 収束 決定 +技術的な依存関係の紐解き
https://www.recruit.co.jp/special/techconference2025 リクルート テックカンファレンス リクルートの開発事例・ナレッジを共有する 技術カンファレンス
WE ARE HIRING !
THANK YOU FOR WATCHING !