LESSON 40分

ストーリー

佐藤CTO
“技術負債があるから遅れます”だけでは、経営陣は動かない。数字で語れ

佐藤CTOは厳しい表情でした。

佐藤CTO
“毎スプリントで計40時間が負債の利子として消費されています。これは年間2,600万円に相当します。一方、返済コストは500万円です”。こう言えれば、投資判断として理解してもらえる
あなた
でもどうやって正確に測るんですか?
佐藤CTO
完全に正確である必要はない。桁が合っていれば十分だ。いくつかの手法を組み合わせて推計する方法を教えよう

定量化の4つのアプローチ

アプローチ1: コードメトリクスによる定量化

静的解析ツールが提供するメトリクスを活用します。

メトリクスツール負債との関連
技術負債比率(Technical Debt Ratio)SonarQube修正コスト / 開発コスト × 100%
サイクロマチック複雑度SonarQube, ESLint高複雑度 = テスト困難 = 負債
コード重複率SonarQube, jscpd重複 = 変更時の追加コスト
依存関係の深さMadge, deptree深い依存 = 変更の影響範囲大
# SonarQube メトリクスの読み方
sonarqube_metrics:
  technical_debt_ratio:
    A: "< 5%"    # 優秀
    B: "5-10%"   # 許容範囲
    C: "10-20%"  # 要注意
    D: "20-50%"  # 深刻
    E: "> 50%"   # 危険

  example:
    project: "PayFlow Backend"
    total_dev_effort: "2,400人時(約300人日)"
    remediation_cost: "360人時(約45人日)"
    debt_ratio: "15% (Rating: C)"
    interpretation: "開発コストの15%に相当する負債が蓄積"

アプローチ2: DORA メトリクスへの影響分析

技術負債が開発パフォーマンスに与える影響をDORAメトリクスで測定します。

DORA メトリクス負債の影響測定方法
デプロイ頻度負債が多いと頻度が下がるデプロイ回数/週の推移
リードタイム負債が多いと延びるコミットからデプロイまでの時間
変更失敗率負債が多いと上がるデプロイ後のロールバック率
復旧時間(MTTR)負債が多いと長くなる障害検知から復旧までの時間
graph TD
    subgraph Chart["デプロイ頻度の推移と負債の関係"]
        direction LR
        M1["1月
6回/週"] --> M2["2月
8回/週"] M2 --> M3["3月
10回/週"] M3 --> M4["4月
12回/週"] M4 --> M5["5月
10回/週"] M5 --> M6["6月
8回/週"] M6 --> M7["7月
6回/週"] M7 --> M8["8月
4回/週"] M8 --> M9["9月
2回/週
← 負債の蓄積"] end style M1 fill:#d1fae5,stroke:#059669,color:#065f46 style M2 fill:#d1fae5,stroke:#059669,color:#065f46 style M3 fill:#d1fae5,stroke:#059669,color:#065f46 style M4 fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#1e40af style M5 fill:#fef3c7,stroke:#d97706,stroke-width:2px,color:#92400e style M6 fill:#fef3c7,stroke:#d97706,stroke-width:2px,color:#92400e style M7 fill:#fef3c7,stroke:#d97706,stroke-width:2px,color:#92400e style M8 fill:#fee2e2,stroke:#dc2626,color:#991b1b style M9 fill:#fee2e2,stroke:#dc2626,color:#991b1b

アプローチ3: 開発者サーベイ

定量データだけでは捉えられない負債の影響を開発者に聞きます。

## 技術負債サーベイ(四半期実施)

### Q1. 先月、技術負債が原因で余分にかかった時間は?
- [ ] 0-5時間
- [ ] 5-10時間
- [ ] 10-20時間
- [ ] 20時間以上

### Q2. 最も影響の大きい技術負債を3つ挙げてください
1. [自由記述]
2. [自由記述]
3. [自由記述]

### Q3. 技術負債が原因で避けている作業はありますか?
[自由記述]

### Q4. 現在のコードベースの品質を10段階で評価してください
[1-10のスケール]

### Q5. 6ヶ月前と比べて、負債は増えていますか?減っていますか?
- [ ] 大幅に増加
- [ ] やや増加
- [ ] 変化なし
- [ ] やや減少
- [ ] 大幅に減少

アプローチ4: SQALE メソッド

SQALE(Software Quality Assessment based on Lifecycle Expectations)は、品質特性ごとに修正コストを見積もる体系的な手法です。

sqale_analysis:
  characteristics:
    - name: "テスタビリティ"
      issues:
        - "テストカバレッジ不足(対象: 150ファイル)"
        - "テスト不可能な設計(依存注入なし: 30クラス)"
      remediation_cost: "120人時"

    - name: "変更容易性"
      issues:
        - "循環依存(12箇所)"
        - "God Class(5クラス)"
      remediation_cost: "80人時"

    - name: "信頼性"
      issues:
        - "例外処理の不備(45箇所)"
        - "リソースリーク(8箇所)"
      remediation_cost: "40人時"

    - name: "セキュリティ"
      issues:
        - "ハードコードされた認証情報(3箇所)"
        - "SQLインジェクション可能性(2箇所)"
      remediation_cost: "16人時"

  total_remediation_cost: "256人時(約32人日)"
  annual_interest: "月20人時 × 12 = 240人時/年"
  roi_of_remediation: "256人時の投資で年240人時を節約"

負債の経済的インパクト計算

利子コストの算出

年間利子コスト = 負債起因の追加工数/年 × エンジニア時間単価

例:
  月間追加工数: 80人時(開発者サーベイより)
  年間追加工数: 80 × 12 = 960人時
  エンジニア時間単価: 5,000円
  年間利子コスト: 960 × 5,000 = 480万円

返済の ROI

返済ROI = (年間利子コスト × 想定削減率) / 返済コスト

例:
  返済コスト: 256人時 × 5,000円 = 128万円
  年間利子削減: 480万円 × 60% = 288万円
  ROI = 288万円 / 128万円 = 2.25x(1年で投資回収、以降は純利益)
経営向けプレゼン用のサマリー
# 技術負債レポート - 2026年Q1

## エグゼクティブサマリー
- 現在の技術負債: 約256人日(SonarQube + 開発者サーベイより推計)
- 年間利子コスト: 約480万円(開発速度の低下として顕在化)
- 推奨返済投資: 128万円(Q2に集中投資)
- 期待効果: 年間288万円のコスト削減(ROI 2.25x)

## 放置した場合のリスク
- デプロイ頻度がさらに30%低下(現在週4回→週2.8回)
- 新機能リードタイムが2倍に(現在3日→6日)
- セキュリティインシデントリスクの増大

ダッシュボードの構築

技術負債の状況を常時監視するダッシュボードを構築します。

dashboard_panels:
  - panel: "技術負債サマリー"
    metrics:
      - "総負債量(人日)"
      - "月次の負債増減"
      - "負債比率(Debt Ratio)"

  - panel: "DORA メトリクス"
    metrics:
      - "デプロイ頻度(週次推移)"
      - "リードタイム(中央値)"
      - "変更失敗率"

  - panel: "ホットスポット"
    metrics:
      - "負債スコア TOP 10 モジュール"
      - "変更頻度 × 負債スコア マトリクス"

  - panel: "トレンド"
    metrics:
      - "負債量の6ヶ月トレンド"
      - "四半期サーベイスコア推移"

まとめ

ポイント内容
コードメトリクスSonarQube等で技術負債比率を定量化
DORAへの影響デプロイ頻度、リードタイム等で負債の影響を可視化
開発者サーベイ定量データでは捉えられない体感を数値化
経済的インパクト利子コストとROIで経営判断に変換

チェックリスト

  • 4つの定量化アプローチを理解した
  • 利子コストの算出方法を把握した
  • 返済のROI計算ができるようになった
  • ダッシュボードに必要なメトリクスを理解した

次のステップへ

次は「リファクタリング戦略」を学びます。定量化した負債に対して、どのように戦略的に返済していくかのアプローチを見ていきましょう。


推定読了時間: 40分