可視化はゴールではなく、理解のスタートに過ぎません。6回かけて作ってきた地図を、次はJava移行やクラウドリフトの判断材料としてどう使うか、そこまで見届けたくてこのまとめを書きました。

シリーズ全体の整理表

COBOLコード可視化シリーズ総括図

図1: COBOLコード可視化 — Division図・コールグラフ・Jarviz 3Dの3段階まとめ

3段階の可視化アプローチを目的・ツール・得られる情報の観点で整理します。

段階可視化の種類主なツール得られる情報用途
1 Division構造図 PlantUML / Mermaid プログラム骨格・COPY句・CALL依存 プログラム単位の全体把握・ドキュメント化
2 Paragraph Call Graph Python(正規表現)+ Graphviz PERFORM呼び出し連鎖・デッドコード候補 影響範囲調査・リファクタリング優先度判断
3 Jarviz 3Dマップ JSONL + jarviz-graph 複数プログラムを横断した依存の全体俯瞰 システム全体の構造把握・Java版との統合

JavaシリーズとのJSONL共通化

Javaシリーズ・COBOLシリーズの最大の特徴は、同じJSONLフォーマットでCall Graph情報を統合できる点です。 フィールドのマッピングをまとめます。

JSONLフィールドJavaCOBOL
appSetNameアプリケーション名システム名
artifactFileName*.jar*.cbl
packageNamecom.example.servicePROCEDURE(固定)
classNameクラス名PROGRAM-ID
methodNameメソッド名Paragraph名(呼び出し先)
callerClassName呼び出し元クラス名呼び出し元PROGRAM-ID
callerMethodName呼び出し元メソッド名呼び出し元Paragraph名

💡 混在グラフの実用的な価値

JavaのWebフロントエンドからCOBOLバッチ処理まで、cat java.jsonl cobol.jsonl > all.jsonlの1行で統合グラフを生成できます。「どのJavaサービスが最終的にどのCOBOLプログラムを呼ぶか」が1画面で確認できるのは、モダナイゼーション計画の立案に非常に役立ちます。

モダナイゼーションへの展望

可視化はモダナイゼーションの「現状把握フェーズ」の道具です。 Call Graphが完成したあとに着手できる次のアクションを整理します。

① Java移行
Paragraph単位でJavaメソッドに対応させる移行マッピングを作成。Call Graphで依存が少ない末端Paragraphから順に移行すると安全。
② クラウドリフト
COPY句依存・CALL文依存を整理し、疎結合なプログラム群を特定。先行してコンテナ化・サーバーレス化できる候補を選別。
③ マイクロサービス分割
Jarvizの3Dマップで密なクラスターを特定し、サービス境界の候補を探す。クラスター間の依存を断ち切るためのAPIを設計。
④ デッドコード削除
到達不能Paragraphを一覧化してレビュー。削除することでコードベースを削減し、移行コストを低下させる。

次のステップ

本シリーズで構築したCall Graph解析基盤は、さらに以下の方向に発展できます。

  • CI/CD組み込み: プルリクエスト時にCall Graphの差分を自動生成し、影響範囲をレビューに表示する
  • グラフDB活用: Neo4j などにCall Graphを格納し、Cypher クエリで「特定Paragraphの全依存パス」を検索する
  • ANTLR文法の活用: 正規表現ベースより精度の高い構文解析が必要な場合はANTLR4のCOBOL文法を使う
  • コマーシャルツール連携: MicroFocus・IBM Z Open Editorなどの商用IDEが提供するCall Graph機能と組み合わせる

シリーズ完走お疲れ様でした

Javaシリーズとともに活用することで、レガシーシステム全体を一枚の地図で見渡すことができます。可視化はゴールではなく「理解のスタート」です。地図を手に、次の設計へ進んでください。

← COBOLシリーズ一覧に戻るJavaシリーズを見る →

COBOL可視化まとめでよくある誤り

可視化シリーズを通じて理解を深めた後の活用段階でも、ツール選定や出力結果の解釈に誤りが生じやすいポイントがあります。

誤り/失敗パターン何が起きるか正しい対処/防止策
1つの可視化ツールだけで全体を把握しようとするDivision構造・Call Graph・3D可視化それぞれの強みが活かせず、把握漏れが生じるDivision構造図→Paragraph Call Graph→Jarviz 3Dの順番で段階的に使い分けて全体像を構築する
可視化結果を最終成果として扱い、コードを読まない可視化では表現できない条件分岐やデータ操作の詳細が見落とされ設計ミスにつながる可視化は「理解のスタート」と位置づけ、重要な処理フローは必ずソースコードで確認する
古いCOBOLソースに対して正規化をせずに可視化ツールを適用する固定形式フォーマットや継続行が残ったまま解析され誤ったグラフが生成される可視化前に必ずnormalizationシリーズの正規化処理を適用してからツールを実行する