■ 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を使うことで、最終的に生成されるソースコードは開発者が実際に作業できるものになり得る