LESSON 15分

ストーリー

あなた
最近、機能追加のたびにバグが増えている気がするんです
高橋アーキテクト
それは技術的負債が利子を生んでいるサインだ。借金と同じで、放置すると利子が膨らむ
あなた
全部リファクタリングしたいんですが、プロダクトマネージャーに”機能開発を止めるな”と言われて…
高橋アーキテクト
一気に返済しようとするのが間違いだ。テクニカルリードの腕は、負債を”見える化”して、計画的に返済する仕組みを作ることだ。ビジネスサイドが理解できる言葉で、負債のコストを示すんだ

技術的負債の分類

enum DebtType {
  DELIBERATE_PRUDENT = "意図的・慎重",   // 「今はこの設計で良い。後で直す」
  DELIBERATE_RECKLESS = "意図的・無謀",  // 「設計する時間がない」
  INADVERTENT_PRUDENT = "偶発的・慎重",  // 「より良い方法が分かった」
  INADVERTENT_RECKLESS = "偶発的・無謀", // 「レイヤリングって何?」
}

interface TechDebt {
  id: string;
  title: string;
  type: DebtType;
  area: string;
  severity: "critical" | "high" | "medium" | "low";
  interestRate: string;  // 放置した場合の追加コスト
  repaymentCost: string; // 修正にかかるコスト
  businessImpact: string;
}

// 負債台帳の例
const debtRegister: TechDebt[] = [
  {
    id: "TD-001",
    title: "認証モジュールの密結合",
    type: DebtType.INADVERTENT_PRUDENT,
    area: "backend/auth",
    severity: "high",
    interestRate: "新機能追加のたびに+2日の追加工数",
    repaymentCost: "2人×2週間",
    businessImpact: "機能リリース速度の低下",
  },
  {
    id: "TD-002",
    title: "テストのないレガシーコード",
    type: DebtType.DELIBERATE_RECKLESS,
    area: "backend/payment",
    severity: "critical",
    interestRate: "月に1-2件の本番障害リスク",
    repaymentCost: "1人×3週間",
    businessImpact: "障害による売上損失リスク",
  },
];

技術的負債の可視化

ビジネスサイドに伝わる形で可視化します。

## 技術的負債レポート(月次)

### サマリー
| 指標 | 先月 | 今月 | 傾向 |
|------|------|------|------|
| 負債総数 | 23件 | 21件 | 改善 |
| Critical | 3件 | 2件 | 改善 |
| 新規追加 | 2件 | 1件 | 改善 |
| 返済完了 | 4件 | 3件 | - |
| 推定影響(月あたり) | 45人日 | 38人日 | 改善 |

### ビジネスへの影響
- 技術的負債により、機能開発速度が推定30%低下
- 月間3件の障害のうち2件は負債に起因
- 新メンバーのオンボーディングが2週間余分にかかる

返済戦略

戦略説明適用場面
20%ルールスプリントの20%を負債返済に充てる継続的な返済
ボーイスカウトルール触ったコードを少しだけ良くする日常的な改善
負債スプリント定期的に負債返済専用スプリントを設ける大きな負債の返済
新機能と抱き合わせ関連する新機能開発時に一緒に直す自然な返済
// 返済計画の立て方
interface RepaymentPlan {
  strategy: "continuous" | "sprint" | "bundled";
  budget: string; // チームキャパシティの何%を割くか
  prioritization: "severity" | "business_impact" | "proximity";
  tracking: {
    metric: string;
    current: number;
    target: number;
    deadline: string;
  };
}

const plan: RepaymentPlan = {
  strategy: "continuous",
  budget: "20% of sprint capacity",
  prioritization: "business_impact",
  tracking: {
    metric: "機能追加の平均リードタイム(日)",
    current: 14,
    target: 7,
    deadline: "2025-Q3",
  },
};

まとめ

ポイント内容
負債の分類意図的/偶発的 × 慎重/無謀の4象限
可視化負債台帳と月次レポートでビジネスに伝わる形に
返済戦略20%ルール、ボーイスカウトルール等を組み合わせる
テクニカルリードの役割負債を「見える化」し、計画的に返済する仕組みを作る

チェックリスト

  • 技術的負債の4象限を説明できる
  • 負債台帳の作り方を理解した
  • 返済戦略の選択肢を把握した
  • ビジネスサイドへの伝え方を学んだ

次のステップへ

次は理解度チェックです。Step 1で学んだテクニカルリードの役割について確認しましょう。


推定読了時間: 15分