AIのCOBOL→Java移行、分岐網羅91.9%の検証手法

ソースコードが表示されたノートパソコンの画面 AI

COBOL(1960年代から金融機関や官公庁の基幹システムで使われてきたプログラミング言語)で書かれた古い業務システムを、AIエージェント(人間の指示を受けながら自律的に作業を進めるAIの動作方式)でJavaに書き換える取り組みが各所で進んでいます。ただしAIが生成したコードには、見た目は正しく動いても細部にバグが紛れ込むケースが指摘されてきました。Ferenczi氏らの研究チームは、移行後のJavaコードをCOBOL側と自動で突き合わせて検証する手法「Locksmith Loop」を発表し、分岐網羅率91.90%という具体的な数値で移行品質を裏付けました。

背景と文脈

COBOLは半世紀以上前に作られた言語ですが、銀行の勘定系や保険の契約管理など止められない基幹システムで今も現役です。長年の改修でロジックが複雑化している一方、扱える技術者は年々減っています。そこでJavaなど保守しやすい言語へAIで自動移行させる需要が急速に高まりました。

問題は検証の難しさです。AIエージェントが生成したJavaコードは文法的に正しくコンパイルが通り、用意したテストケースにも合格しやすい一方、元のCOBOLが持っていた細かい分岐条件や例外処理を見落とすことがあります。特に金融システムでは、端数処理や特定条件下でのみ発生する分岐が1つ漏れるだけで、実損害につながりかねません。表面的なテストが通っただけでは「移行が正しい」と言い切れない構造的な課題がありました。

従来の移行検証は、人間がテストケースを書き足しながらカバレッジを地道に広げる方法が主流でした。しかし数千行規模のCOBOLプログラムを人手で網羅するのは非現実的な工数がかかります。今回の研究チームは、この検証作業自体をAIエージェントに任せることで、移行の速度と品質保証を両立させようとしています。

技術/ビジネス面

データセンターのサーバーラック
Photo by GuerrillaBuzz on Unsplash

Locksmith Loopは、COBOLとJavaの両方の実装にログ出力の仕込み(インストゥルメンテーション)を行い、実行経路を追跡できる状態にした上でAIエージェントに探索させる仕組みです。まず「witness search」と呼ぶ手法で、まだ実行されていない分岐を通るような入力を探します。探索が行き詰まった場合は、入力に意図的な小さな変更を加えて反応の違いを見る「ミューテーションテスト」を使い、探索の壁を突破します。

それでも突破できない箇所は「locked paragraphs(ロックされた手続き)」として切り分け、人間が確認すべき対象を明確にします。この手法を430行から4114行までの3つの検証対象に適用したところ、オープンソースの2プログラムではほぼ完全な網羅を達成し、社内の実運用システムを模した検証環境でも分岐網羅率91.90%に到達しました。さらに、合格したテストケースすべてでJavaの出力がCOBOL側の参照結果と一致する「決定的な整合性チェック」をクリアしています。

ここで重要なのは、判定基準を別のAIによる評価に頼っていない点です。AIに「このコードは正しそうか」を判断させる方式は、判定自体が誤る可能性を残します。Locksmith Loopは同じ入力をCOBOLとJava双方で実際に実行し、出力を機械的に突き合わせるため、判定結果に曖昧さが残りません。検証はいずれも特別なGPUを必要としない、通常のサーバー環境(コモディティハードウェア)で実行できる設計です。

これからどうなるか

AIによるコード移行ツールは今後さらに普及が見込まれますが、生成したコードをどう検証するかは各社共通の課題です。今回の研究が示すのは、AIが生成する側とは別に、決定的な基準(オラクル)で答え合わせをする仕組みを組み合わせる重要性です。金融や保険など、バグが直接損失につながる業界では特に有効な設計思想といえます。

開発者の視点では、COBOL移行に限らず、自分のプロダクトでAIによるコード変換・自動リファクタリングを導入する際、生成側と検証側を分離し網羅率で品質を可視化する構成はそのまま応用できます。CIパイプラインに分岐網羅率のしきい値を組み込むだけでも、AI生成コードの品質担保に近づけるはずです。旧言語からの移行だけでなく、ライブラリの大規模バージョンアップやフレームワーク間の書き換えといった作業にも、同じ「生成はAI、判定は決定的な仕組み」という分業パターンは転用できるでしょう。

まとめ

AIによるCOBOL移行は実用段階に入りつつありますが、生成コードの信頼性を数値で証明する検証手法が不可欠です。Locksmith Loopは分岐網羅率91.90%とCOBOL・Java間の整合性チェックという具体的な成果で、AI移行の品質保証に道筋を示しました。

参考リンク

アイキャッチ画像: Photo by Jantine Doornbos on Unsplash

タイトルとURLをコピーしました