認知負債
生成AIがプロンプトからコードを大量に生成してくれるので、出力されたものを理解する時間と引き換えに早くリリースする。この構造は技術的負債と同じなので「認知負債」と呼ばれることがある。
認知負債と意図負債を分ける
Storey の3層モデルの肝は、コード側の問題 (技術的負債) と人間側の問題を分けただけでなく、人間側をさらに「人の頭の中」(認知負債) と「外部化された知識」(意図負債) に分けたことにある。
table:table
種類 宿る場所 問題
技術的負債 コード コードの保守性の低下を招く
認知負債 人間・チーム 共有理解が劣化する
意図負債 外部化された知識 何のためか分からない
この区別は、AIエージェントに渡せるのが人間の暗黙知ではなく、仕様、ADR、テスト、制約、設計メモ、チケット、ドキュメントだけだから重要になる。たとえば次のコードがあったとき、
code: (java)
if (customer.isCorporate() && order.totalAmount().compareTo(limit) > 0) {
requireManualApproval(order);
}
コードは読んで理解できるが、
法規制によるものか
社内統制か
過去障害の再発防止か
大口顧客向け例外か
一時的な運用回避か
もう不要なのか
はがわからない。コードは理解できているのに変更判断ができない。これは認知負債ではなく意図負債の症状で、対策はチームの共有理解を立て直すことではなく、ADR やドメイン制約を残すことになる。
意図負債の本体は「ドキュメントを書いていない」ことではなく、事業目的・業務ルール・設計判断・制約・テスト・コードの鎖が切れていることにある。テスト名が test_case_17 で期待値だけ固定されているなら、テストはあっても意図はない。ADR があってもコードと接続していなければ機能しない。AI 生成では、アイデアがチケットに圧縮され、プロンプトに圧縮され、コードに変換される過程で文脈が失われる (Forkzero はこれを「ツールの問題ではなく翻訳の問題」と呼んでいる)。 認知負債は何を指すか、を切り分ける
「認知負債」という語の最大の問題は、抽象が広すぎて何でも指せることにあり、StoreyのブログについてのHacker Newsスレッドでも様々な議論が展開されている。
jdw64 は、ドキュメント不足・オンボーディング失敗・アーキテクチャ理解の欠如・テスト不足・レビュー疲労を全部「認知負債」と括るのは、Stepanov の「すべてがオブジェクトなら、何もオブジェクトではない」と同じだと批判している。 生成AI以前から「認知負債」は存在し、いくつかの研究系譜を持つ。
認知負債の対策
問題を切り分けると、AI 以前から積み上がってきた研究で答えが出ているものが多い。
コードレビューを欠陥検出ではなく知識移転として運用する: Bacchelli & Bird 2013 の Microsoft でのフィールド研究は、レビューの主目的は申告では欠陥検出だが、実際には知識移転・チーム認識共有・代替案検討の比重が大きいと示した。AI 生成コードのレビューが「テストが通れば LGTM」になると、この実証された効果が消える。 新人オンボーディングに社会的支援を入れる**: Begel & Simon 2008 は Microsoft 新人を6ヶ月追跡し、技術より社会・コミュニケーション側の準備不足がオンボーディング苦痛の主因だと示した。AI が増えてもオンボーディングの苦痛は減らない。 コンウェイの法則を逆手に取る: Colfer & Baldwin 2016 は、組織の結合度がアーキテクチャの結合度に反映されるというミラーリング仮説に強い実証を示している。チーム設計が認知負債のしやすさを決める。 意図負債側に対しては、以下のようなものが対策として挙げられる。
AI が変えたのは何か
コード変更の速度と量が上がった。Della Porta et al. は AI が書いたコミット302,600件、6,299リポジトリ、5つの AI アシスタントを分析し、AI が書いたコミットのうち各ツールで15%以上が少なくとも1つの問題を導入し、AI 由来問題の22.7%が最新リビジョンまで残存していたと報告している。正確性とセキュリティの観点では、AI による問題の導入数が修正数を上回る。生成は速いが、レビューと検証はそのままなので、未理解のコードが残存する。 AI を緩和に使うときの注意
Storey は緩和策として「AI を使ってプラクティスのコストを下げる」案を挙げているが、HN の CobrastanJorji はこれに懸念を表明している。AI で認知負債を作った人は、その負債を直すテストや設計文書も AI に書かせる。エージェントが効率的に動くためにはよくても、人間の認知負債そのものは解消しない。 AI時代の対策
AI 生成の各変更を、出荷前に少なくとも1人の人間が完全に理解することを要求する
「何が変わったか」だけでなく「なぜ変えたか」をドキュメント化する
コードレビュー、ふりかえり、知識共有セッションで、チームが共有理解を再構築する
AI が一括生成した機能を小さく原子的な変更に分割し、個別に理解する
動かなかったものを頻繁にロールバックする
疎結合なアーキテクチャと高速なフィードバックを持つチームは AI からの生産性向上を得やすい
Osmani は逆方向に、「詳細な自然言語仕様を先に書き、PR では仕様をレビューする」処方箋をウォーターフォールの再来として批判している。仕様から実装への翻訳には依然として暗黙の判断が含まれるから、事前仕様を書けばよいという単純解は成立しない。 複数の論者にまたがって出てくるのは、「なぜ」を残すこと、AI 出力を全受容も全拒否もせず小さく分けて検証すること、設計制約を機械可読な形にすることの3つで、いずれも前節で挙げた既存の対策と整合する。
まとめ
「認知負債」はAI以前から存在するものなので、既知の対策も多い。AIで速度・量・所有不在の度合いが変わったから、これらの古典を AI時代の文脈で再評価する必要が出ているだけで、白紙から処方箋を作る必要はない。
そして、対策が分かっていても実行されない理由は、出力量を生産性指標にする組織と、仕事の安定を優先する個人のインセンティブにある。AI時代の認知負債が深刻に見えるのは、技術問題が新しくなったからではなく、もとからあったインセンティブの歪みがAIで増幅されて見えるようになったからと言える。