- AIがコードの作成や整理を支援するため、技術的負債(tech debt) はそれほど重要ではなくなるという考えがある
- しかし実際には、AIが技術的負債のコストをより大きくしている
- 負債の少ないコードベースではAIツールによる高速化の効果が最大化される一方、負債の多いレガシーコードベースではAIツールの効率が急激に低下する
- その結果、技術的負債の多いコードベースほど、AIツールを活用するうえでより大きな困難に直面している
複雑なコードに弱い生成AI
- Cursor や Aider のようなAIコーディングツールは、コードの複雑さに非常に敏感に反応する
- 既存のパターンやインターフェースが明確に定義されたコードでは速度向上が大きいが、複雑な制御フロー や 依存関係の多いコード では有効な応答を生成するのに苦労する
- 複雑なコードベースは、AIモデルだけでなく、開発者が要求を明確に構成することも難しくする
- このため多くの開発者は、AIツールが「本番レベル」の複雑さを扱えるようになるまで待つ傾向がある
AIツールを正しく活用する
- レガシーコードベースでAIツールを無理に使うよりも、人間の専門家がリファクタリングを通じてAIが円滑に動作できるようにすることが重要である
- 直接的なリファクタリングが危険な場合は、Strangler Fig パターンのような方法を使って新しいモジュールを開発し、それを通じてAIツールの利点をすぐに活用できる
- これにより開発チームは、コードの細かな実装よりもアーキテクチャ設計に重点を置き、より高いレベルの抽象化に集中できる
AIフレンドリーなアプローチ
- AIツールが適切に動作できるよう、システムをモジュール化し、明確なインターフェースによってモジュール間の相互作用を定義することが重要である
- 自然言語で中核機能とデータフローを説明できるモジュール構造を維持することが、有用な基準となる
- Gauge Tach のようなツールを使って可視性やアーキテクチャのルールを設定すれば、モジュール化されたシステムへと発展させることができる
品質が速度を左右する
- 高品質なコードベースを維持することは、これまで以上に重要になっている
- モジュール化されたアーキテクチャに投資すれば、チームはAIツールの効果を最大限に引き出し、迅速な機能開発と高品質なソフトウェア構築を両立できる
4件のコメント
ソフトウェアの肥大化は避けられない運命のようです
どこかで見聞きしたのか、管理職のような人たちにはAIが全部解決してくれるというマインドがあるように思う。ChatGPTが妄想を広げすぎてしまった。まだ小学生レベルだということを強調する必要がある気がする。補助ツールとしてごくわずかに手伝ってくれる程度だということを伝える必要がありそう。あと、上の状況に共感できるのは、複雑になると理解を誤ること。プロジェクト全体の流れを把握できていないように思う。
garbage in garbage outからは逃れられませんね。Hacker Newsの意見
若く高品質なコードベースを持つ企業は、生成AIツールから最大の恩恵を受ける。一方で、複雑なレガシーコードベースを持つ企業は、その導入に苦労する。個人プロジェクトでLLMを使うときにも同じような経験をした。コードベースが少しでも独特になると、モデルは誤りを犯し、作業はより難しくなる
LLMは簡単な作業をさらに簡単にしてくれるが、難しい作業ではミスをする。この格差は縮まるどころか、むしろ広がっている
「高負債」環境では、微妙な制御フローや長期依存関係、予想外のパターンのため、有用な応答を生成するのが難しい。多くの場合、これは「技術的負債」ではなく、コードベースの成熟度を示している
生成AIツールにレガシーコードベースの複雑な問題を解決させようと無理強いするのではなく、人間の専門家がレガシーコードをリファクタリングし、生成AIが円滑に機能できるようにすべき
AIが技術的負債をそれほど重要でないものにするという信念が生まれつつある。しかし、AIが生成したコードは不規則で一貫性がなく、特定のプロンプトとコンテキスト入力に非常に敏感だ
AI生成コードは実際に価値を持ちうるが、この記事の枠組みは非現実的だ
機械学習は、技術的負債における高金利のクレジットカードのようなものだ。コード生成が容易になるほど、より多くのコードが作られ、保守コストが増加する
LLMのコード生成能力には感嘆するが、目標はコード量を減らすことだ
AIは単純な作業を処理し、より多くのコードを生成するが、発見しにくいバグも生み出す。これらのツールによってより速く動けるようになる一方で、別のやり方で運用する必要がある
AIはコードの理解や修正に役立つが、盲目的なコピー&ペーストはよくない。コードレビューや説明の要求、反復作業は依然として必要だ