シリーズ全体の整理表

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シリーズを見る →