Claude Codeがレガシーなコードベースをモダナイゼーションする実例

Anthropic・Claude・ダリオアモデイ
この記事は約5分で読めます。

本動画は、AnthropicのClaude Codeを用いてレガシーなCOBOLコードベースをモダナイゼーションする実践的なデモンストレーションである。AWSのメインフレーム・モダナイゼーション・デモリポジトリを使用し、約100ファイルから成るクレジットカード管理システムを対象に、まずドキュメント化フェーズでは専用のサブエージェントを作成し、94ファイル全てを分析してビジネスワークフローや依存関係を抽出、100ページ以上のドキュメントを1時間で生成した。次に移行・検証フェーズでは、COBOLの中核機能をJavaに移行する際、単なる構文変換を超えた適切なデザインパターンを持つ慣用的なJavaコードを作成し、複数のテストデータを用いてオリジナルのCOBOLコードと新しいJavaプログラムを比較検証することで、完璧なビット単位の忠実性を実現した。Claude Codeは30時間以上の自律動作が可能であり、より大規模なコードベースにも対応できる技術を示している。

Claude Code modernizes a legacy COBOL codebase
Watch how Claude Code helps modernize a mainframe codebase.Starting with code from an AWS Mainframe Modernization demo e...

Claude CodeによるCOBOLコードベースのモダナイゼーション

開発者がClaude Codeを使ってCOBOLコードベースをモダナイゼーションする方法を探っていきましょう。このデモの目的のために、AWSのメインフレーム・モダナイゼーション・デモリポジトリを使用します。これは約100ファイルから成る中規模のクレジットカード管理システムで、COBOLプログラム、コピーブック、JCLスクリプトが含まれています。

フェーズ1:発見とドキュメント化

サンプルのCOBOLコードベースにはほとんどドキュメントがありません。これはもちろん、重要なビジネスロジックや規制要件がドキュメント化されていないコードの中に埋め込まれているレガシーコードベースではよくあることです。コードを書いた開発者はとっくの昔に組織を去っており、COBOLに精通した開発者を雇うのは困難です。

まず、cloud code/agentコマンドを使って専用のサブエージェントを作成しました。これは私たちのCOBOLドキュメント化エキスパート兼翻訳者となります。サブエージェントはClaude Codeによって並行して呼び出すことができ、メインスレッドを汚染しないよう独自の分離されたコンテキストウィンドウで動作します。思考モードを有効にして、Claude Codeにコードベースのアーキテクチャを分析するよう依頼しました。

Claude Codeは94ファイル全てのToDoリストを作成し、ファイルが2回処理されることがなく、何も見逃されないよう進捗を追跡しました。Claudeが作成したドキュメントは、単純なコードコメントを超えるものでした。

例えば、利息計算プログラムCBAC4Cを見てみましょう。このプログラムが取引カテゴリー残高をどのように読み取り、アカウントグループごとに利率を検索し、フォールバック利率のビジネスルールを適用し、アカウントレコードを更新するかという、完全なビジネスワークフローを抽出しました。

Claudeは各ファイルに対してこれを行いましたが、さらにプレーンテキストとして2つのメモリファイルも作成しました。catalog.txtはCBAC04Cのような暗号的な名前を利息計算バッチプログラムに翻訳します。relationships.txtはパイプ区切り形式を使ってすべての依存関係をマッピングします。

これらのインデックスを使用して、Claudeはマーメイド図を生成しました。これは、取引入力から転記、利息計算を経て、最終的に顧客明細書に至るまでのデータフローを示す、日次バッチ処理ワークフローの完全なマップです。

このデモでは、Claude Codeは1時間連続して動作し、100ページ以上のドキュメントを作成しました。しかしClaude Codeは30時間以上自律的に動作することが可能であり、ここで使用された技術は、はるかに大規模なコードベースにもスケールします。

フェーズ2:移行と検証

COBOLコードベースを徹底的にドキュメント化した後、その中核機能の1つをJavaに移行するようClaudeに依頼しました。

ファイルを早まって編集することなく、Claudeが移行戦略全体を考え抜くことを確実にするため、プランニングモードに切り替えました。Claudeは以前CBAC4Cとして知られていたプログラムを分析し、改行処理や複数ファイルの調整といった複雑なCOBOLパターンを特定しました。

Claudeはこの機能の移行計画を5つのフェーズで策定しました。

1つ目は、プロジェクト構造の作成です。2つ目は、コピーブックからJavaクラスへのデータモデルの変換です。3つ目は、元のファイル形式と互換性のあるI/Oレイヤーの構築です。4つ目は、COBOL固有の動作を保持しながらビジネスロジックを変換することです。そして最後に、デュアルテストハーネスの作成です。1つは元のコードベースにGNU COBOL 3.2.0を使用し、もう1つはJava 17で実装します。

結果として得られたJavaコードは、単純な構文変換を超えるものでした。Claudeは適切なデザインパターン、エラー処理、ロギングを備えた適切なJavaクラスを作成しました。現代の開発チームが実際に保守できる慣用的なJavaです。

次は検証です。新しいJavaコードが、それが置き換えようとしているCOBOLコードと同じように動作することを確認するためです。

Claudeは複数のテストデータファイルを作成し、元のCOBOLと新しいプログラムの両方に対してそれらを実行しました。検証は最終的な出力だけでなく、中間計算、ファイル書き込み、データ変換も比較しました。結果は完璧なビット単位の忠実性でした。すべての計算、ビジネスルール、エッジケースが保持されました。

もちろん、このデモアプリケーションは、皆さんのレガシーCOBOLコードベースよりもはるかに小規模です。しかし、ここで使われているすべての技術はスケーラブルです。Claude Codeは、わずか12ヶ月前には単に不可能だったであろう確信と効率性をもって、開発者がコードベースをモダナイゼーションすることを可能にします。

コメント

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