メモ

「技術的負債とはどういうものなのか?」をテトリスに例えるとこうなる


テトリスは落ちてくるテトリミノを積み上げ、横一列に並べて消すという有名なゲームですが、そのテトリスを例に「技術的負債」がどういうものかたとえた記事を、エンジニアでありコンサルタントでもあるというエリック・ヒギンズ氏が公開しています。

Technical Debt Is Like Tetris – Featured Stories – Medium
https://medium.com/s/story/technical-debt-is-like-tetris-168f64d8b700

技術的負債」とは、ソフトウェアの開発において、時間がかかるより良いアプローチではなく一番早く新機能の実装などの目的を達成できるアプローチを選んでしまったために生じたソフトウェアの複雑さのこと。例えば既存の機能を変更した際に説明書を書きかえなかった場合、後から別の人が動作を把握するにはソースコードを読む作業が必要となってしまいますが、こうした「今の時間を節約する代わりに後で時間をとられる」ことを金銭の貸し借りにたとえて技術的負債と呼びます。


ヒギンズ氏は技術的負債がどういうものなのかを直観的に理解するにはテトリスを例にあげるのが良いとしており、「テトリミノが上から降ってくる」ことが「コードが毎日増加する」こと、「テトリミノが並んで消える」のが「コードがきちんと動作する」と表現しています。

開発当初のコードの複雑性はテトリスでいうと下の画像のような感じ。技術的負債のない単純な場面では新たな機能を開発するのは簡単です。


テトリスで「複数行をまとめて消す」というのは高度な機能を追加することを示していると捉えられます。技術的負債が少ない状況では高度な機能の開発もそれなりに簡単に行えます。


しかし、コードが生み出されていくうちにさまざまな理由で技術的負債はだんだんと積み上がっていきます。技術的負債はテトリスでいうと「テトリミノの中に埋まってしまった穴」のようなもの。技術的負債が少ないうちはまだなんとかゲームをプレイし続けられますが……


あまりにも多くの技術的負債が積み上がってしまった場合、新しい機能の追加やバグの修正を現実的な時間で行うのは難しくなってきます。


上記のような状況は開発者を増員したり交代したりしたからといって避けられるものではありません。技術的負債は「負債」という名前の通り返済しなければいけないものです。テトリスではゲームを通してテトリミノを消し続けていくように、開発においては技術的負債を返し続けなければいけません。

テトリスではプレイヤーが勝利したりすることはなく、プレイヤーがコントロールできるのは「いかに長くゲームを続けられるか」ということだけです。これはビジネスでも同様で、技術的負債を克服することはできません。より長くビジネスを継続するためには、技術的負債を常に解消し続ける必要があるというわけです。

この記事のタイトルとURLをコピーする

・関連記事
世界的パズルゲーム「テトリス」の知られざる歴史とは? - GIGAZINE

世界の大定番ゲーム「テトリス」には不安とストレスを軽減する効果があると判明 - GIGAZINE

足りない睡眠時間を埋めるにはどうしたらいいのか? - GIGAZINE

「ジョブズに技術的手腕が不足していたおかげでAppleは成功した」とウォズニアックが語る - GIGAZINE

数々のエンジニアリングチームを導いた人物がマネジメントの中から学んだ教訓とは? - GIGAZINE

in メモ,   ソフトウェア, Posted by log1d_ts

You can read the machine translated English article here.