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
94
人材領域のレガシーシステムにおける 負債への向き合い方
2025/2/20に開催したRecruit Tech Conference 2025の森廣の資料です
Recruit
PRO
March 03, 2025
Tweet
Share
More Decks by Recruit
See All by Recruit
問題解決に役立つ数理工学
recruitengineers
PRO
7
1.8k
Curiosity & Persistence
recruitengineers
PRO
2
120
結果的にこうなった。から見える メカニズムのようなもの。
recruitengineers
PRO
1
230
成長実感と伸び悩みからふりかえる キャリアグラフ
recruitengineers
PRO
1
99
リクルートの オンプレ環境の未来を語る
recruitengineers
PRO
3
94
LLMのプロダクト装着と独自モデル開発
recruitengineers
PRO
1
140
新規検索基盤でマッチング精度向上に挑む! ~『ホットペッパーグルメ』の開発事例 ビジネス編
recruitengineers
PRO
2
77
新規検索基盤でマッチング精度向上に挑む! ~『ホットペッパーグルメ』の開発事例 技術編
recruitengineers
PRO
0
90
大規模プロダクトにおける フロントエンドモダナイズの取り組み紹介
recruitengineers
PRO
5
97
Other Decks in Technology
See All in Technology
DevOps文化を育むQA 〜カルチャーバブルを生み出す戦略〜 / 20250317 Atsushi Funahashi
shift_evolve
1
110
Amazon Q Developer 他⽣成AIと⽐較してみた
takano0131
1
120
バックエンドエンジニアによるフロントエンドテスト拡充の具体的手法
kinosuke01
1
630
技術好きなエンジニアが _リーダーへの進化_ によって得たものと失ったもの / The Gains and Losses of a Tech-Enthusiast Engineer’s “Evolution into Leadership”
kaminashi
0
200
LINE Notify互換のボットを作った話
kenichirokimura
0
170
BCMathを高速化した一部始終をC言語でガチ目に解説する / BCMath performance improvement explanation
sakitakamachi
2
1.2k
コード品質向上で得られる効果と実践的取り組み
ham0215
2
200
Engineering Managementのグローバルトレンド #emoasis / Engineering Management Global Trend
kyonmm
PRO
6
980
30代エンジニアが考える、エンジニア生存戦略~~セキュリティを添えて~~
masakiokuda
4
2k
Road to SRE NEXT@仙台 IVRyの組織の形とSLO運用の現状
abnoumaru
0
380
20250328_OpenAI製DeepResearchは既に一種のAGIだと思う話
doradora09
PRO
0
150
Redefine_Possible
upsider_tech
0
240
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.5k
Being A Developer After 40
akosma
90
590k
How GitHub (no longer) Works
holman
314
140k
Embracing the Ebb and Flow
colly
85
4.6k
The World Runs on Bad Software
bkeepers
PRO
67
11k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
8
700
Building a Scalable Design System with Sketch
lauravandoore
462
33k
The Invisible Side of Design
smashingmag
299
50k
Code Review Best Practice
trishagee
67
18k
4 Signs Your Business is Dying
shpigford
183
22k
How to Ace a Technical Interview
jacobian
276
23k
Product Roadmaps are Hard
iamctodd
PRO
52
11k
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
まとめ • 机上ではなく実体からのアプローチ ◦ まずはビジネス的負債の解消が先決 ◦ 時間はかかるので仕込みが大事 • 長期的な目線での下準備 ◦
知らないコードを見る機会となり知見を増やせる ◦ ビジネス・モデル変化タイミングで迅速に追従できるように疎結合化
ご清聴ありがとうございました