テクニカルデット優先順位付け

英語名 Tech Debt Prioritization
読み方 テクニカルデット プライオリタイゼーション
難易度
所要時間 30分〜1時間
提唱者 Ward Cunningham (1992) メタファーの発展
テンプレート あり ↓
目次

ひとことで言うと
#

技術的負債を「元本(修正コスト)」と「利子(放置による継続コスト)」で定量評価し、利子率の高い負債から優先的に返済する意思決定フレームワーク。

押さえておきたい用語
#

押さえておきたい用語
Tech Debt(テクニカルデット)
短期的な速度を優先した結果、将来の変更コストを増加させる設計・実装上の妥協を指す。
Interest Rate(利子率)
負債を放置することで時間あたりに蓄積する追加コストを指す。利子率が高いほど早期返済の優先度が上がる。
Principal(元本)
負債を解消するために必要な修正工数そのものである。リファクタリングやリプレースにかかる直接コストを意味する。
Deliberate Debt(意図的負債)
トレードオフを理解した上で戦略的に受け入れた負債。期限や返済計画とセットで管理する手法。
Reckless Debt(無自覚な負債)
知識不足やプロセスの欠如から気づかずに作り込まれた負債のこと。発見が遅れるほど利子が膨らむ。

テクニカルデット優先順位付けの全体像
#

テクニカルデット:利子率×元本で返済優先度を判断する
利子率 高利子率 低元本 大 →最優先で返済利子率:高 / 元本:小〜中例:CI/CDパイプラインの不安定さ例:テスト実行時間の肥大化少ない投資で大きなリターン計画的に返済利子率:高 / 元本:大例:モノリスの分割例:レガシーDB移行段階的アプローチが必要ついでに返済利子率:低 / 元本:小例:命名規則の不統一例:古いログ形式関連コード修正時に一緒に対応放置を許容利子率:低 / 元本:大例:使用頻度の低い管理画面例:EOL前の安定稼働システムコスト対効果が見合わない
技術的負債の返済判断フロー
1
負債の棚卸し
全チームから技術的負債をリストアップ
2
利子率の評価
放置による週次・月次の追加コストを見積もる
3
元本の見積もり
修正に必要な工数とリスクを算出
返済計画策定
利子率÷元本の比率で優先順位を決定

こんな悩みに効く
#

  • 技術的負債が山積みでどこから手を付ければいいかわからない
  • 「リファクタリングしたい」という声は多いが、ビジネス側を説得できない
  • 負債返済に時間を使ったのに開発速度が改善しなかった

基本の使い方
#

チーム全体で技術的負債を棚卸しする
各チームメンバーが感じている「開発を遅くしているもの」を付箋やスプレッドシートで収集する。抽象的な不満(「コードが汚い」)ではなく、具体的な事象(「決済モジュールの変更に毎回3日かかる」)で記述する。
各負債の利子率を見積もる
「この負債を放置すると、月に何時間の追加作業が発生するか」を数値化する。CI実行時間、障害対応頻度、新機能追加の遅延日数など、計測可能な指標に落とし込む。
元本(修正コスト)を見積もる
修正に必要な人日と、修正中のリスク(サービス停止、他機能への影響)を評価する。大きな元本は段階的に分割できないか検討する。
利子率÷元本で優先順位を決定しロードマップに組み込む
比率の高い負債から四半期ロードマップに組み込む。開発キャパシティの 15〜20% を負債返済に割り当て、機能開発と並行して継続的に返済する。

具体例
#

例1:フィンテック企業がCI/CDの不安定さを最優先で解消する

エンジニア40名のフィンテック企業。技術的負債の棚卸しで 47件 がリストアップされた。最も利子率が高かったのは「CIパイプラインのFlaky Test」で、週に平均 12回 の偽陽性失敗が発生し、エンジニア全体で週 30時間 を再実行と原因調査に費やしていた。

元本は 2人×3週間(テスト基盤の整理とFlaky Testの修正)。利子率は月あたり 120時間、元本は 240時間 で、投資回収期間はわずか 2ヶ月

返済後、CIの成功率が 72% → 97% に改善。エンジニアのデプロイ頻度が週 3回 → 8回 に増加した。

例2:BtoB SaaSが決済モジュールのモノリスを段階分割する

エンジニア80名のBtoB SaaS。決済モジュールがモノリスの中心に位置し、あらゆる機能変更が決済コードに影響していた。月平均 4件 の決済関連インシデントが発生し、新しい決済手段の追加に毎回 8週間 かかる状態。

利子率は極めて高いが、元本も 6人×4ヶ月 と大きい。Strangler Figパターンで段階的に分離する計画を立て、四半期ごとに1サブモジュールずつ切り出した。

1年後、決済関連インシデントは月 0.5件 に減少。新決済手段の追加は 2週間 で完了するようになっている。

例3:教育系スタートアップが負債の可視化でビジネス側を説得する

エンジニア15名の教育系スタートアップ。CTOが「技術的負債の返済に20%の時間を使いたい」と提案するも、CEOから「目に見える成果が出ない作業に時間を割けない」と却下されていた。

利子率の定量化を導入。「テスト不足による本番障害の平均復旧時間 4.2時間 × 月 6回 =月 25.2時間」「レガシーAPIの手動変換作業 月40時間」など、負債の利子をエンジニア時給で金額換算し、月間 約180万円 の隠れコストとして提示した。

CEOが即座に承認し、四半期で上位5件の負債を返済。6ヶ月後にはリリースサイクルが 月1回 → 週2回 に短縮された。

やりがちな失敗パターン
#

  1. 利子率を無視して元本の小さい負債から返済する — 簡単な修正に手を付けがちだが、開発速度への貢献が少ない。利子率の高い負債を優先する
  2. すべての負債を返済しようとする — 利子率が低く元本が大きい負債は放置が合理的な場合もある。「返済しない」という判断も重要
  3. 負債の棚卸しが1回限り — 四半期ごとに再評価しないと、新たに発生した高利子率の負債を見逃す。棚卸しは継続的に行う
  4. 負債の定義が曖昧 — 「コードが汚い」は負債ではなく感想である。「何が遅くなるか」「何が壊れるか」を具体的に記述する

まとめ
#

テクニカルデット優先順位付けは、技術的負債を 「利子率(放置の継続コスト)」 と「元本(修正コスト)」で定量評価し、投資対効果の高い順に返済するフレームワーク。利子率が高く元本が小さい負債を最優先に、大きな負債は段階的に分割して計画的に返済する。定量化によりビジネス側との合意形成が容易になり、継続的な返済文化の醸成につながる。

テクニカルデット優先順位付けのフレームワークテンプレート

このフレームワークを実際に使ってみましょう。