Skip to content

DNET_TechnicalDebt

nishi_74322014 edited this page Sep 11, 2026 · 1 revision

技術的負債

概要

起源

  • 1992年ウォード・カニンガムの経験報告による。
  • 「設計上の負債(design debt)」とも言う。

内容

  • 技術的な「複雑さ」と「債務」を比較したもの。

  • 下記が引き起こす新しい比喩。

    • 行き当たりばったりなアーキテクチャ
    • 余裕のないソフトウェア開発
  • 「技術的」の意味は、

    • 「ドメイン理解と現時点のプログラムの(設計と実装の)乖離」であり、
    • ≒ エンジニアリングであり、テクノロジ的なと言う意味では無さそう。

詳細

現在の進捗のために、将来のキャパシティ(ソフトウェアの開発能力)を犠牲にする。

経験報告

  • 最初のコードを出荷することは、借金をしに行くのと同じ。
  • 進行中のプロジェクトは、将来借金を返すコストを増大させている。

小さな負債

小さな負債は、代価を得て即座に書き直す機会を得るまでの開発を加速する。

大きな負債

危険なのは、設計上の借金が返済されなかった場合。

  • 借金には利息がかかる。
  • 品質の良くないコードを使い続ける=無駄な利息を払い続けることになる。
  • しまいには、借金の残高が減らなくなり、その利息も支払えなくなる。

設計上の借金

アーキテクチャの手抜きによるコスト

設計

  • 不完全なオブジェクト指向
  • 複雑すぎて変更が難しいコード

実装

  • 欠陥のある実装
  • コンパイラの警告
  • 静的コード解析ツールの解析結果への対応
  • ソースコード中の積み残し項目の解決

その他(設計上の借金)

  • 文書化
  • 組織で共有されない知識
  • テストコードの記述

借金の返済方法

リファクタリング

ドメイン理解と現時点のプログラムの乖離の解消

リアーキテクティング

ドメイン駆動設計(DDD)(クリーン・アーキテクチャの該当節を参照)における
「より深い洞察へ向かうリファクタリング」は、
リファクタリングにとどまらず、リアーキテクティングも含まれる。

OSSでは

OSSでは、手元で変更したコードをプロジェクトに送らないことは技術的負債。

  • 手元で必要なメンテナンスをすることが「利息の支払い」にあたる。
  • プロジェクトに送れば、他のユーザがメンテナンスしなくて済む。

その他

エンジニアリング or テクノロジ

エンジニアリング

技術の該当節を参照。

未熟なエンジニアリング

テクノロジ

技術の該当節を参照。

  • 巨神兵的早すぎるテクノロジ
  • TPO / STP、的にハマってないテクノロジ

※ 合わないテクノロジを採用してしまう ≒ 未熟なエンジニアリングと言える。

QCD

高いQ(品質)のためには、

  • 一時的にCD(原価、納期)が犠牲になることがある。
  • しかし、長期的に見ると、キャパシティ ≒ CD(原価、納期)の向上に繋がる。

Q(品質)

低い品質は負債となり得る。

CD(原価、納期)

短期的な原価低減や短納期が負債の原因と成り得る。

マーケティング的観点

本質から離れてマーケティングにも使われていると思う。

アーキテクチャ宇宙飛行士との関連

アーキテクチャ宇宙飛行士

この中で言われている、

「何故か人々は"非常に"感銘を受ける。」

が、プロモーションに利用されている。

開発ツールの営業に使われる可能性がある。

技術的負債 高速開発」などのキーワードで検索してみよう。

参考

Qiita

正誤

  • 「概要」直下の見出し「期限」は、内容(1992年ウォード・カニンガムによる)から 「起源」の誤記と判断して修正した。
  • 「ファクタリングにとどまらず、リアーキテクティングも含まれる。」→ 「リファクタリングにとどまらず、〜」(直前が「より深い洞察へ向かう リファクタリング」であるため)。
  • 「開発ールの営業に使われる可能性がある。」→「開発ツールの営業〜」。

移行メモ

  • 元 Wiki では見出しそのものが他ページ・同ページ内へのリンクになっていた箇所 (「エンジニアリング or テクノロジ」「エンジニアリング」「テクノロジ」 「アーキテクチャ宇宙飛行士との関連」)は、GitHub Wiki では見出しから アンカが生成されるため、見出しをプレーン・テキストとし、 リンクは直下の本文に置いた。
  • PukiWiki のページ内アンカ(#xxxxxxxx)は GitHub Wiki では再現できないため、 同一ページ内のアンカは見出しから生成されるアンカに張り替え、 他ページのアンカを指すリンクは「〜(ページ名 の該当節を参照)」の形に置き換えた。
  • 同名の見出し(「その他」)が衝突するため、括弧で文脈を補って一意にした。

Tags: 移行, 技術的負債, technical debt, ウォード・カニンガム, リファクタリング, リアーキテクティング, DDD, QCD

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally