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
March 03, 2025
Technology
2
180
人材領域のレガシーシステムにおける 負債への向き合い方
2025/2/20に開催したRecruit Tech Conference 2025の森廣の資料です
Recruit
PRO
March 03, 2025
Tweet
Share
More Decks by Recruit
See All by Recruit
問題解決に役立つ数理工学
recruitengineers
PRO
11
2.7k
Curiosity & Persistence
recruitengineers
PRO
2
190
結果的にこうなった。から見える メカニズムのようなもの。
recruitengineers
PRO
1
400
成長実感と伸び悩みからふりかえる キャリアグラフ
recruitengineers
PRO
1
180
リクルートの オンプレ環境の未来を語る
recruitengineers
PRO
3
330
LLMのプロダクト装着と独自モデル開発
recruitengineers
PRO
1
330
新規検索基盤でマッチング精度向上に挑む! ~『ホットペッパーグルメ』の開発事例 ビジネス編
recruitengineers
PRO
3
190
新規検索基盤でマッチング精度向上に挑む! ~『ホットペッパーグルメ』の開発事例 技術編
recruitengineers
PRO
2
240
大規模プロダクトにおける フロントエンドモダナイズの取り組み紹介
recruitengineers
PRO
5
180
Other Decks in Technology
See All in Technology
In Praise of "Normal" Engineers (LDX3)
charity
2
960
Copilot Agentを普段使いしてわかった、バックエンド開発で使えるTips
ykagano
1
1.2k
Model Mondays S2E01: Advanced Reasoning
nitya
0
360
Whats_new_in_Podman_and_CRI-O_2025-06
orimanabu
3
180
TerraformをSaaSで使うとAzureの運用がこんなに楽ちん!HCP Terraformって何?
mnakabayashi
0
130
Snowflake Intelligenceで実現できるノーコードAI活用
takumimukaiyama
1
240
Agentic DevOps時代の生存戦略
kkamegawa
0
370
Amplifyとゼロからはじめた AIコーディング 成果と展望
mkdev10
1
260
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
17k
ObsidianをMCP連携させてみる
ttnyt8701
2
120
エンジニア採用から始まる技術広報と組織づくり/202506lt
nishiuma
8
1.7k
マルチテナント+マルチプロダクト SaaS への AI Agent の組み込み方
kworkdev
PRO
2
350
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
7
480
RailsConf 2023
tenderlove
30
1.1k
Agile that works and the tools we love
rasmusluckow
329
21k
The Invisible Side of Design
smashingmag
299
51k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Statistics for Hackers
jakevdp
799
220k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
4 Signs Your Business is Dying
shpigford
184
22k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
A better future with KSS
kneath
239
17k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Transcript
人材領域のレガシーシステムにおける 負債への向き合い方 RECRUIT TECH CONFERENCE 2025 「技術的負債」の返済プロセス 森廣 隆行 株式会社リクルート プロダクトディベロップメント室
シニアプロフェッショナル
Agenda 1. 自己紹介 2. 本日伝えたいこと 3. 担当プロダクトについて 4. システム状況 5.
一般的アプローチによる考察 6. 今回のアプローチ 7. まとめ
森廣 隆行 引きこもり・ゲーム 経歴 / Career 2015年10月にリクルートテクノロジーズにキャリア採用入社。 リクルートジョブズに出向し、『フロム・エー ナビ』の開発 リーダーを担う。
その後、『タウンワーク』のテックリードを経験しリクルート ジョブズ全体のテックリードとして活躍。 2020年4月にリクルートのシニアアーキテクトとして任命され、 現在人材領域全体のアーキテクトとして活躍中。 趣味 / Hobbies プロダクトディベロップメント室 HR領域プロダクトディベロップメントユニット Application Solution部
本日伝えたいこと 机上ではなく実態からのアプローチ
担当プロダクトについて リクルート マッチングプラットフォーム クライアントとユーザーを結びつける 対価としてクライアントからフィーを受領 ユーザー クライアント
担当プロダクトについて • システム俯瞰図 ◦ 一部抜粋(中途・アルバイト 領域のみ)
担当プロダクトについて • システム俯瞰図 ◦ システム乱立 ◦ システム間連携が多く複雑 入稿システム タウンワーク フロム・エー
ナビ 応募管理 システム 入稿システム
システム状況 引用:https://www.ipa.go.jp/disc/committee/begoj90000002xuk-att/legacy-system-modernization-comittee-20240912-overview.pdf IPA資料から抜粋
システム状況 • 技術面の老朽化 ◦ 2014年以前に新規構築 ◦ JQuery+R2(Seasar2ベースの社内フレームワーク)
システム状況 • システムの肥大化・複雑化 ◦ 新規機能開発は行われるが除却する案件はほぼない ◦ 10年以上エンハンス開発を行うと塵積もで巨大に コード総量 時間 リリース
初期 開発 エンハ ンス リリース リリース リリース エンハ ンス エンハ ンス
システム状況 • ブラックボックス化 ◦ 当時の設計思想を把握できていない ▪ 各システム10年以上継続して開発を行なっているためメンバーが 当時の正確な設計思想を把握できている人がいない ◦ ドキュメントの継続整備断念
▪ 過渡期になると、ドキュメント作成や更新に十分な工数が割けず、 最新化されない
システム状況 こんな巨大かつ複雑に絡み合ったシステム群に対して あなたはどのような施策を実施しますか?
一般アプローチからの考察 引 用:https://www.ipa.go.jp/disc/committee/begoj9000000 2xuk-att/legacy-system-modernization-comittee-20240 912-overview.pdf IPA資料から抜粋 SaaS マイクロサービス化 リファクタリング
一般アプローチからの考察 売り上げをあげているシステムに対して大 改修や大きな機能変更はないし、複雑に絡 み合っているためマイクロサービス化する にしても限定的にしかできない IPA資料から抜粋
一般アプローチからの考察 IPA資料から抜粋 削除・リファクタ対象の正解を判断できる 過去経緯などの知識や自動テストコードで の担保、要件定義書などの確認資料がなく 実施することが厳しい
一般アプローチからの考察 机上での検討だと八方塞がり状態 心配、不安、自信がないことからくるリスクヘッジコストが巨大 なぜ?
今回のアプローチ じゃあ、いかにしてリスクを飲むか
今回のアプローチ リスク0にはできないが対象を減らしたり可視化することにより リスクを減らすことができるはず。
今回のアプローチ IPA資料から抜粋 知識や資料に依存しない形でこの部分を機 械的実施することができないか。 • 疎結合化 • 総量の削減
システムB システムA 今回のアプローチ • 疎結合化 ◦ レガシーシステムにあるある?? ◦ 業務ロジックを共通化した内部ライブラリが乱立 (Validation、禁止文字制御、文字カウント系など)
FW FW 外部 ライブラリ 外部 ライブラリ 業務共通ライブラリ 業務ロジック 業務ロジック
今回のアプローチ • 疎結合化 ◦ 構築当初:AB両方>Aのみ≒Bのみ>未利用 ◦ レガシー:未利用>Aのみ≒Bのみ>AB両方 業務ライブラリ システムA システムB
レガシーシステム 業務ライブラリ システムA システムB 未利用 Bのみ Aのみ A,B両方 A,B両方 Bのみ Aのみ 未利用 構築当初
システムB システムA 今回のアプローチ • 疎結合化 FW FW 外部 ライブラリ 外部
ライブラリ 業務共通ライブラリ 業務ロジック 業務ロジック システムB システムA FW FW 外部 ライブラリ 外部 ライブラリ 業務ロジック 業務ロジック Before 業務ライブラリ 業務ライブラリ After
今回のアプローチ • 総量の削減 ◦ 事業価値(動作保証)を下げずにコード総量を減らす 実働 コー ド … 実働
コー ド ??? 事業 価値 … 事業 価値 減少 維持
今回のアプローチ • 総量の削減 ◦ プロファイラーによる未使用コードの可視化 ▪ Jacoco,GoogleCloudProfiler, async-profiler etc ▪
クラス、メソッド、1行単位で利用可否を可視化 ◦ アクセスログから未使用導線画面の削除 ▪ 集客目的の静的ページなど 引用:EclEmma https://www.eclemma.org/jacoco/
今回のアプローチ • 規模の縮小 ◦ 毎月集計 20XX/04 20XX/05 20XX/06 : :
20XX/03 Method A B C D E F G H I J K L 未使用 使用 使用 未使用 論点有
今回のアプローチ • 規模の縮小 ◦ 価値がない(未使用)or価値が低いコード ◦ =ビジネス的負債 時間 実働 コー
ド 1Q 実働 コー ド 2Q 実働 コー ド 4Q … 価値が低 い 未使 用 未使 用 ビジ ネス 的負 債 実働 コー ド コード総量
今回のアプローチ • 技術者であれば、技術的負債に目が行きがち • ビジネス的負債は知識・資料なく時間だけで解決が可能 引用:事業価値と Engineering 2024年版 https://speakerdeck.com/recruitengineers/shi-ye-jia-zhi-to-engineering-2024nian-ban
まとめ • 机上ではなく実体からのアプローチ ◦ まずはビジネス的負債の解消が先決 ◦ 時間はかかるので仕込みが大事 • 長期的な目線での下準備 ◦
知らないコードを見る機会となり知見を増やせる ◦ ビジネス・モデル変化タイミングで迅速に追従できるように疎結合化
ご清聴ありがとうございました