コードパターンのドリフト検出とは、コーディングエージェントを使ってコードベースをリファレンスアプリケーション—— サービステンプレートのように、組織が意図するコーディングパターンを体現した、コンパイル・実行可能なプロジェクト——と 比較し、コードベースがそれらのパターンからずれている(ドリフトしている)箇所を特定して、そのギャップを埋められるように することである。この用語は AI をリファレンスアプリケーションにつなぎ留める で用いられており、同記事はこれを、 リファレンスアプリケーションをコーディングアシスタントが参照するコードサンプルの供給源として使うことに続く、 第二のステップとして説明している。

用法

同記事が説明する構成では、Model Context Protocol サーバーを通じて、エージェントはリファレンス アプリケーションのコードサンプルとその git コミットの両方にアクセスできる。プロンプトはエージェントにまず リファレンスの最新の変更を探すよう求める。エージェントは MCP サーバー経由で最新のコミットを取得し、その差分を 使って対象アプリケーションを分析し、ドリフトレポートを書く。人間がそのレポートをレビュー・編集し——たとえば無関係な 指摘を取り除き——そのうえで第二のステップとして、レポートが特定したギャップを埋めるコードを書くようエージェントに 依頼する。リファレンスのコミットによって比較の範囲を絞ることが、どのような種類のドリフトを探すべきかをユーザーが エージェントに伝える方法である。同記事は、代わりにリファレンスと対象のコードを単に比較するようエージェントに 求めたところ、無関係な比較が大量に生じたと報告している。

適用される場面

この手法が扱う問題は次のとおりである。組織がエンジニアリングチームのために整備する「ゴールデンパス」の典型的な 構成要素であるサービステンプレートは、最新のパターンや標準を担うことを意図しているが、いったんテンプレートから サービスを作成すると、その後のテンプレートの更新をサービスに反映させるのは手間がかかり、生成されたコードは その後拡張・保守されるうちにリファレンスからずれていくことが多い。この手法は、そうしたリファレンスアプリケーションが 存在して保守されていること、そしてその変更がエージェントの読めるコミットとして記録されていることを前提としている。

ドリフトが十分に単純な場合——ロガーの追加やロギングフレームワークの変更など——には、OpenRewrite のような決定的な codemod ツールでギャップを埋めることができ、同記事は AI に頼る前にそれらを検討するよう勧めている。同記事は エージェントの貢献を、正規表現ベースの codemod レシピが許すよりも動的なコーディングを修正に要するドリフト—— たとえば、ばらばらで標準化されていないログメッセージを構造化された形式に変えること——に位置づけている。この手法が どの程度確立しているかについては、一人の実践者による実験であり、意図的に単純化した例で試されたものである。著者は コミットによる範囲の絞り込みが良い影響をもたらしたと報告しているが、何らかの測定結果を示しているわけではない。

関連用語

Model Context Protocol, AI をリファレンスアプリケーションにつなぎ留める