/note/tech

失われゆく「COBOL」技術、レガシーコードとの向き合い方をGitHubが解説:AIエージェントを使っ...

要約:

■ 1. レガシーコード問題の深刻化

  • COBOL人材の減少: プログラミング言語COBOLのソースコードが世界中の銀行・保険会社・政府などのシステムを動かしているが、それを理解する開発者を見つけることが困難になっている
  • 現役システムの維持困難: システム自体は今も動き続けているとしても、組織がその中身を理解しているとは限らない状況が生じている
  • ビジネス存続の問題: レガシーシステムは単なる技術的負債の問題ではなく、ビジネスの存続に関わる問題である
  • 専門知識不足の深刻化: 組織においてはCOBOLの専門知識不足が深刻になっている

■ 2. GitHubによる新しいアプローチの提案

  • GitHub Copilot活用: AIコーディングアシスタント「GitHub Copilot」を活用した3つのステップを紹介した
  • Microsoftチームの実践例: Microsoft Global Black Beltが実践したレガシーモダナイゼーションのアプローチに基づいている
  • 理解と再生の重視: ソースコードを単に置き換えるのではなく、理解し再生するための現実的なアプローチである
  • 汎用的な方法論: COBOLに限らず、さまざまなレガシーモダナイゼーションプロジェクトに応用できる体系的な方法である

■ 3. ステップ1:ソースコードを理解する

  • 考古学ツールとしてのAI: GitHub Copilotを考古学ツールとして活用し、失われた知識を発掘する
  • ビジネスロジックの整理: 業務上のビジネスロジック(処理内容)を整理する
  • 文書化の自動化: 読み取ったソースコードの内容をマークダウン形式で文書化する
  • 依存関係の識別: モジュール間の呼び出し関係や依存関係を自動的に識別する
  • コード整理: 無関係なコメントや古い修正履歴などを削除・整理し、必要に応じて補足コメントを追記する

■ 4. ステップ2:ソースコードを補強する

  • エンリッチメント段階: コードの意図を説明するコメントを補い、依存マップを作成する段階である
  • 属人化の解消: 属人化したロジックが誰でも読める資産に変わる
  • COBOL構造の理解: COBOLプログラムは識別部・環境部・データ部・手続き部の4つの構造に分かれている
  • 自然言語による理解: COBOLの構文を理解しなくても、AIに解析させることで自然言語で構造を理解できるようになる

■ 5. ステップ3:ソースコードを再生させる

  • 連携理解の段階: 個々のファイルの分析とエンリッチメントを終えた後、それらがどのように連携するのかを理解する必要がある
  • AIエージェントの活用: AIエージェントによる自動化ワークフローを構築する段階に移行する
  • オーケストレーションフレームワーク: Microsoft Global Black Beltのチームは複数の専門エージェントをオーケストレーションするフレームワークを構築した
  • 役割分担: 各エージェントは特定のジョブを持ち、連携させることで単一では対応し切れない複雑な処理を実現する

■ 6. 呼び出しチェーンマッピング

  • ファイル相互作用の図式化: ファイルの相互作用を図式化するプロセスである
  • 複数エージェントの連携: 1つのエージェントがCOBOLファイルを読み取り、別のエージェントがプログラム間の呼び出しを追跡し、また別のエージェントが視覚的に図式化する
  • システム全体マップの作成: 依存関係を手動でたどることなく、システム全体のマップを作成できる

■ 7. テスト駆動型モダナイゼーション

  • 三段階のテスト生成: 1つのエージェントがビジネスロジックを抽出し、別のエージェントがそのロジックを検証するテストケースを生成し、また別のエージェントがそれらのテストに合格するソースコードを生成する
  • セーフティーネット機能: テストは移行作業のセーフティーネットとして機能する

■ 8. 依存関係の最適化

  • ライブラリの置き換え: 最新の同等のものに置き換え可能なユーティリティークラスとライブラリを特定する
  • 代替可能性の確認: エージェントは使用しているCOBOLライブラリを分析し、代替ライブラリの有無を確認し、置き換え可能な部分を見つける

■ 9. AIによるモダナイゼーションの現実的課題

  • ワンクリック解決の否定: メインフレームの問題は1回のクリックで解決できるわけではない
  • 人間の関与の必要性: 検証のために人間が常に最新の情報を把握している必要がある
  • COBOLの固有性と複雑性: COBOLのソースコードは固有かつ複雑になっている
  • AIエージェントの発展途上: AIエージェントの活用はまだ初期段階にある
  • 長期的視点: 完全な自動化には少なくとも5年はかかる

■ 10. 従来の変換作業の問題点

  • 高額で長期間のプロジェクト: 従来は高額なコンサルタントを雇い、5年以上をかけて変換作業をしていた
  • メンテナンス不可能なコード: 最終的にはメンテナンス不可能なソースコードが生み出されるという現実があった

■ 11. AIアプローチの利点と可能性

  • 現実的なモダナイゼーション: AIを活用したアプローチはレガシーシステムの維持・刷新を従来よりも現実的なものに変える可能性を秘めている
  • 作業可能なコード生成: AIを使うことで、最終的に生成されるソースコードは開発者が実際に作業できるものになり得る