ワンダーロボ・リバースによるCOBOLコード解析と設計書生成
ワンダフルフライ株式会社(東京都中央区日本橋)は、COBOLをはじめとするレガシーシステムのブラックボックス化という社会的課題に対し、AIによる自動解析・設計書生成を実現するサービス
「ワンダーロボ・リバース」 を提供しています。
はじめに
COBOL(Common Business-Oriented Language)は、1959年に開発されて以来、金融機関、保険会社、官公庁、大企業の基幹業務システムを支え続けてきた歴史あるプログラミング言語です。
COBOLコードの特徴と技術的課題
1. COBOLの構造的特徴
4つのDIVISION構造
COBOLプログラムは、以下の4つのDIVISION(部)で構成されます:
- IDENTIFICATION DIVISION(識別部):プログラムのメタ情報
- ENVIRONMENT DIVISION(環境部):実行環境
- DATA DIVISION(データ部):データ定義
- PROCEDURE DIVISION(手続き部):処理ロジック
ファイルベースのデータ処理
現代のシステムがリレーショナルデータベース(RDB)を前提とするのに対し、COBOLはINDEXED FILE(索引ファイル)やSEQUENTIAL FILE(順次ファイル)を直接操作します。
INDEXED FILEは、レコードキーを指定してランダムアクセスが可能なファイル構造で、現代のデータベースの主キーに相当します。しかしデータベース設計との対応付けが困難です。
SECTION/PARAGRAPH構造
COBOLは、SECTION(節)とPARAGRAPH(段落)で処理を構造化します。しかし、PERFORM文による呼び出しやGO TO文による分岐が多用され、処理フローが複雑に絡み合います。
例えば、メイン処理のSECTIONから、複数のPARAGRAPHをPERFORM文で呼び出し、処理区分の値に応じてEVALUATE文で分岐する構造が一般的です。このような構造は、処理フローを追跡するのが困難です。
2. COBOLリバースエンジニアリングの技術的難しさ
難しさ1.:データ型とPIC句の複雑さ
COBOLは、PIC句(Picture Clause)でデータ型と長さを定義します。現代の言語とは異なる概念です。
- PIC X(n):文字型(nバイト)
- PIC 9(n):数値型(n桁)
- PIC S9(n) PACKED-DECIMAL:符号付きパック10進数
これらの型定義を、現代のデータベース設計(VARCHAR、INTEGER、DECIMALなど)に変換するには、深い理解が必要です。
難しさ2.:COPY句による外部依存
COBOLは、COPY句で外部定義ファイル(コピーブック)を読み込みます。実際のレコード構造が別ファイルに定義されているため、単一ファイルだけでは全体像が把握できません。
例えば、FD(File Description)でファイルを定義する際に、COPY句でコピーブックを参照するため、コピーブックの内容を確認しないと、データ構造が分からないため、解析が困難です。
難しさ3.:手続き型プログラミングの複雑性
COBOLは、手続き型プログラミングで、処理が順次実行されます。オブジェクト指向の概念がなく、状態管理がフラグ変数に依存します。
例えば、エラーフラグ、終了フラグ、更新終了フラグ、削除フラグなどの複数のフラグ変数で状態を管理するため、これらのフラグの遷移を追跡し、業務ロジックを抽出するには、膨大な時間と労力が必要です。
難しさ4.:日本語コメントの文字化け
古いCOBOLコードは、EBCDIC(拡張2進化10進コード)で保存されていることが多く、UTF-8に変換すると文字化けが発生します。
この文字化けを解消し、コメントから業務意図を読み取るのは困難です。
難しさ5.:バッチ処理の複雑な制御フロー
COBOLは、バッチ処理が中心です。ファイルの読み込み、ソート、集計、更新が複雑に絡み合います。
典型的な処理フローとしては、ソート処理をCALLし、入力ファイルを読み込み、処理区分(追加/更新/削除)に応じて分岐し、
マスタファイルやトランザクションファイルを更新し、エラー処理とログ出力を行うという流れが一般的です。
この処理フローを、現代の設計書形式(画面遷移図、ER図、処理フローチャート)に変換するには、専門知識が必要です。
ワンダーロボ・リバースの技術的アプローチ
1. AIによる構造的解析
COBOL特有の構文を自動認識
ワンダーロボ・リバースは、COBOLのDIVISION構造、SECTION/PARAGRAPH構造、PERFORM文、EVALUATE文などを自動認識し、処理フローを抽出します。
解析結果として、プログラム名、主要処理、ファイル操作(入力、更新、参照)などを自動抽出します。
ファイル定義の自動抽出
INDEXED FILE、SEQUENTIAL FILEの定義を解析し、レコードキー、アクセスモード、ファイルステータスを自動抽出します。
抽出結果として、ファイル名、組織(INDEXED/SEQUENTIAL)、アクセスモード(DYNAMIC/RANDOM/SEQUENTIAL)、レコードキーなどの情報を自動抽出します。
2. 業務ロジックの自動抽出
処理フローの階層化
COBOLのPERFORM文による呼び出し関係を解析し、処理フローを階層化します。
抽出結果の例:
1. システム日時を取得する
2. 全てのファイルをオープンする
3. 入力ファイルの処理区分の値によって処理内容を分岐する
3-1. 追加処理(件数検証・管理ファイル参照・番号生成・マスタ登録)
3-2. 更新処理(キー設定・START処理・レコード読込・データ更新)
3-3. 削除処理(論理削除フラグ設定・削除日時記録)
条件分岐の自動抽出
IF-ELSE-END-IF、EVALUATEなどの条件分岐を解析し、業務ルールを抽出します。
抽出例:
条件: 処理区分 = "1"
→ 処理: 新規データをマスタファイルに登録
条件: 処理区分 = "2"
→ 処理: 既存データを更新
条件: 処理区分 = "3"
→ 処理: 既存データを削除(論理削除)
3. データモデルの自動構築
レコード構造の解析
DATA DIVISIONの定義を解析し、レコード構造を抽出します。
抽出結果の例:
レコード: 入力レコード
フィールド: 削除区分 (PIC X(01)) - 削除フラグ
フィールド: コード1 (PIC X(05)) - 第1キー項目
フィールド: コード2 (PIC X(11)) - 第2キー項目
フィールド: コード3 (PIC X(06)) - 第3キー項目
フィールド: 処理区分 (PIC X(01)) - 処理種別
ファイル間の関係性抽出
複数のファイル(マスタファイル、管理ファイル、トランザクションファイルなど)の関係性を解析し、データモデル図を自動生成します。
4. エラーハンドリングの自動抽出
COBOLは、FILE STATUSやINVALID KEYでエラーを処理します。これらのエラーハンドリングロジックを自動抽出し、設計書に反映します。
抽出例:
エラー条件: ファイルステータスが非ゼロ
→ 処理: エラーメッセージをログに出力
→ 処理: 異常終了フラグを設定
→ 処理: 処理を異常終了
5. 標準化されたExcel形式での出力
Excel形式の設計書を自動生成
ワンダーロボ・リバースは、解析結果をExcel形式の標準化された設計書として自動生成します。
日本のIT現場に最適な形式
Excel形式での出力は、日本のIT現場において大きなメリットがあります:
最もなじみのある形式:日本のIT現場では、Excelが最も広く使われており、誰でもすぐに開いて確認できる
編集・共有が容易:Excel形式であれば、必要に応じて手動で修正や追記が可能
印刷・配布が簡単:会議資料やレビュー資料としてそのまま使用可能
バージョン管理が容易:Excelファイルは一般的なバージョン管理システムで管理しやすい
標準化されたフォーマット:画面設計書、帳票レイアウト、テーブル定義書、処理フローチャートなど、すべて標準化されたExcel形式で出力
生成される主なドキュメント
- 画面設計書(項目・レイアウト・編集仕様)
- テーブル定義書(型・PK・制約・インデックス)
- バッチ処理設計書(処理フロー)
- 処理フローチャート(条件分岐・更新処理)
- 画面遷移図・構成図
PM・開発者・業務担当者・監査部門など、幅広い関係者が読みやすい形式で提供されます。
解決する課題と顧客へのメリット
課題1.:設計書がない/古い設計書と実装が一致しない
従来の対応:
- 手作業でコードを読み、設計書を作成
- 数週間~数ヶ月の工数が必要
- 人的ミスが発生しやすい
ワンダーロボ・リバースの解決:
- 実際のソースコードから自動生成するため、実装に基づいた設計書を生成
- 数時間~数日で完了(従来の1/10以下の工数)
- AIによる自動解析で人的ミスを排除
- Excel形式で出力:日本のIT現場で最もなじみのある形式で提供
- COBOLソースに合わせてAIチューニング
顧客へのメリット:
最新の実装状態を反映した設計書を短期間で取得
設計書作成のコストを約90%削減
設計書の品質が向上
Excel形式で出力されるため、誰でもすぐに開いて確認・編集・共有が可能
会議資料やレビュー資料としてそのまま使用でき、現場での活用が容易
課題2.:COBOLの専門知識を持つ人材が不足
従来の対応:
- COBOLのベテランエンジニアに依頼
- 人材確保が困難で、プロジェクトが停滞
ワンダーロボ・リバースの解決:
- COBOLの専門知識がなくても解析可能
- AIがCOBOL特有の構文を自動認識
- 標準化された設計書形式で出力(幅広い関係者が理解可能)
顧客へのメリット:
COBOLの専門知識がなくても、システム構造を把握可能
若手エンジニアでも設計書を理解できる
人材不足によるプロジェクト停滞を解消
課題3.:業務ロジックが複雑で理解困難
従来の対応:
- コードを一行ずつ読み、処理フローを追跡
- PERFORM文やGO TO文の呼び出し関係を手作業で整理
- 数週間かけてようやく全体像を把握
ワンダーロボ・リバースの解決:
- 処理フローを階層化して自動抽出
- 条件分岐とループを自動識別
- 業務ロジックを日本語で可視化
顧客へのメリット:
複雑な処理フローを階層的に理解可能
業務ロジックを日本語で確認できる
改修時の影響範囲を正確に把握
課題4.:データベース設計との対応付けが困難
従来の対応:
- INDEXED FILEの定義を手作業でデータベース設計に変換
- レコードキーと主キーの対応付けが困難
- ファイル間の関係性を手作業で整理
ワンダーロボ・リバースの解決:
- ファイル定義を自動抽出し、データベース設計に変換
- レコードキーを主キーとして自動識別
- ファイル間の関係性を自動解析
顧客へのメリット:
データベース移行時の設計作業を効率化
ファイル構造とデータベース設計の対応関係を明確化
データ移行のリスクを低減
課題5.:再構築プロジェクトの要件定義が進まない
従来の対応:
- 「今のシステムはどう動いているの?」という質問に答えられない
- 要件定義が長期化し、プロジェクトが遅延
ワンダーロボ・リバースの解決:
- 現行システムの動作を設計書で可視化
- 業務ロジックを日本語で説明
- 画面遷移図、処理フローチャートを自動生成
顧客へのメリット:
現行システムの動作を正確に把握
要件定義の効率が向上
再構築プロジェクトの計画が立てやすくなる
技術的な特色と優位性
1. COBOL特有の構文解析
DIVISION構造の自動認識
ワンダーロボ・リバースは、COBOLの4つのDIVISIONを自動認識し、それぞれの役割を理解します。
- IDENTIFICATION DIVISION:プログラムのメタ情報を抽出
- ENVIRONMENT DIVISION:ファイル定義、入出力装置を抽出
- DATA DIVISION:変数、レコード構造を抽出
- PROCEDURE DIVISION:処理ロジックを抽出
SECTION/PARAGRAPH構造の解析
SECTIONとPARAGRAPHの階層構造を解析し、処理の呼び出し関係を自動抽出します。
PERFORM文の呼び出し関係解析
PERFORM文による処理の呼び出し関係を解析し、処理フローを階層化します。
例えば、メイン処理から入力処理を呼び出し、処理区分に応じて追加処理、更新処理、削除処理を呼び出し、さらに各処理からエラーチェック処理、ファイル読み込み処理などのサブルーチンを呼び出すという階層構造を自動抽出します。
2. ファイル操作の自動抽出
INDEXED FILEの解析
INDEXED FILEの定義を解析し、レコードキー、アクセスモード、ファイルステータスを自動抽出します。
ファイル操作の自動識別
READ、WRITE、REWRITE、DELETE、STARTなどのファイル操作を自動識別し、データ操作の種類を判定します。
抽出結果として、操作の種類(順次読み込み、更新、削除など)と、エラー条件(AT END、INVALID KEYなど)を自動抽出します。
3. 業務ロジックの自動抽出
条件分岐の自動識別
IF-ELSE-END-IF、EVALUATEなどの条件分岐を自動識別し、業務ルールを抽出します。
抽出結果として、条件(処理区分="1"、"2"、"3"など)と、それぞれの条件に対応する処理(新規登録、更新、削除など)を自動抽出します。
ループ処理の自動識別
PERFORM UNTIL、PERFORM VARYINGなどのループ処理を自動識別し、繰り返し条件を抽出します。
抽出結果として、ループの条件(カウンタが指定値に達するまで、エラーフラグが設定されるまでなど)と、ループ内の処理内容を自動抽出します。
4. エラーハンドリングの自動抽出
エラー条件の自動識別
FILE STATUS、INVALID KEY、AT ENDなどのエラー条件を自動識別し、エラーハンドリングロジックを抽出します。
抽出結果として、エラー条件(FILE STATUSが非ゼロ、INVALID KEY、AT ENDなど)と、それぞれのエラーに対する処理(エラーメッセージの出力、異常終了フラグの設定、処理の異常終了など)を自動抽出します。
5. データモデルの自動構築
レコード構造の自動抽出
DATA DIVISIONの定義を解析し、レコード構造を自動抽出します。
抽出結果として、レコード名、フィールド名、PIC句(データ型と長さ)、フィールドの説明などを自動抽出します。
ファイル間の関係性自動抽出
複数のファイルの関係性を解析し、データモデル図を自動生成します。ファイル間のキー参照関係や、データの流れを自動抽出します。
実際の解析結果例
システム概要の自動抽出
解析結果として、システム名、主要機能、対象ユーザー、処理方式などの情報を自動抽出します。
業務ロジックの自動抽出
解析結果として、処理フローを階層化して抽出します。例えば、システム日時の取得、ファイルのオープン、処理区分に応じた分岐(追加/更新/削除)、各処理の詳細ステップ(検証、読み込み、書き込み、更新など)を階層的に整理します。
データモデルの自動抽出
解析結果として、ファイル名、組織(INDEXED/SEQUENTIAL)、アクセスモード、レコードキー、主要フィールドなどの情報を自動抽出します。
FreeCodeとの連携による設計から再構築までを連続的な支援
ワンダーロボ・リバースは、当社のAIアプリ自動生成サービス「AI Freecode Service」と連携しています。
再構築プロセスの自動化
1. COBOLコードの解析(ワンダーロボ・リバース)
ソースコードから設計書を自動生成
2. 設計書の活用(AI Freecode Service)
生成された設計書を基に、次世代Webシステムを自動構築
3. 一気通貫の実現
レガシーシステムからモダンシステムへの移行を自動化
顧客へのメリット
設計書はゴールではなく、新システム移行のスタート地点
レガシーからモダン環境への移行をスムーズに実現
再構築プロジェクトの期間を大幅に短縮
ご利用対象
- COBOLシステムを保守する企業・自治体
設計書がない、古い設計書と実装が一致しない
COBOLの専門知識を持つ人材が不足
- 情報システム部門
社内システムの仕様把握に困っている
再構築プロジェクトの要件定義が進まない
- SIer・開発会社
入札・再構築提案で仕様書を揃えたい
COBOLシステムの解析に時間がかかりすぎる
- プロジェクトマネージャー
設計書がなく見積不能
現行システムの動作を正確に把握したい
- 監査・セキュリティ部門
システム構造の把握が必要
セキュリティリスクの評価に設計書が必要
ご利用の流れ
1. ヒアリング
- 対象システムの概要確認
- 解析範囲の決定
2. ソースコードのご提供
- COBOLソースファイル
- コピーブック(COPY句で参照されるファイル)
- 関連する設定ファイル
3. AI解析の実行
- 構造分析(DIVISION、SECTION、PARAGRAPH)
- ファイル定義の抽出
- 業務ロジックの抽出
- データモデルの構築
4. 成果物の納品
- Excel形式の設計書
- JSON形式の構造化データ
5. 再構築支援(オプション)
- FreeCodeサービスで新システムを自動生成
その他サービス
- COBOL以外の解析対象言語
COBOL以外のレガシー言語(PowerBuilder、VB6、VBAなど)にも対応
- 業務フロー自動生成
複数プログラム間の呼び出し関係を解析
システム全体の業務フローを自動生成
- コード品質診断
コードの複雑度、保守性、セキュリティリスクを自動診断
まとめ
COBOLレガシーシステムのリバースエンジニアリングは、技術的に非常に困難な作業です。しかし、AIを活用した自動解析ツール「ワンダーロボ・リバース」により、以下の課題を解決できます:
- 設計書の自動生成:実装に基づいた設計書を短期間で生成
- 業務ロジックの可視化:複雑な処理フローを階層化
- データモデルの自動構築:ファイル構造をDB設計に変換
- 人材不足の解消:COBOLの専門知識がなくても解析可能
- 再構築プロジェクトの加速:要件定義から新システム構築まで一気通貫
ワンダーロボ・リバースは、レガシー資産の可視化とモダナイズを支援します。
会社概要
会社名:ワンダフルフライ株式会社(Wonderful Fly Co., Ltd.)
所在地:東京都中央区日本橋小伝馬町4-2 VORT日本橋本町7F
事業内容:AIアプリ自動生成「AI Freecode Service」、CRM「ProSales」、ログ分析「LogWatch」など AI×DX事業を展開
URL:https://www.wonderfulfly.com
本件に関するお問い合わせ
ワンダフルフライ株式会社
E-mail:sales@wonderfulfly.com
URL:https://www.wonderfulfly.com
サービス詳細:https://www.saasforce.co.jp/reverse/