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
3.4k
4
Share
明日からできる!技術的負債の返済を加速するための実践ガイド~『ホットペッパービューティー』の事例をもとに~
2025/02/13に、Developers Summit(デブサミ)で発表した、浅井の資料です。
Recruit
PRO
February 16, 2025
More Decks by Recruit
See All by Recruit
ストリーム処理基盤のFlink移行検証と適材適所の実践
recruitengineers
PRO
2
37
AI 時代の Platform Engineering
recruitengineers
PRO
2
350
巨大プラットフォームを進化させる「第3のROI」
recruitengineers
PRO
2
3.1k
データ戦略を加速させる プラットフォーム エンジニアリングと進化的アーキテクチャ
recruitengineers
PRO
2
81
まなび領域における生成AI活用事例
recruitengineers
PRO
2
280
AI時代にエンジニアはどう成長すれば良いのか?
recruitengineers
PRO
1
510
AIを用いたカスタマーサポートの業務プロセス・組織変革の実現
recruitengineers
PRO
1
230
問い合わせ自動化の技術的挑戦
recruitengineers
PRO
2
340
「Air ビジネスツールズ」のクライアントサポートにおける生成 AI 活用
recruitengineers
PRO
0
170
Other Decks in Technology
See All in Technology
新規ゲーム開発におけるAI駆動開発のリアル
202409e2
0
1.8k
Agentic ERPをどう設計するか ー 受発注エージェントを動かす、現場の知見と設計思想ー
recerqainc
1
780
Platform Engineering as a Product: Criteria for Improvement and Multi-Tenant Design
kumorn5s
0
480
トークン数だけでは測れない — Claude Code 組織展開の効果検証から学んだこと
makikub
0
110
電子辞書Brainをネットに繋げてみた(自力編)
raspython3
0
420
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.8k
AI フレンドリーなエラー監視を TypeScript で実現する
shinyaigeek
2
240
GoとSIMDとWasmの今。
askua
3
470
React、まだ楽しくて草
uhyo
7
3.9k
Gradle×GitHub_ActionsでCI時間を約50%短縮 ジョブ分割の設計と落とし穴 / Cutting CI Time by ~50% with Gradle and GitHub Actions: Job-Splitting Design and Pitfalls
takatty
0
610
Spring Boot における AOT Cache 活用テクニックと 起動時間改善事例
ntt_dsol_java
0
200
AI駆動開発でなんでもハンズオン環境をつくってみた
yoshimi0227
0
200
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
0
8.3k
Optimizing for Happiness
mojombo
378
71k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
120
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Building Adaptive Systems
keathley
44
3k
New Earth Scene 8
popppiees
3
2.3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.9k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
230
The browser strikes back
jonoalderson
0
1.1k
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 !