LESSON 30分

ストーリー

田中VPoE
技術基盤を刷新するなら、まず「何が問題なのか」を体系的に把握する必要がある。技術的負債という言葉は知っているな?
あなた
はい。コードの品質が悪い部分とか、リファクタリングが必要な箇所のことですよね
田中VPoE
それは氷山の一角だ。技術的負債は、コード、アーキテクチャ、インフラ、プロセス、人材・知識 — 5つの層にまたがる。コードの問題だけに目を向けていると、根本的な刷新はできない
あなた
5つの層ですか。もっと広い視点で捉える必要があるんですね
田中VPoE
そうだ。Month 1でCI/CDを学んだとき、パイプラインが部門ごとにバラバラだったのを覚えているか? Month 4でセキュリティを学んだとき、レガシーシステムの脆弱性が放置されていた。Month 7でデータ基盤を見たとき、データがサイロ化していた。それらすべてが「技術的負債」だ

技術的負債の5層モデル

全体像

技術的負債を体系的に捉えるためのフレームワークとして、5つの層を定義します。

┌─────────────────────────────────────┐
│     Layer 5: 知識・文化の負債        │  ドキュメント不足、属人化、学習文化の欠如
├─────────────────────────────────────┤
│     Layer 4: プロセスの負債          │  手動作業、非効率なワークフロー、承認プロセス
├─────────────────────────────────────┤
│     Layer 3: インフラの負債          │  レガシーサーバー、非標準構成、スケーラビリティ
├─────────────────────────────────────┤
│     Layer 2: アーキテクチャの負債     │  モノリス、密結合、技術選定の陳腐化
├─────────────────────────────────────┤
│     Layer 1: コードの負債            │  複雑度、テスト不足、コーディング規約の不統一
└─────────────────────────────────────┘

各層の詳細

Layer 1: コードの負債

分類具体例検出方法関連Month
複雑度循環的複雑度が高い関数、深いネスト静的解析ツール(SonarQube等)Month 1: CI/CD品質ゲート
テスト不足カバレッジ50%未満、E2EテストなしカバレッジレポートMonth 1: テスト自動化
規約不統一チームごとに異なるコーディングスタイルLinter/FormatterMonth 6: プラットフォーム標準
依存関係古いライブラリ、脆弱性のある依存Dependabot、SnykMonth 4: セキュリティ

Layer 2: アーキテクチャの負債

分類具体例検出方法関連Month
モノリス肥大化単一デプロイメント単位が巨大デプロイ頻度・リードタイムの計測Month 1: CI/CD
密結合サービス間の同期呼び出しが多数依存関係マップMonth 5: クラウドアーキテクチャ
データモデル老朽化正規化不足、スキーマ進化困難データ品質メトリクスMonth 7: データ基盤
API設計の不統一REST/GraphQL/gRPCの混在、命名規則不統一APIカタログMonth 6: プラットフォーム

Layer 3: インフラの負債

分類具体例検出方法関連Month
レガシー環境オンプレミス残存、EOLのOS/ミドルウェア資産台帳、脆弱性スキャンMonth 5: クラウド移行
IaC未対応手動構築されたサーバー、設定ドリフトIaCカバレッジ計測Month 5: IaC
監視不足メトリクス収集の欠如、アラート設定なしオブザーバビリティ成熟度評価Month 2: SRE
セキュリティ設定古いTLSバージョン、不要ポートの開放セキュリティスキャンMonth 4: セキュリティ

Layer 4: プロセスの負債

分類具体例検出方法関連Month
手動デプロイ本番デプロイにSSHとスクリプトが必要デプロイプロセス監査Month 1: CI/CD
インシデント対応ランブックなし、属人的な障害対応インシデントレビューMonth 2: SRE
データ管理データカタログなし、アクセス管理が属人的データガバナンス評価Month 7: データ基盤
セキュリティ運用脆弱性スキャンが不定期、パッチ適用が遅いセキュリティ監査Month 4: セキュリティ

Layer 5: 知識・文化の負債

分類具体例検出方法関連Month
ドキュメント不足アーキテクチャ決定記録(ADR)がないドキュメント棚卸しMonth 6: プラットフォーム
属人化特定の人しか理解していないシステムバスファクター分析Month 8: リーダーシップ
スキルギャップクラウドネイティブ技術への理解不足スキルマトリクスMonth 8: 人材育成
学習文化の欠如ポストモーテムをしない、ナレッジ共有がないチーム文化アセスメントMonth 2: SRE文化

技術的負債の定量化

負債スコアリングフレームワーク

各負債項目を定量的に評価するためのフレームワークです。

技術的負債スコア = 影響度 × 発生頻度 × 修正コスト係数

影響度(1-5):
  1: 限定的(1チームのみに影響)
  2: 中程度(複数チームに影響)
  3: 広範(部門全体に影響)
  4: 重大(組織全体に影響)
  5: 致命的(事業継続に影響)

発生頻度(1-5):
  1: まれ(年に数回)
  2: 低い(月に数回)
  3: 中程度(週に数回)
  4: 高い(日に数回)
  5: 常時(常に問題が発生)

修正コスト係数(1-3):
  1: 低コスト(1チーム/1スプリントで修正可能)
  2: 中コスト(複数チーム/1四半期で修正可能)
  3: 高コスト(組織横断/半年以上必要)

評価マトリクスの例

負債項目影響度頻度コストスコア優先度
CI/CDパイプラインの分断L445240S
セキュリティスキャン未統合L353230A
モノリスのデプロイ遅延L244348S
テストカバレッジ不足L135115B
データサイロ化L344348S
ドキュメント不足L535115B
インシデント対応の属人化L443224A
クラウドリソースの無秩序化L334224A

優先度の判定基準

優先度スコア範囲対応時期
S(最優先)36以上即座に計画に組み込み、Phase 1で対応
A(高)24-35Phase 1〜2で対応
B(中)12-23Phase 2〜3で対応
C(低)11以下継続的改善の中で対応

技術的負債の発生メカニズム

意図的 vs 非意図的

                  意図的(Deliberate)        非意図的(Inadvertent)
  ┌──────────────┬──────────────────────┬─────────────────────────┐
  │ 慎重          │ 「今はこの設計でいく。  │ 「後から振り返ると       │
  │ (Prudent)    │  後でリファクタリング   │  もっと良い方法が       │
  │              │  する」               │  あった」              │
  ├──────────────┼──────────────────────┼─────────────────────────┤
  │ 無謀          │ 「設計する時間がない。  │ 「レイヤードアーキテクチャ│
  │ (Reckless)   │  とにかく出荷する」    │  って何ですか?」       │
  └──────────────┴──────────────────────┴─────────────────────────┘

問題は「無謀で意図的」な負債だ。「時間がないから」で積み上げた負債は、必ず利子付きで返ってくる。逆に「慎重で意図的」な負債は、戦略的判断として許容できる。大事なのは、どの負債を意図的に抱えているかを組織が認識していることだ。 — 田中VPoE

負債の増殖パターン

初期の負債

  ├── コードが複雑 → テストが書きにくい → テスト不足
  │                                        │
  │                    ┌────────────────────┘
  │                    ↓
  ├── テスト不足 → デプロイが怖い → デプロイ頻度低下
  │                                    │
  │                  ┌─────────────────┘
  │                  ↓
  ├── デプロイ頻度低下 → バッチサイズ増大 → 障害リスク増大
  │                                          │
  │                        ┌─────────────────┘
  │                        ↓
  └── 障害リスク増大 → さらに慎重に → さらにデプロイ頻度低下
                                      (負の連鎖)

まとめ

ポイント内容
5層モデルコード、アーキテクチャ、インフラ、プロセス、知識・文化の5層で負債を捉える
定量化影響度 × 発生頻度 × 修正コスト係数でスコアリングし、優先度を判定する
発生メカニズム意図的/非意図的 × 慎重/無謀の4象限で負債の性質を分類する
負の連鎖技術的負債は放置すると増殖する。コード → テスト → デプロイ → 障害の負の連鎖
L4全体との接続各層の負債はMonth 1〜9の各領域と直接対応している

チェックリスト

  • 技術的負債の5層モデルを理解した
  • 負債スコアリングフレームワークを使って優先度を判定できる
  • 意図的/非意図的な負債の違いを理解した
  • 負債の増殖パターン(負の連鎖)を把握した

次のステップへ

次は「現行技術基盤のアセスメント」を学びます。5層モデルを使って、組織の技術基盤の現状を体系的に評価する手法を身につけましょう。


推定読了時間: 30分