Serverless Operations, inc

>_cd /blog/id_rzqyvw07w

title

メインフレーム移行の味方になる「AWS Transform for mainframe」のハンズオンをやってみた

summary

メインフレームと聞くと企業の基幹業務を支える巨大な規模のシステムを連想するのではないでしょうか。実際このようなメインフレームをモダナイゼーションすることで、さらなる企業のイノベーションを起こすための取り組みが行われてきています。

長い間企業の重要な業務を支えてきた業務ロジックをどのようにして扱い、どのようにクラウドに移管できるかという悩みも絶えず行われてきている中、本日は「AWS Transform for mainframe」というサービスのハンズオンを実施してみたのでその内容を共有します。

AWS Transform for mainframe とは?

まずこのサービス名を初めて耳にする方も多いのではないでしょうか。昨年(2024年)の re:Invent にて発表され、元々「Amazon Q Developer's mainframe modernization capabilitie」としてプレビューされていたものが、2025年5月に「AWS Transform for mainframe」としてGAされました。他にも、.NETやVMwareもリリースされています。

名前から想像できるように、一言で言えばIBMメインフレームで使われるCOBOLやJCL(Job Control Language) をJava コードに変換してくれるツールですが、コード変換のみならず移行作業の強力な味方となる様々な機能が付いているのでその辺りをハンズオンで体験していきます。

特記すべきことは、Amazon Q Developer が活用された豊富な機能が提供されている点と、その成果物が想像以上に精度がよく実用的である点です。

  • コード分析
  • 技術ドキュメンテーション
  • ビジネスドキュメンテーション
  • モダナイゼーションに必要な作業プランニング
  • コード分解・リファクタリング・コード再構成と最適化

その他デプロイ・各種セットアップを行うための成果物作成も含まれています。

ハンズオンの進め方

以下URLのハンズオンを実施していきます。まずは AWS Management Console にて AWS Transform を有効化し、ユーザーを作成して進めます。

初期セットアップを済ませると、以下のように AWS Transform for mainframe 専用のアプリに飛べる URL が発行されます。現在、 us-east-1 および eu-central-1リージョンでのみ利用できるのでご参考ください。

Workspace を作成し、ハンズオンの手順に沿って進めていきます。「Kick off modernization」にて AWS アカウントおよび S3 を連携し、S3 サンプルプロジェクトの zip を指定してアップロードすることで分析を進めることができるようになります。

この記事では、メインフレームのモダナイゼーション作業を想定し、ハンズオンの「ジョブ1:ウェーブプランニングによる分析」を実施し、以下の部分の詳細を見ていきます。

  • コード分析
  • 技術ドキュメンテーション
  • ビジネスドキュメンテーション
  • コード分解
  • マイグレーションウェーブプラン

コード分析

Workspaces を開き、サンプルプロジェクトの aws-mainframe-modernization-carddemo を zip ファイルでダウンロード、初期セットアップで連携した S3 バケットにアップロードして、分析対象に指定します。「Send to AWS Transform」を押してしばらくするとファイルが自動的に読み込まれ、ソースコードのファイル種別と行数が表示されます。

一覧だけでなく、可視化して表示することもできます。

これらの情報を基本として、以降のステップを進めていきます。

技術ドキュメンテーション

メインフレームのモダナイゼーションにおける難しい点として、技術的な仕様がブラックボックスになっていたり、特定のベンダーや人に依存した形でなかなかその詳細が見えづらいことが挙げられます。業務要件がわかっていても、断片的な情報はソースコードをリバースして解読するといったアプローチができるとはいえ、なかなか効率が良くないものです。ここで、AWS Transform for mainframe は前項の「コード分析」で分析した情報を元に、対象となるソースコードを指定してハイレベルなところから詳細までの仕様書を自動作成してくれるところが特筆すべきポイントになります。

以下のように、COBOL と JCL のコードをそれぞれ選択し、技術ドキュメントの作成を進めてみます。

しばらくすると自動作業が完了し、出力された S3 に技術ドキュメントが置かれます。ダッシュボード上でもファイル名をクリックして確認することができます。生成されたドキュメントを確認してみると、まず最初のページはこのようになっています。ちゃんとした AWS のホワイトペーパーのような技術仕様書が出来上がっています。

以下のように、目次もきちんと生成されていて、ドキュメントの全体的な構成が把握しやすいです。

ドキュメントの最初の項目は、全体的な概要について書かれています。

  1. このプログラムの概要 1.1. プログラム名

CBSTMO3A.CBL

1.2. 主な目的

CBSTM03A は、トランザクションデータから口座明細書を生成するバッチ COBOL プログラムです。 出力形式は プレーンテキスト および HTML の2種類に対応しています。 このプログラムは取引レコードを処理し、顧客情報・口座情報・クレジットカード取引のサマリーを含む整形済みの明細書を作成します。

1.3. ビジネス上の位置づけ

このプログラムは CardDemo アプリケーション内で動作し、クレジットカード管理システムの一部を構成しています。 金融サービス分野において、クレジットカード顧客向けの明細書作成機能を提供します。 本プログラムはレポート生成および顧客コミュニケーションのワークフローに組み込まれており、 銀行が顧客に対して取引履歴、口座残高、その他関連する財務情報をまとめた詳細な口座明細を提供できるようにします。

1.4. 主な機能

  • 二重出力形式:プレーンテキストおよび HTML 形式の明細書を生成し、異なる表示ニーズに対応
  • トランザクション処理:取引ファイル、顧客参照ファイル、顧客ファイル、口座ファイルなど、複数のファイルから取引データを読み込み・処理
  • 明細書フォーマット生成:顧客情報、口座情報、取引サマリーを含む整形済み明細書を作成
  • 多次元データ処理:カード番号および取引順序でデータを整理するために二次元配列を使用
  • ファイル管理:サブルーチン(CBSTM03B)を通じて複数ファイルのオープン、リード、クローズなどの操作を管理
  • コントロールブロック処理:システムレベルの操作のためにメインフレームのコントロールブロックアドレッシングを実装
  • 顧客情報統合:複数のデータソースから情報を統合し、包括的な顧客データを生成

続けて、プログラムロジックに関する内容も見ていきます。

2.2. プログラムロジック

このルールは、顧客口座明細書の「基本情報(Basic Details)」セクションに表示される主要な口座情報の抽出と整形処理を定めています。 目的は、重要な口座データを元のレコードから正しく取得し、プレーンテキスト形式とHTML形式の両方で適切に表示できるようにすることです。

このルールでは、まず口座レコードから**口座識別子(Account Identifier)**を取得し、両出力形式の明細書表示フィールドに割り当てます。これにより、顧客が明細書がどの口座に対応しているかを明確に認識できます。

次に、口座レコードから**現在の口座残高(Current Account Balance)**を取得し、明細書の残高表示フィールドに設定します。これにより、明細書発行日時点での最新の財務状況を顧客に提供します。

さらに、顧客レコードから**クレジットスコア(Credit Score)**を取得し、明細書の該当フィールドに設定します。これにより、金融機関が管理する顧客の信用度を顧客自身が確認できるようにします。

HTML形式の明細書生成時には、ヘッダー構造の一部として 「Statement for Account Number [口座番号]」 という特別に整形された口座識別子フィールドを生成します。

また、このルールでは動的な文字列操作を用いて、HTMLマークアップタグと口座基本情報を組み合わせた整形済みのHTMLコンテンツ行を構築し、Web上での明細表示が正しく行われるようにします。

細かいところで言うと、以下のような入出力仕様もまとめられています。

  1. 入出力処理 6.1. 入力要件 6.1.1. 入力データの種類と重要性

プログラム CBSTM03A は、サブルーチン CBSTM03B を通じて複数の入力ファイルを処理します。

  • TRNXFILE(トランザクションファイル) :カード番号、取引ID、金額、取引内容、加盟店情報、タイムスタンプを含む取引レコードを格納します。 これは口座明細書生成の主要なデータソースとなります。
  • XREFFILE(クロスリファレンスファイル): カード番号を顧客IDおよび口座IDに関連付けるクロスリファレンスレコードを保持します。 このファイルにより、プログラムは取引を特定の顧客および口座に関連付けることが可能になります。
  • CUSTFILE(顧客ファイル): 顧客の氏名、住所、電話番号、社会保障番号(SSN)、生年月日、FICOクレジットスコアなど、顧客の基本属性情報を格納します。 このデータは、明細書内の顧客情報部分を生成するために使用されます。
  • ACCTFILE(口座ファイル) :口座ID、現在残高、クレジット限度額、開設日、口座ステータスなどを格納します。 明細書の口座関連情報の生成に利用されます。

さらに、プログラムは**メインフレームのシステム制御ブロック(PSA、TCB、TIOT)**にもアクセスし、ジョブおよびステップ情報を取得してデバッグや監視に使用します。

6.2. 出力仕様 6.2.1. 出力目的と後続利用

プログラムは次の2種類の口座明細書を生成します。

  • STMT-FILE(プレーンテキスト明細書) :テキスト形式で整形された口座明細書を生成します。 従来型の印刷システムやテキストベースの業務システムで利用可能で、 顧客への郵送、アーカイブ保管、レガシーレポートシステムとの統合に使用されます。
  • HTML-FILE(HTML明細書) :Web表示・メール配信・デジタル配信チャネルに適したHTML形式の明細書を生成します。 テーブル、色、スタイルなどを含むリッチなフォーマットにより、可読性を高めた表示を実現します。

両方の出力は共通して、次のような顧客向け詳細口座情報の提供というビジネス目的を果たします。

このように複雑な処理をソースコードのコメントまで含め、脈略を捉えつつ自然言語ドキュメントとして生成することで、ブラックボックス化した内部仕様を把握するための有効な手段として活用することができそうです。

ビジネスドキュメンテーション

前項では技術仕様にフォーカスしたドキュメントが作成されますが、全体の処理のフローとビジネスロジックをサクッと出力することも可能です。詳細に入る前に、全体的な構造やコンポーネントの依存関係、ワークフローを把握する必要があり、ゼロベースで仕様の学習を始めるより優れた効率が出せる機能です。

以下のように、ビジネスロジックのドキュメント生成対象となるファイルを選択します。ハンズオンで示されているファイルを対象とします。

ドキュメント生成が完了すると、技術ドキュメントと同じく仕様書が生成されます。コンソールでまずサマリーを確認してみます。

概要

この COBOL プログラム (CACTOC) は、インデックス付き VSAM ファイルから口座クロスリファレンスデータを読み取り・表示するバッチユーティリティプログラムです。 プログラムはクロスリファレンスファイル内の全レコードを順次処理し、各レコードの内容を表示します。 これにより、報告または検証目的のために、口座クロスリファレンス情報の完全な一覧を提供します。

  • 実行環境の詳細
  • 実行環境:バッチ処理
  • データベースアクセス:VSAM
  • MQ 呼び出し:なし
  • モジュール種別:メインモジュール

主な機能

  1. プログラム初期化: プログラム開始メッセージを表示し、実行環境を初期化します。
  2. クロスリファレンスファイルのオープン:インデックス付き VSAM クロスリファレンスファイルを順次読み取りモードで開きます。
  3. クロスリファレンスレコードの読み取り:クロスリファレンスファイルからレコードを順次読み込みます。
  4. クロスリファレンスデータの表示:各レコードのカード番号および関連データを表示します。
  5. ファイル終端処理:全レコードの処理完了を検知し、ファイル終端(End-of-File)インジケータを設定します。
  6. クロスリファレンスファイルのクローズ:すべてのレコード処理完了後、クロスリファレンスファイルを閉じます。
  7. プログラム終了処理:プログラム終了メッセージを表示し、正常終了します。
  8. ファイル操作エラーハンドリング:ファイルのオープン、読み取り、またはクローズ中に発生したエラーを検知・表示します。
  9. 異常終了処理(Abend 処理):重大なエラーが発生した場合、プログラムを異常終了させます。

サマリーだけでなく、各項目の詳細なフローチャートとルールを整理した表を出力することも可能です。

このような業務ロジックについては、大まかな枠組みや構成があれば、自分で詳細に調べられる手段ができるという点で人力のみで進めていく作業と比べ優れた効率が出せると予想されます。

コード分解

仕様の把握が進んだどころで、実際にコードの関連性やドメインの依存関係を調べることができる機能に移っていきます。以下のようにドメインを指定してそれに属するファイルを指定し、コード分解を実行します。

また、ファイル間の依存関係が可視化された資料もダッシュボードから確認できます。網羅的に把握しにくい部分ですが、わかりやすく自動整理してくれます。

マイグレーションウェーブプラン

前項まで進めてきた内容と依存関係を踏まえた上で、ドメイン単位でどのような順序で作業を行なっていくかについてのガントチャートを出力します。具体的な行数(LOC)も併記されていて作業ボリュームを想定することができます。

この記事では、モダナイゼーションを想定しての現行システムの仕様把握を目的としていますので、ハンズオンとしてはここまで実装しました。

分析と仕様ドキュメント作成を行なった後の想定作業

AWS Transform for mainframe の機能としては、実はまだまだ機能があります。具体的には、分析結果に基づいて Java コードへの変換を行い、リファクタリングや再構成・リビルドを行なった上でデプロイするところまで含まれています。

Java コード変換については、Mainframe モダナイゼーションを想定した AWS Blu Age というフレームワーク( https://docs.aws.amazon.com/ja_jp/m2/latest/userguide/ba-shared-structure.html )を利用した構成とその構築・運用を検討することが可能です。一方で、前項までの分析・分解情報を元にモダンアプリケーションとそのアーキテクチャとして斬新するといった方向についても検討していければと考えています。

おわりに

AWS Transform for mainframe は Amazon Q Developer が活用されており、ハンズオンを行なって感じたことは、生成 AI の力が存分に発揮されされていることを身をもって実感したことです。mainframe と聞くととても手が出せないような分野であったものが、このように AI を使ったサービスや取り組みによって少しずつ解決できるようになっていくのではないかと思います。

Written by
COO

金 仙優

Sonu Kim

  • Facebook->
  • X->
  • GitHub->

Share

Facebook->X->
Back
to list
<-