技術的負債とは何か
技術的負債とは、システムやプログラムを作る際に、その場しのぎの実装や、雑な作りを選んでしまったことによって、後から発生する「修正や整理にかかる余計な手間」のことを指す言葉です。お金の「借金」になぞらえて、こう呼ばれています。
なぜ「負債」という言葉が使われるのか
借金には、借りた元金だけでなく「利子」が発生します。技術的負債も同様で、雑な作りをそのまま放置すればするほど、後になって直すための手間(利子にあたる部分)がどんどん膨らんでいきます。
- 今すぐ動くものを作るために、細かい部分を作り込まずに済ませる
- ドキュメント(説明書き)を残さず、担当者の頭の中にしか仕組みが残らない
- 「後で直そう」と思ったまま、その部分に誰も手をつけずに時間だけが過ぎる
こうした状態が積み重なった結果を、まとめて「技術的負債」と呼びます。
家の「応急処置」に例えると
技術的負債は、住宅の修繕に例えるとイメージしやすくなります。雨漏りが起きた際、根本的な屋根の修理をせず、とりあえずバケツを置いて応急処置だけで済ませておくようなものです。その場はしのげますが、放置すればするほど木材が腐り、修理の規模も費用も、後になるほど膨らんでいきます。
技術的負債が引き起こす問題
| 症状 | 具体的な影響 |
|---|---|
| 修正に時間がかかる | 複雑に絡み合った作りのせいで、1つの変更が他の場所に予期せぬ不具合を生む |
| 新しい担当者が理解しにくい | 説明書きが残っていないため、引き継ぎに膨大な時間がかかる |
| 不具合が起きやすい | 場当たり的な作りの積み重ねにより、想定外の組み合わせでエラーが発生しやすくなる |
なぜエンジニアでなくても関係するのか
技術的負債は、開発の現場だけの話に見えて、実は事業を進める立場の人にとっても無関係ではありません。「早く形にしてほしい」という要望を優先し続けた結果として負債が積み重なることも多く、納期の決め方や優先順位のつけ方そのものが、負債の増減に直結しているためです。
技術的負債とどう付き合うか
- すべての負債を一度になくそうとせず、影響の大きい部分から優先的に整理する
- 開発のスケジュールの中に、あらかじめ「整理のための時間」を組み込んでおく
- 「今回は速さを優先し、後で直す」という判断を行った場合は、その事実をチーム内で共有しておく
一番怖いのは「壊れていないこと」
技術的負債を強く感じるのは、「動いているから触れない」というシステムを改修するときです。担当者しか分からない処理が大量に残っていて、「ここを変更すると、どこに影響するか分からない」という状態になっていることがあります。さらに、古いライブラリを使っている、ドキュメントがない、テストが十分にない、同じ処理が複数箇所にコピーされている、といった要因が重なると、ちょっとした改修にも非常に時間がかかるようになります。一番怖いのは、システムが壊れていることではありません。普通に動いているからこそ、問題が見えないまま積み重なっていくことです。技術的負債は「いつか返す借金」なので、完全にゼロにするより、どこに借金があるのかを把握しておくことが大切だと感じています。
最後に
技術的負債は、目先の速さを優先した結果、後から利子つきで返ってくる「後回しのツケ」です。完全にゼロにすることは難しくても、その存在を意識し、計画的に返済していく姿勢が、健全なシステム運用には欠かせません。
関連記事:ストラングラーパターンとは