
5年前に誰かが書いた業務システムのコードを引き継ぐことになったとします。仕様書はあります。コードもあります。しかしその間にあったはずの「この要件はこのクラスで実装されている」という対応関係が、どこにも残っていません。
仕様書のある一文を読んで、そのとき何を書いたのか、当の開発者でも思い出せない。検索しても、それっぽい名前のクラスが10個ヒットして、結局どれが本命か分からない。
似た場面が、いろんな現場で起きているはずです。要件と実装をつなぐリンクは、最初は誰かの頭の中にあって、時間が経つと失われ、コードの修正のたびにずれていきます。手作業で維持するのは大変で、しばしば諦められます。
これを自動でなんとかしたい、という研究は古くからあります。文書とコードに含まれる単語の重なりを使ったり、文章を埋め込みベクトルに変換して比べたり。最近はもちろん、大規模言語モデル(LLM)に「これとこれ、対応してる?」と聞かせてみる、という素直な試みも増えています。
ただ素直にやると、コストが膨らみ、根拠の薄い「もっともらしい」回答が混じる問題が残ります。
本記事では、要件とコードを自動で対応付ける手法を紹介します。3つの工夫の組み合わせで、精度を上げながらコストを下げるアプローチです。あわせて、その設計から抽出できる3つの再利用可能なパターンを示し、スキルにして共有します。