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
13
人材領域のレガシーシステムにおける 負債への向き合い方
2025/2/20に開催したRecruit Tech Conference 2025の森廣の資料です
Recruit
PRO
March 03, 2025
Tweet
Share
More Decks by Recruit
See All by Recruit
大規模プロダクトにおける フロントエンドモダナイズの取り組み紹介
recruitengineers
PRO
4
41
技術的ミスと深堀り
recruitengineers
PRO
3
40
『ホットペッパーグルメ』における マルチプラットフォーム化の歩み
recruitengineers
PRO
2
23
『じゃらんnet』アプリ 改善活動の軌跡
recruitengineers
PRO
2
19
『スタディサプリ for SCHOOL』における Flutter導入とその成果
recruitengineers
PRO
2
16
よりよいビジネスの「実現」のために エンジニアリングを発揮する
recruitengineers
PRO
3
56
イテレーティブな開発で 不確実性を乗り越える
recruitengineers
PRO
3
15
株式会社リクルート 社内ISUCONの裏側
recruitengineers
PRO
1
25
エンジニア主導の企画立案を可能にする組織とは?
recruitengineers
PRO
1
250
Other Decks in Technology
See All in Technology
DeepSeekとは?何がいいの? - Databricksと学ぶDeepSeek! 〜これからのLLMに備えよ!〜
taka_aki
1
140
LINEギフトにおけるバックエンド開発
lycorptech_jp
PRO
0
350
LINE NEWSにおけるバックエンド開発
lycorptech_jp
PRO
0
310
役員・マネージャー・著者・エンジニアそれぞれの立場から見たAWS認定資格
nrinetcom
PRO
4
6.4k
AIエージェント入門
minorun365
PRO
32
19k
Cracking the Coding Interview 6th Edition
gdplabs
14
28k
エンジニアリング価値を黒字化する バリューベース戦略を用いた 技術戦略策定の道のり
kzkmaeda
7
3k
[OpsJAWS Meetup33 AIOps] Amazon Bedrockガードレールで守る安全なAI運用
akiratameto
1
110
AWSではじめる Web APIテスト実践ガイド / A practical guide to testing Web APIs on AWS
yokawasa
8
740
手を動かしてレベルアップしよう!
maruto
0
240
Apache Iceberg Case Study in LY Corporation
lycorptech_jp
PRO
0
340
生成AI “再”入門 2025年春@WIRED TUESDAY EDITOR'S LOUNGE
kajikent
0
140
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
44
14k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The World Runs on Bad Software
bkeepers
PRO
67
11k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
52k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
How to train your dragon (web standard)
notwaldorf
91
5.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
Automating Front-end Workflow
addyosmani
1368
200k
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
まとめ • 机上ではなく実体からのアプローチ ◦ まずはビジネス的負債の解消が先決 ◦ 時間はかかるので仕込みが大事 • 長期的な目線での下準備 ◦
知らないコードを見る機会となり知見を増やせる ◦ ビジネス・モデル変化タイミングで迅速に追従できるように疎結合化
ご清聴ありがとうございました