AWS Transform for mainframe と GenU で COBOL プログラム説明書を作ってみよう - 前編: ドキュメント日本語化と依存関係図生成
2025-10-02 | Author : 皆川 元
はじめに
こんにちは、Mainframe Modernization Specialist Solution Architect の皆川元です。
AWS Transform for mainframe (ATX) を使うと、メインフレーム上の JCL や COBOL コードをドキュメント化したり、Java にリファクタリングすることができます。従来 COBOL プログラムの処理内容を理解するには COBOL スキルが必要だったところ、COBOL 未経験の開発者にも理解できるよう説明文が生成されるだけでも価値がありますが、ATX が出力するPDFは英文です。また、日本の SI の現場で使われているプログラム設計書には、文章による記述に加えて、各種関連図やフローチャート等の図表により、理解を促進する工夫が見られます。
本記事では、AWS の生成 AI サービス用サンプルアプリケーション Generative AI Use Case JP (GenU) を使って、ドキュメントを日本語化し、ドキュメントを補完する各種図表を生成する方法を紹介します。前編/後編の 2 回に分けてご説明しますが、今回は ATX が出力する COBOL プログラムのドキュメントの日本語化と、依存関係図の生成の手順についてです。
[前編] ドキュメント日本語化と依存関係図生成 (今回)
[後編] フローチャート等の図表の生成
ご注意
本記事で紹介する AWS サービスを起動する際には、料金がかかります。builders.flash メールメンバー特典の、クラウドレシピ向けクレジットコードプレゼントの入手をお勧めします。
builders.flash メールメンバー登録
builders.flash メールメンバー登録で、毎月の最新アップデート情報とともに、AWS を無料でお試しいただけるクレジットコードを受け取ることができます。
AWS Transform for mainframe (ATX) による分析とドキュメント化
ATX には、モノリス分解や Java へのリファクタリング、ビジネスルール抽出や 、リファクタした Java コードの品質を可読性などの面で向上する Reforge 等の機能がありますが、ここではコード分析とドキュメント化に絞って簡単に機能と操作を紹介します。
ここでは、AWS が GitHub 上に公開しているクレジットカード業務のサンプルアプリケーション CardDemo (リポジトリ、解説記事) のコードを使います。なお、ATX と対話するときに表示されるメッセージや画面は、以下に示す内容から変更になる可能性があります。
ATX で新しいジョブを作成する際に、一連の複数ステップの実行と、コード分析およびビジネスルール抽出の二者択一を促されます。以下の手順で操作すると、コード分析とドキュメント生成のみを実施するよう指示を与えることができます。
新しいジョブの作成
ワークスペース右上の [Create a job] を押下すると、新しいジョブを作成します。

質問に回答
まず作成するジョブの種別を尋ねられますので、“Mainframe Modernization”の番号を入力します。
次に、実行するステップを尋ねられます。「1」および「2」いずれも、コード分析とドキュメント生成では無いので、明示的に以下のように指示します。
Analyze Code and Generate technical documentation

内容を確認
確認された内容の通りで良ければ、同意してジョブの作成に進みます。

ドキュメントの日本語訳
翻訳対象のドキュメントを ATX の画面で表示し、PDF をダウンロードします。


チャットを選択

PDF ファイルをアップロード
クリップのアイコンをクリックして、ATX が生成した PDF ファイルをアップロードします。
以下の例のように「添付の PDF を日本語に翻訳して下さい。目次は含めません。COBOL の変数やキーワードは翻訳せず、そのまま残して下さい。」とプロンプトに入力し、送信します。

翻訳を開始
すると、このように翻訳が始まります。

PDF サイズが大きい場合
PDF のサイズが大きいと、このように途中で翻訳が中断される場合があります。

続行を指示
その場合は、このように「続けて下さい」と指示します。

翻訳を再開
そうすると、翻訳を再開し、中断した行と、その後続のテキストを翻訳します。

翻訳完了を確認
PDF の最後の部分まで翻訳されたことを確認します。

Tips
翻訳されたドキュメントを見ると「~かも知れない」「~のようである」のような不確かな表現が含まれている場合があります。このとき、翻訳対象のドキュメントを確認すると、該当箇所が “~ likely ~”, “~ may ~”, “~ could be ~”, “~ might ~”, “~ possibly ~” のようなあやふやな英語表現になっている場合があります。この事象は、COBOL プログラムが参照している COBOL コピーブックを解析対象に含めていなかったことに起因するケースが殆どです。変数名などのシンボルが COBOL コピーブックに定義されているとき、そのコピーブックが漏れていると、ATX がそのシンボルを特定できないため、上述のようなあやふやな表現になります。
コード分析後に [Missing files] タブを表示し、COBOL プログラムのコンパイル & リンクに必要なファイルが漏れていないことを確認しましょう。漏れが検出された場合は、そのファイルを含む分析対象の zip ファイルを作成し直し、分析し直します。
依存関係図の生成
ATX のコード分析 (Analyze code) 画面の右側ペインには、各タブ毎に以下のような情報が表示されます。
- All files: 分析した全ファイルの分類結果と、行数や循環複雑度等の属性
- Missing files: 分析したファイルから参照されているのに、その実体が分析対象の zip に含まれていなかったファイルの一覧
- Identically named: 同じ名前のファイルが zip 内に含まれていたとき、その一覧
- Duplicated IDs: COBOL プログラムの場合、PROGRAM ID が同一の複数のファイルが zip 内に含まれていたとき、その一覧(ファイル名が PROGRAM ID と異なる場合もある)
ファイルダウンロードが可能
上述の情報を含む分析結果は、画面に表示される内容を見るだけでなく、[Download] ボタン押下により、ファイルとしてダウンロードすることができます。

ダウンロードファイルを確認
zip ファイルを展開すると、以下のファイルが得られます。

ファイル内容
各ファイルの内容は以下の通りです。
ファイル
|
種別
|
内容
|
ATX 画面上で、対応する内容が表示されるタブ
|
---|---|---|---|
assets
|
CSV |
ファイル一覧: ファイル名、種別、循環複雑度、行数 |
All files |
classification
|
JSON |
ファイルの分類: パス、ファイル名、種別 |
All files |
dependencies
|
JSON |
ファイル間の依存関係 |
|
duplicatedIds
|
JSON |
プログラムIDが重複するファイル一覧 |
Duplicated IDs |
homonyms
|
CSV |
同名のファイルの一覧 |
Identically named |
missing
|
CSV |
依存関係により参照されているのに実物が無いファイルの一覧 |
Missing files |
ダイアグラム生成
GenU のメニューで [ダイアグラム生成] を選び、図の種類に [マインドマップ] を指定します。
COBOL プログラム CBSTM03A の依存関係図を生成する場合は、プロンプトに以下のように入力します。
CBSTM03Aの依存関係を視覚化して下さい。Systemへの依存関係は含めません。
改行後に dependencies ファイルの内容をコピー & ペーストし、[生成] を押下します。CardDemo のコード分析により得られた dependencies ファイル内の CBSTM03A 依存関係は以下の部分になります。本番コードを分析すると、 dependencies ファイルが大きくなるので、Python スクリプト等によって該当箇所を効率的に切り出すよう工夫すると良いでしょう。

dependencies ファイル内の CBSTM03A 依存関係
{
"dependencies": [
{
"dependencyType": "Call",
"name": "CBSTM03B.CBL",
"path": "cbl/CBSTM03B.CBL",
"type": "COB"
},
{
"dependencyType": "Call",
"name": "CEE3ABD",
"path": null,
"type": "System"
},
{
"dependencyType": "Copy",
"name": "COSTM01.CPY",
"path": "cpy/COSTM01.CPY",
"type": "CPY"
},
{
"dependencyType": "Copy",
"name": "CUSTREC.cpy",
"path": "cpy/CUSTREC.cpy",
"type": "CPY"
},
{
"dependencyType": "Copy",
"name": "CVACT01Y.cpy",
"path": "cpy/CVACT01Y.cpy",
"type": "CPY"
},
{
"dependencyType": "Copy",
"name": "CVACT03Y.cpy",
"path": "cpy/CVACT03Y.cpy",
"type": "CPY"
},
{
"dependencyType": "Write file",
"name": "HTML-FILE",
"path": "Global:FILE_DEFINITION:HTML-FILE",
"type": "FILE_DEFINITION"
},
{
"dependencyType": "Assignment clause",
"name": "HTMLFILE",
"path": null,
"type": "Missing Source File"
},
{
"dependencyType": "Close file; Open file; Write file",
"name": "STMT-FILE",
"path": "Global:FILE_DEFINITION:STMT-FILE",
"type": "FILE_DEFINITION"
},
{
"dependencyType": "Assignment clause",
"name": "STMTFILE",
"path": null,
"type": "Missing Source File"
}
],
"name": "CBSTM03A.CBL",
"path": "cbl/CBSTM03A.CBL",
"type": "COB"
}
依存関係図をダウンロード
依存関係図が生成されたら、必要に応じて [SVG] もしくは [PNG] を押下してダウンロードします。

まとめ
今回は、生成 AI を使って、ATX が生成するドキュメントを日本語化し、ATX のアウトプットも使いながら、プログラムの依存関係図を生成してみました。
プログラムの解読は集中力を要する作業であり、読んで理解できる文章として記述するにはそれなりの労力が必要でした。メインフレームに特化した生成 AI サービスであるATX の活用により、左記の作業は格段に効率化されます。
プログラムを AWS に移行するときに、メインプログラム本体のコードだけで無く、コピーブックやサブプログラムなど、関連するコード一式を移行対象に含めて計画する必要があります。grep コマンド等を使った文字列サーチによって、左記のような依存関係に関連する情報を集めるのは、検索対象の文字列を調整しながら何度もサーチする必要があり、効率的に実行するのが難しい作業でした。ATX のコード分析結果に含まれる依存関係を使うことにより、依存関係図も手軽に描画することができます。
後編では、フローチャート、データフロー図、ファイルレイアウト、CRUD 表を生成する方法を紹介します。お楽しみに!
筆者プロフィール
皆川 元
アマゾン ウェブ サービス ジャパン合同会社
メインフレームモダナイゼーション スペシャリスト ソリューションアーキテクト
新卒で入社した会社で七年半アセンブラープログラミングしていました。AWS サービスを活用したメインフレームモダナイゼーションを検討中のお客様や AWS パートナー様をご支援しています。好きなサービスは AWS Nitro System です。
