ストーリー
田
田中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/Formatter | Month 6: プラットフォーム標準 |
| 依存関係 | 古いライブラリ、脆弱性のある依存 | Dependabot、Snyk | Month 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パイプラインの分断 | L4 | 4 | 5 | 2 | 40 | S |
| セキュリティスキャン未統合 | L3 | 5 | 3 | 2 | 30 | A |
| モノリスのデプロイ遅延 | L2 | 4 | 4 | 3 | 48 | S |
| テストカバレッジ不足 | L1 | 3 | 5 | 1 | 15 | B |
| データサイロ化 | L3 | 4 | 4 | 3 | 48 | S |
| ドキュメント不足 | L5 | 3 | 5 | 1 | 15 | B |
| インシデント対応の属人化 | L4 | 4 | 3 | 2 | 24 | A |
| クラウドリソースの無秩序化 | L3 | 3 | 4 | 2 | 24 | A |
優先度の判定基準
| 優先度 | スコア範囲 | 対応時期 |
|---|
| S(最優先) | 36以上 | 即座に計画に組み込み、Phase 1で対応 |
| A(高) | 24-35 | Phase 1〜2で対応 |
| B(中) | 12-23 | Phase 2〜3で対応 |
| C(低) | 11以下 | 継続的改善の中で対応 |
技術的負債の発生メカニズム
意図的 vs 非意図的
意図的(Deliberate) 非意図的(Inadvertent)
┌──────────────┬──────────────────────┬─────────────────────────┐
│ 慎重 │ 「今はこの設計でいく。 │ 「後から振り返ると │
│ (Prudent) │ 後でリファクタリング │ もっと良い方法が │
│ │ する」 │ あった」 │
├──────────────┼──────────────────────┼─────────────────────────┤
│ 無謀 │ 「設計する時間がない。 │ 「レイヤードアーキテクチャ│
│ (Reckless) │ とにかく出荷する」 │ って何ですか?」 │
└──────────────┴──────────────────────┴─────────────────────────┘
問題は「無謀で意図的」な負債だ。「時間がないから」で積み上げた負債は、必ず利子付きで返ってくる。逆に「慎重で意図的」な負債は、戦略的判断として許容できる。大事なのは、どの負債を意図的に抱えているかを組織が認識していることだ。 — 田中VPoE
負債の増殖パターン
初期の負債
│
├── コードが複雑 → テストが書きにくい → テスト不足
│ │
│ ┌────────────────────┘
│ ↓
├── テスト不足 → デプロイが怖い → デプロイ頻度低下
│ │
│ ┌─────────────────┘
│ ↓
├── デプロイ頻度低下 → バッチサイズ増大 → 障害リスク増大
│ │
│ ┌─────────────────┘
│ ↓
└── 障害リスク増大 → さらに慎重に → さらにデプロイ頻度低下
(負の連鎖)
まとめ
| ポイント | 内容 |
|---|
| 5層モデル | コード、アーキテクチャ、インフラ、プロセス、知識・文化の5層で負債を捉える |
| 定量化 | 影響度 × 発生頻度 × 修正コスト係数でスコアリングし、優先度を判定する |
| 発生メカニズム | 意図的/非意図的 × 慎重/無謀の4象限で負債の性質を分類する |
| 負の連鎖 | 技術的負債は放置すると増殖する。コード → テスト → デプロイ → 障害の負の連鎖 |
| L4全体との接続 | 各層の負債はMonth 1〜9の各領域と直接対応している |
チェックリスト
次のステップへ
次は「現行技術基盤のアセスメント」を学びます。5層モデルを使って、組織の技術基盤の現状を体系的に評価する手法を身につけましょう。
推定読了時間: 30分