0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Copilot coding agentでデグレを防ぐ仕組みを作った話:前提を固定するADR運用

0
Last updated at Posted at 2026-03-01

TL;DR

  • Copilot coding agentを使った開発で、設計書(ファイルツリー)が更新されないまま実装が進み、デグレが起きる問題に直面しました
  • 原因は「AIが悪い」のではなく、前提が変わるのに、前提を固定しないまま指示していたことでした
  • ADR(Architecture Decision Record)を使って前提を明示・固定し、agentに段階実行させる運用に変えました
  • 結果として、同種のデグレを約2時間で再発しにくい状態まで抑え込めました

背景:Copilot coding agentで起きた「静かなデグレ」

Copilot coding agentを使って、設計 → 実装 → テストまでを自動化する流れを作っていました。

あるとき、実装自体は正しく見えるのに、

  • 設計書と実装が微妙にズレる
  • ファイル構成が意図と違う
  • 後続の修正で別の箇所が壊れる

という 「一見問題なさそうに見えるデグレ」 が発生しました。


問題の正体:AIではなく「前提が固定されていない」こと

最初は、

  • agentの理解が甘い?
  • プロンプトが弱い?
  • モデルの限界?

と思ったのですが、ログを追うと違いました。

何が起きていたか

  • 設計書(architect.md)のファイルツリー定義が途中で変わった
  • しかしagentは最初に読んだ前提のまま実装を継続していた
  • 人間側も「変わった前提」を明示的に伝えていなかった

つまり、

前提が変わるのに、前提を固定・更新する仕組みがなかった

これが原因でした。

図で見る:Before / After

Before:前提が流れる

After:ADRで前提を固定する

なぜAgentはこの問題に弱いのか

人間同士のチームであれば、「あの時こう決めたよね」という文脈を暗黙的に共有できます。会話・記憶・空気感で補完できるからです。

しかしAgentはセッションをまたいで文脈を引き継げません。前提が変わっても、それを明示的に渡さない限り、最後に読んだ状態を正として動き続けます。

つまりADRは、今まで「大規模チームのドキュメント文化」の産物として語られてきましたが、Agent開発においては**「人間がAgentに渡す引き継ぎ書」**として機能します。Agentを使う規模が大きくなるほど、「決定をどこに書いておくか」が開発の安定性に直結してきます。


参考にした考え方:github/gh-aw の設計スタイル

ここで参考にしたのが github/gh-aw(GitHubが公開しているAgentic Workflowのリファレンスリポジトリ)です。

このリポジトリでは、

  • 人間は「何を決めたか」を明示的に書く
  • agentは「決まった前提の中で」作業する
  • 前提が変わるときは、必ず決定を更新する

という思想が一貫しています。


解決策:ADRで「前提」を固定する

そこで取ったのが ADR運用 です。

ADRとは

Architecture Decision Record の略で、「何を」「なぜ」「どこまで」決めたかを明文化する記録です。詳細は adr.github.io を参照してください。

今回の使い方

  • 設計書(architect.md)の第4章:ファイルツリー定義を対象に
  • 「ここまでは決定済み」「ここからは未決定」をADRで明示
  • agentにはADRを前提として順番に実行させる

実際の構成

.
├── architect.md        # 全体設計
├── adr/
│   └── ADR-001.md      # 前提・決定事項の固定
└── .github/
    └── copilot-instructions.md

ADRに書いた内容(例)

項目 内容
対象 ファイルツリー構成
決定事項 pkg/ 配下の責務分離
非対象 将来の拡張用ディレクトリ
禁止 ADR未更新での構造変更

agentの動かし方(重要)

ADRに以下のステップを書き、順番に実行させました。

  1. ADRを読む
  2. architect.md の該当章を確認する
  3. 実装を行う
  4. テスト・検証する
  5. 結果をレポートする

これにより、

  • 「勝手に解釈を広げる」
  • 「古い前提で実装を続ける」

といった挙動が止まりました。


結果:デグレは「防げる問題」になった

この運用に変えてから、

  • 同種のデグレは再発していません
  • 問題が起きても「どの前提が壊れたか」がすぐ分かります
  • 人間のレビュー負荷も減りました

AIが賢くなったわけではありません。前提を固定しただけです。


学び

  • AIは「曖昧な前提」を自分で補完してしまいます
  • それはバグではなく、仕様です
  • 前提が変わるなら、人間が決定として固定する必要があります

Copilot coding agentは強力ですが、設計と意思決定を省略できるわけではありません。

むしろ、

「人間は決める、AIは実行する」

を徹底した方が、開発は安定します。


おわりに

「AIがデグレを生む」のではなく、決定を記録しない運用がデグレを生みます。

ADRは地味ですが、agent開発ではかなり効きます。


次の一手(検討中)

  • ADRテンプレを公開する
  • gh-aw構成を最小化したサンプルを作る
  • チーム向けハンズオンに落とす

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?