ビジネス/PM — 技術的負債の費用対効果 × 優先順位付き提案書

2026-05-14 (Day 31) 木曜 D: ビジネス/PM ★★★☆☆ 技術的負債の定量化 / ROI計算 CTOへの提案書作成

概要

💰

技術的負債の定量化

「コードが汚い」ではなく「年間1,286万円を消費している」と言えると経営層が予算承認しやすい。

📊

ROI 計算

施策ごとの投資額と年間削減効果でROI・ペイバック期間を算出し、優先順位を客観化する。

速度向上の価値換算

機能開発速度20%向上 = 年間開発コスト × 20% = 384万円という具体的な価値として提示できる。

🎯

C → A → B の順序

最小投資・最大効果の施策から着手。モニタリング基盤が整うと後続施策の効果測定も容易になる。

問題

CTOから「Argo Workflowsで動いている販促バッチ群の技術的負債を返済すべきか判断したい。費用対効果で整理してほしい」と依頼を受けた。

現状の技術的負債スナップショット

負債項目詳細現状の影響
①レガシーバッチPythonスクリプト5本が型ヒントなし・テストなし・マジックナンバー多数月平均2件のバグ対応(各3人日)、新機能追加時リードタイム+2週間
②データパイプライン二重管理BigQueryへの書き込みがdbt経由と直書きSQLが混在(約30テーブル)データ整合性インシデント: 月1回(調査・修正: 5人日)
③モニタリング欠如DataDog未導入・Argo Workflowsのアラートなし障害検知が遅延(平均2時間の気づきロス)、月1回の機会損失発生

想定リファクタリング施策

施策内容工数
A: バッチリファクタリング型ヒント・pytest追加・マジックナンバー定数化12人日
B: dbt統一化直書きSQL → dbtモデル移行(30テーブル)20人日
C: DataDog + OTelセットアップArgo Workflows + Cloud Runへのトレーシング導入8人日

前提条件

  • エンジニア人件費単価: 80万円/月(160時間、1人日 = 5,000円)
  • 障害1回による機会損失: 売上100万円(ECサイトの1時間停止に相当)
  • 機能開発速度向上の価値 = チーム2名の年間開発コスト × 向上率
  • 施策Aにより機能開発速度が20%向上すると試算
期待する回答形式: 数値計算 + 表 + 文章(優先順位の根拠は定量的に)

ヒント(段階的開示)

ヒント1 — 方向性
技術的負債の「現状コスト」は、毎月発生している無駄な工数(バグ対応・インシデント対応)を人件費換算することで定量化できる。「年間コスト = 月次コスト × 12」の基本式からスタートする。
ヒント2 — 施策Aの速度向上価値計算
施策Aの「機能開発速度向上の価値」は、現在チームが機能開発に使っている年間工数コストに20%をかけた値として試算する。
ROI = (年間削減効果 ÷ 初期投資額) × 100
ペイバック期間(月) = 投資額 ÷ 月間削減効果
ヒント3 — 計算の骨格
【現状コスト】
①バッチ負債:
  バグ対応 = 月2件 × 3人日 × 5,000円 = 30,000円/月 → 年間360,000円
  機能開発ロス = 年4回 × 10人日 × 5,000円 = 200,000円/年

②データパイプライン負債:
  インシデント対応 = 月1回 × 5人日 × 5,000円 = 25,000円/月 → 年間300,000円

③モニタリング欠如:
  障害遅延損失 = 月1回 × 100万円 = 12,000,000円/年

【施策A 機能開発速度向上の価値】
チーム2名の年間開発コスト = 2名 × 80万円 × 12ヶ月 = 1,920万円
速度向上価値 = 1,920万円 × 20% = 384万円

模範解答 — 1. 現状コストの定量化(年間)

① バッチリファクタリング負債

バグ対応コスト: 月2件 × 3人日 × 5,000円 = 30,000円/月 → 年間 360,000円
機能開発ロス: 四半期1回の大型機能 × 年4回 × 10人日 × 5,000円 = 200,000円/年
① 合計年間コスト = 560,000円

② データパイプライン二重管理負債

インシデント対応: 月1回 × 5人日 × 5,000円 = 25,000円/月 → 年間 300,000円
② 合計年間コスト = 300,000円

③ モニタリング欠如負債

障害遅延による機会損失: 月1回 × 100万円 = 1,000,000円/月 → 年間 12,000,000円
③ 合計年間コスト = 12,000,000円
全負債の年間コスト合計 = 560,000 + 300,000 + 12,000,000 = 約1,286万円

模範解答 — 2. 施策ごとの投資額

施策工数開発コスト(人件費)
A: バッチリファクタリング12人日12 × 5,000 = 60,000円
B: dbt統一化20人日20 × 5,000 = 100,000円
C: DataDog + OTel8人日8 × 5,000 = 40,000円

ROI 可視化 — 施策別削減効果 vs 投資額

年間削減効果 vs 投資コスト(ROI比較) 0 300万 450万 600万 600万 4万 施策 C ROI: 15,000% DataDog + OTel 440万 6万 施策 A ROI: 7,333% バッチリファクタリング 30万 10万 施策 B ROI: 300% dbt 統一化 年間削減効果 投資コスト

模範解答 — 3〜5. ROI・優先順位・実施順序

3. 施策ごとの年間削減効果

施策計算式年間削減効果
A: バッチリファクタリング バグ対応360,000 + 機能ロス200,000 + 速度向上価値19,200,000×20% 4,400,000円
B: dbt統一化 インシデント対応コストのみ削減 300,000円
C: DataDog + OTel 機会損失12,000,000 × 50%削減(保守的試算) 6,000,000円

4. ROIと優先順位

施策投資額年間削減効果ROIペイバック期間優先度
C: DataDog + OTel 40,000円 6,000,000円 15,000% 0.08ヶ月(約2日) 1位
A: バッチリファクタリング 60,000円 4,400,000円 7,333% 0.16ヶ月(約5日) 2位
B: dbt統一化 100,000円 300,000円 300% 4.0ヶ月 3位

5. 推奨実施順序: C → A → B

まず施策C(DataDog + OTel)を最優先で実施する。投資額最小(4万円)・年間削減効果最大(600万円)で即日回収できる上、モニタリング基盤が整うことで施策A・Bのリファクタリング後の動作確認も容易になる。次に施策A(バッチリファクタリング)で機能開発速度を20%向上させ、中長期のチーム生産性を底上げしてから、施策B(dbt統一化)の工数を吸収する流れが最もROIが高い。

ポイント解説

1 技術的負債は「毎月発生するコスト」として可視化する
「コードが汚い」ではなく「年間1,286万円を消費している」と言えると、経営層が予算承認しやすくなる。特にモニタリング欠如による機会損失は金額が大きく、放置コストが投資コストを大幅に上回る典型例。
2 ROI計算で施策優先順位を客観化する
感覚や政治で優先度を決めるのではなく、ROI・ペイバック期間の数字で優先順位を示すことでPM・CTOへの説明が格段に楽になる。施策CとBはROIが約50倍違うことが定量的に示せる。
3 「速度向上の価値」を人件費換算する
非機能改善(リファクタリング)の価値をスプリント速度向上として測定し、年間開発コスト × 向上率で換算するアプローチは実務でよく使われる。この試算なしに「品質のため」だけでは経営承認が取りづらい。

実務への応用

  • MOpsチームでは、バッチ処理の技術的負債が販促施策の実行速度に直接影響する。メール配信ロジックの変更に2週間かかる状態では、マーケティングチームのキャンペーン対応が遅延し、売上機会を逃す。
  • DataDog + OTel を Argo Workflows と Cloud Run に導入すると、DAG単位・ステップ単位のレイテンシをトレースでき、ボトルネックの特定が容易になる。
  • BigQuery のクエリ実行時間も DataDog のカスタムメトリクスとして送出し、コストとパフォーマンスの相関を一画面で確認できる状態にしておくと、チームの意思決定速度が上がる。

今日のまとめ

技術的負債の返済可否は「清潔さ」ではなく「年間コストと投資対効果の数字」で判断する。ROIとペイバック期間を並べると、どこから着手すべきかが一目瞭然になる。

シニアエンジニアに求められるのは「技術的に正しいこと」だけでなく、「コスト・効果・タイミング」を定量化してステークホルダーを動かせる提案力である。

自己評価

自分の回答

気づき・メモ