企業が企業を買収するとき、その価値を把握するために当然、その貸借対照表に注目します。財務負債は、最終的に処理しなければならないローンや負債として表示され、買収の際に比較的分析しやすいコンポーネントです。
しかし、ソフトウェア・エンジニアリングにおいてますます重要になっている別の種類の負債があり、正式には考慮されていません。技術的負債は、新しいテクノロジーやトレンドに適応できない脆弱なコード、時代遅れのアーキテクチャー、システムとして現れます。
どちらの場合も、買収者には選択すべきことがあり、多くの場合、大きなトレードオフが伴います。ローンを返済するか、技術的負債の例としてシステムをリファクタリングすることで「元本」を返済することができます。財務条件の再交渉や段階的な技術スタックのモダナイゼーションを通じて再構築が可能になるでしょう。あるいは、債務の負担を受け入れ、財務的または技術的な俊敏性の低下の結果に対処することもできます。
経済的負債と同様に、技術的負債も悪化の一途を辿っています。今日、私たちが取る近道は、将来の作業をより遅くし、よりリスクも高め、より高価にし、さらなる近道への圧力を生み出し、より多くの混乱と遅延を招くという悪循環を生みます。
コードベースの作業が困難になるにつれて、新しい機能の追加に時間がかかり、エンジニアは何かが壊れることを恐れて更新を避けます。古いコードの上に新しいコードが重ねられ、予測不可能な副作用が生じます。複雑さが複合的なものとなっています。バグが急増し、潜在的なセキュリティー脆弱性につながります。開発者は、古いシステムを安全に管理するよりも、新しくエキサイティングなものを構築したいと考えるようになり、問題の消火と回避策の構築に多くの時間を費やしているように感じ始めています。
開発者は解約し、古いシステムに慣れている従業員が離職し、その結果、組織に関する知識が失われます。オンボーディング期間は長くなっています。ドキュメンテーションが増え、作業が重複したり、大きな問題を文書化したりするだけの簡単な修正につながります。
IBM Institute for Business Valueの研究によると、AIのビジネスケースにおいて技術的負債に対処するコストを完全に考慮している企業は、そうでない企業よりもROIが29%高いことが明らかになっています。そして、論理は逆方向に流れ、技術的負債を無視すると、ROIが18%低下して29%まで下がります。AIコーディング・ツールが良くも悪くも業界を席巻しているため、ITにとって興味深い時代となっています。技術的負債を悪化させる可能性があるのと同じテクノロジーが、それを解決するための強力なツールなのです。
IBMニュースレター
AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。
ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。
AIは技術スタックの上にあるため、技術的負債の蓄積が驚くほど早くなります。例えば、大規模言語モデル(LLM)は、大量のコードを素早く生成し、深い理解なしに機能を足場組みすることを容易にする一方で、コーディング標準やコード・レビューが後手に回る可能性があります。
プロンプト・テンプレート、AIオーケストレーション・フレームワーク、検索パイプライン、エージェント・ループは、既存のシステムの上に重ねられているが、システムが実際に何をしているのかわからなくなり、デバッグを難しくしています。そのため、何かが故障したときに、何が故障したのか、そしてなぜ故障したのかは必ずしも明確ではありません。障害は見えにくいもので、下流で予期せぬ動作につながる場合があります。
AIは、特定のコンテキストでのみ機能する脆弱なプロンプト、低品質の検索データ、モデル・ドリフトなど、新しいカテゴリーの負債をもたらします。また、モデルは常に変化しているため、この解約は「互換性負債」によりAIライフサイクル全体で故障につながる可能性があります。機敏なスタートアップ企業であっても、テクノロジーの進歩があまりにも速いため、初日から新たな技術的負債を蓄積し始める可能性があります。
AIのコード生成や「バイブ・コーディング」運動は、複雑さをLLMに委ねる「モデルが処理する」という考え方と結びつけられることが多いです。従来のコーディングと比較して明示的なロジックがない場合、システムの設計が不十分になり、予測不可能な動作が発生する可能性があります。
技術的な負債の削減は、負債を測定する能力にかかっています。しかし、技術的負債を測定することは困難な場合がありますが、開発サイクルの遅延、開発チームの不満、納期の遅延などの影響を測定することは可能です。
デリバリー・メトリクスは、チームがソフトウェアをどれだけ効率的に出荷および保守できるかを捉えます。リードタイムと変更の失敗率は、技術的負債の問題を示唆しています。
また、コード品質メトリクスなど、根本的な負債を詳しく把握するコード・レベルの指標もあります。循環的な複雑さ、コードの重複、そして「コードの臭い」の存在は、コードベースに変更を加えることがいかに困難であるかを定量化し、その保守性に直接影響を与えるのに役立ちます。
しかし、コードを精査するだけでは十分ではありません。技術的負債がどのように望ましくない成果や大規模なやり直しにつながるかを捉えられないことが多いからです。バグの量、製品の欠陥、オンボーディング時間、その他の開発者の問題点を定量化することは、ITのより深い根本原因を特定するのに役立ちます。ソフトウェア開発者は、出荷ではなく緊急対応にどのくらいの時間を費やしているのでしょうか?
これまで、技術的負債の管理はITの面倒な作業と考えられ、多くの場合、主要な関係者が必要のためにバックグラウンドで行うべきものと見なされてきました。しかし、AIの時代になると、技術的負債の管理は既存の課題となり、経営幹部全体の注目を集めるほど大きなものとなります。IBVの調査によると、経営幹部の81%が、技術的負債がすでにAIの成功を制約していると回答しています。69%が、一部のイニシアチブが財政的に維持困難になると考えています。
AIの自動化が技術的負債を悪化させる可能性がありますが、AI搭載のコード支援が強力な解決策になる可能性があります。IT業界では技術的負債が複雑化しているため、この複雑化が最も発生する分野に投資を集中させることは賢明なアプローチです。
コード・リファクタリングは、外部の動作を変更したり機能に影響を与えたりすることなく、ソフトウェア・コードの内部構造を変更します。実践者は、古いコードを手動でクリーンアップして一貫したパターンを適用し、過度に複雑な機能を簡素化する代わりに、リポジトリー全体にわたってターゲットを絞ったリファクターを実行し、パターンを段階的にモダナイズして、大規模なプロジェクトを継続的な負債管理プロセスに変えて、定期保全をよりスケーラブルにすることができます。
コンテキストの欠如は最大の原因の1つです。AIコードのドキュメンテーション・ツールは、レガシー・システムのドキュメンテーションを生成し、実際にどのような機能が実行されるかを説明できます。冗長なコードの重複を除外し、統合の機会を提案します。これにより、オンボーディング時間が短縮され、開発プロセスが合理化され、古いコードに触れたときに何かが壊れるという恐れが解消されます。
自動テストは、開発者が隠れたバグを迅速に見つけて排除し、レガシー・コードを安全に変更するのに役立ちます。これにより、各スプリント内の進捗が加速し、効率的なバグ修正を通じてバグのバックログを削減し、コストのかかる回帰を回避できます。多くの場合、本当のブロッカーは悪いコードではなく、それを変更するための安全な環境の欠如にあります。AIはコードの意味論を読んで理解し、コードまたは特定のモジュールの意図された動作を推測し、その理解に基づいて有意義なテスト・ケースを生成できます。チーム・メンバーは、エッジ・ケースをカバーし、現在の動作を反映するテストを生成し、それらのテストを実行してベースラインを確立し、コードをリファクタリングして再テストするようAIに指示できます。
AIはシステムを大まかに分析し、結合されたコンポーネントと依存関係を特定し、リンクされたコンポーネントの動作を考慮した戦略的ロードマップを示すアップグレード・パスを提案します。これは、そうでなければリスクが高い可能性がある大規模な移行において特に役立ちます。AIは、フレームワークや言語間でコードを翻訳し、多くのファイルにわたってAPIを更新し、移行中に一貫性を維持することで支援します。
IBVの調査によると、IT支出に占めるAIの共有は、約11%から18%以上に増加すると予測されています。その成長には、債務削減を優先することが必要です。そうしないと、AI投資は、貸借対照表に計上されないコストによって損なわれるリスクがあります。
技術的負債管理は、エンジニアリングの問題として捉えられがちですが、文化的な問題でもあります。それは、古いコードをクリーンアップすることと同じくらい、チームを構造化し、インセンティブを調整することでもあります。
多くの組織では、エンジニアリングチームは新しい機能を迅速に出荷することで暗黙的に報酬を与えられ、長期的な保守性は優先順位が付けられません。ロードマップは、エンド・ユーザーにとって目に見える成果を重視しており、将来の負債を削減するための取り組みは、多くの場合、このインセンティブと競合することができません。これにより、時間が経つにつれて、開発者は技術的負債を返済するのではなく、むしろ拡大させることで報酬を与えられるという不均衡が生じます。
サイロ化したチームや断片化されたワークフローは、問題を悪化させるおそれがあります。システムの所有権が多くの利害関係者に分散されている場合、どのチームもそのシステム全体の健全性に対して責任を感じることはなく、あるチームにメリットをもたらすための決定が、実際には別のチームに害を及ぼす可能性があります。1つのチームが下す短期的な決定は、予期せぬものや永続的な影響を与える可能性があります。明確な所有者がいない場合、個々のチームは長期にわたってシステムを維持および最適化する責任を負いません。新鮮なコードはすぐに「レガシー・コード」になります。
チーム間のオーナーシップと協力に対処する組織変更だけでなく、技術的負債削減プロジェクトを継続的なプロセスに変えることが必要なアプローチです。技術的負債を特定し、定期的なコード・レビューで対処するには、厳密なプロジェクト管理が鍵となります。
AIは、定期的な保守タスクのコストを削減することでコード分析を体系化するのに役立ちます。これにより、チームは、新たな未来に改善を先延ばしにするのではなく、技術的負債を段階的に対処し、最終的に高品質なコードの実現につなげることができます。時間の経過とともに、これらの成果が積み重なり、結果としてソフトウェアの品質が向上し、ビジネス成果が向上します。
安全で意図を認識した開発を実現するAIパートナーであるBobと連携して、ソフトウェア・デリバリーを加速させましょう。
信頼性の高いAI駆動型ツールを活用することで、コード作成、デバッグ、リファクタリング、コード補完に費やす時間を最小限に抑え、イノベーションに集中できる余地を広げます。
AIの導入によって重要なワークフローと業務を再構築し、エクスペリエンスの最大化、リアルタイムの意思決定、ビジネス価値の向上を実現しましょう。