技術的負債の真の正体は、ソフトウエア開発の持つ本質的な難しさから生じた問題が、コミュニケーションの食い違いによって積み重なったものです。企業がソフトウエア開発をしていくうえで技術的負債を生じさせないようにするにはどうしたらよいでしょうか。最新技術を用いるといった「よく聞く」アプローチではなく、意外な処方箋を紹介します。

 最初に「技術的負債」と呼ばれる現象が生まれた背景を簡単に説明します。ソフトウエアは、機能が増えていくにつれて非線形に複雑になるものです。その結果、最初はスムーズに進んだ開発が徐々に滞るようになってしまいます。

 ソフトウエアを長年運用し、環境やビジネスの変化とそぐわなくなってきた設計が徐々に積み重なると、この遅れが顕著になっていきます。ところが、ソフトウエアは「見えないもの」であるため、設計のズレの積み重ねを把握できなかったり対処しなかったりすると、遅れは致命的になります。

 結果的に知らず知らずのうちに、改善のために巨大なコストが必要になってきます。結果、交換しようと思ってもできないホールドアップ状態のソフトウエア、つまり「技術的負債」が出来上がってしまうのです。

左右するのは「コントローラビリティー」

 技術的負債について、技術的な側面で「ソフトウエアのイケてない部分の総和である」と捉えると、泥沼にはまります。イケてるかイケてないかは主観的な側面が大きく、どこまで行っても完璧に「イケてる」ソフトウエアをつくることは難しいからです。

 例えば技術的負債がなくなってから機能拡張を考えようと、あなたが完璧にイケてる設計のシステムをつくったとします。完成して「いざ機能拡張」となっても、ユーザーが望む機能拡張の方向性があなたの想定していたイケてる設計と異なる場合、あなたにとっての最高のシステムはたちまち誰かにとっての「技術的負債」に早変わりしてしまいます。

 何をつくっていきたいのか、どう変化していくのかによって、最適な設計はまちまちです。「どうなりたいか」を把握しないままに、技術的負債を解消しようとしても全くの徒労に終わってしまいがちです。

 重要なのは、ソフトウエア開発という経済活動全体を「制御すべきシステム」と捉えたときに「コントローラビリティー」があるかという観点を持つことです。システム制御におけるコントローラビリティーとは、簡単に言えば「決まった状態になるような入力が存在すること」です。

 ここではソフトウエア開発という経済活動を対象としたコントローラビリティーを「妥当な予算で、ビジネス上必要なシステムの機能を追加し続けられること」と定義します。

 「技術的負債」という表現は、多くの人に「ソフトウエアの中身の課題」と捉えられてしまいがちです。そうではなく、捉えるべきはもっと広い範囲であり、すなわちソフトウエア開発という経済活動全体がビジネスの要求する変化を健全に実現できるかというものです。

ソフトウエアコントローラビリティーの概念
[画像のクリックで拡大表示]

 例えば古く複雑で巨大なシステムであっても、十分なスキルのエンジニアが必要な数だけそろっている場合には、必要な速度で改善できるでしょう。また、そもそも変化の必要がないソフトウエアであれば、最低限の人数で何とかなる可能性もあります。

 一方、新しく小さなシステムであっても、改善要求が多過ぎたり、あまりに高度な内容で関与できる人数が少なくて属人化してしまったりしているのであれば、簡単にコントローラビリティーを失ってしまいます。今後ソフトウエアに追加したい機能や目指す先がある程度見えているのであれば、それに合わせて必要な改修を施すことで、輝きを取り戻せる場合もあります。

 つまり、ソフトウエアを改善する組織そのものをどう経営するかがソフトウエアコントローラビリティーの観点では重要になるのです。具体的には「適切な人員がいるか」「要求の整理や取捨選択ができているか」「課題の可視化は十分か」「プロジェクトの問題に気がつくための心理的安全性は十分に高いか」「開発生産性の課題を適宜解決できているか」など、ソフトウエアを改善する組織全体について、十分な能力を持っているかを踏まえた経営が欠かせません。

 上記の点検すべき課題は、テクノロジーとビジネス、テクノロジーとプロダクトマネジメント、テクノロジーとプロジェクトマネジメントなど、「交差」する場所に存在する場合が多く、検討されないままの空白領域として放置されがちです。特に専門性を軸に、部署や企業体をばっさりと分断してしまう、具体的に言えばシステム部門やシステム子会社を経営と切り離して考えるような組織で生まれやすい傾向があります。

 「ソフトウエアコントローラビリティー」という概念について理解すると、技術的負債に関する問題についてのアプローチの仕方が変わってきます。例えば技術選定の在り方が変わります。開発に多くの労力を必要とする領域の機能に関しては、市場で人気があり、多くの人が扱える技術を採用するようになります。複雑でパフォーマンスと信頼性が求められる領域には、エンジニアの採用が多少難しくても信頼性の高い技術を選ぶようになります。

この先は日経クロステック Active会員の登録が必要です

日経クロステック Activeは、IT/製造/建設各分野にかかわる企業向け製品・サービスについて、選択や導入を支援する情報サイトです。製品・サービス情報、導入事例などのコンテンツを多数掲載しています。初めてご覧になる際には、会員登録(無料)をお願いいたします。