シリーズ全体の整理表
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フィールド | Java | COBOL |
|---|---|---|
appSetName | アプリケーション名 | システム名 |
artifactFileName | *.jar | *.cbl |
packageName | com.example.service | PROCEDURE(固定) |
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シリーズとともに活用することで、レガシーシステム全体を一枚の地図で見渡すことができます。可視化はゴールではなく「理解のスタート」です。地図を手に、次の設計へ進んでください。