[アップデート] Amazon Q Developer の Transform for mainframe がプレビューとなりました
いわさです。
AWS re:Invent 2024 に参加中です。
12/3 のキーノートで Amazon Q Developer の Transform 機能が登場し、いくつかのプラットフォームのモダナイゼーションを支援してくれるようになり、対応プラットフォームのひとつとして てメインフレームがプレビューでサポートされました。
レガシーなコードの解析・ドキュメント化・Java への変換などをサポートしてくれます。
IBM z/OS がサポート対象となり、その中で以下のファイル種別が解析可能です。
- COBOL
- JCL (Job Control Language)
- BMS (Basic Mapping Support)
- DB2 databases
- VSAM (Virtual Storage Access Method)
一方で以下はサポート対象外となっています。
- IBM i applications
- z/VSE application
- z/TPF applications
- Unisys applications
- HP NonStop applications
- Fujitsu GSE applications
また、プレビュー期間中は以下の制限があります。
- コード量
- 1 か月あたりに変換できるメインフレームコードの総量は、アカウントあたり 400,000 行
- プレビュー期間中に変換できるメインフレーム コードの合計量は、アカウントあたり 1,000,000 行
- ジョブ数
- 各ユーザーは最大 2 つのジョブを同時に実行可能
- 各アカウントは最大 2 つのジョブを同時に実行可能
※ AWS サポート経由で上限緩和の調整が出来るようです
今回はサンプルの COBOL コードからドキュメント作成の機能を試してみましたのでその様子を紹介します。
事前準備:Q Developer Transform 機能の有効化
まずは Amazon Q Developer の Transform を有効化する必要があります。
マネジメントコンソールで設定画面を開くと、次の設定エリアが追加されているはずで、デフォルトでは Disable ステータスとなっています。
Edit から変更し有効化しましょう。
有効化すると Application URL が発行されますので、そちらにアクセスし、事前に Q Developer Pro を割り当て済みの IAM Identity Center ユーザーでサインインします。
すると、「Amazon Q Developer transformation web experience」にアクセスすることが出来ます。
.NET や VMware などの変換機能もこちらの Web Experience 機能から操作を行う形となります。
メインフレーム変換ジョブの作成
早速 Ask Amazon Q からジョブの作成を行ってみます。
「Create a new job」ボタンを押すと、Q との対話が開始されます。
どのタイプの変換を行いたいのか問われますので番号で回答します。
今回は 3 の Mainframe modernization です。
何を行うことが出来るのか説明されます。
Mainframe modernization モードでは、コードベースの分析・ドキュメントの作成、COBOL から Java への変換など、様々なジョブを実行することが出来ます。
今回は簡単なサンプル COBOL アプリケーションからドキュメント生成を試してみたいと思います。次のような適当なコードを用意しました。
IDENTIFICATION DIVISION.
PROGRAM-ID. CUSTOMER-INFO-SEARCH.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CUSTOMER-FILE ASSIGN TO "CUSTOMER-DATA.DAT"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD CUSTOMER-FILE.
01 CUSTOMER-RECORD.
05 CUSTOMER-ID PIC 9(6).
05 CUSTOMER-NAME PIC A20.
05 CUSTOMER-ADDRESS PIC A30.
05 CUSTOMER-PHONE PIC A12.
WORKING-STORAGE SECTION.
01 WS-CUSTOMER-ID PIC 9(6) COMP.
01 WS-FOUND PIC X VALUE 'N'.
01 WS-END-OF-FILE PIC X VALUE 'N'.
01 WS-CONTINUE-SEARCH PIC X VALUE 'Y'.
PROCEDURE DIVISION.
MAIN-PROCEDURE.
OPENINPUT CUSTOMER-FILE
PERFORM SEARCH-CUSTOMER
CLOSE CUSTOMER-FILE
STOP RUN.
SEARCH-CUSTOMER.
PERFORM UNTIL WS-END-OF-FILE = 'Y' OR WS-FOUND = 'Y'
READ CUSTOMER-FILE
AT END
MOVE 'Y' TO WS-END-OF-FILE
NOT AT END
IF WS-CUSTOMER-ID = CUSTOMER-RECORD(1:6)
MOVE 'Y' TO WS-FOUND
END-IF
END-READ
END-PERFORM
IF WS-FOUND = 'Y'
DISPLAY "Customer ID: " CUSTOMER-RECORD(1:6)
DISPLAY "Customer Name: " CUSTOMER-RECORD(7:26)
DISPLAY "Customer Address: " CUSTOMER-RECORD(27:56)
DISPLAY "Customer Phone: " CUSTOMER-RECORD(57:68)
ELSE
DISPLAY "Customer not found."
END-IF
IF WS-CONTINUE-SEARCH = 'Y'
PERFORM ASK-FOR-MORE
END-IF.
ASK-FOR-MORE.
DISPLAY "Do you want to search for another customer? (Y/N)"
ACCEPT WS-CONTINUE-SEARCH
IF WS-CONTINUE-SEARCH = 'N'
MOVE 'N' TO WS-CONTINUE-SEARCH
END-IF.
そして Q に対して「generate documentation」と指示してみます。
おっ、こちらの意図したとおりのジョブを作成してくれそうです。
ジョブ名などは対話の中でカスタマイズ出来そうな雰囲気ですが、今回はこのまま勧めてみましょうか。
「Create job」ボタンを押します。
こちらがジョブの実行画面のようです。
左側にジョブのステップ、右側のダッシュボードやジョブの実行ログなどが表示されます。
左側のステップをひとつづつ対応していく感じなのだと思いますが、「Required」ラベルが付与されたステップがあります。
これは対応必須な感じで、このラベルがついていなければ任意ってところでしょうか。
見てみると、ひとつめの必須ステップは Amazon S3 へのアクセス権限の設定でした。
どうやらソースコードは S3 バケットに格納する必要があるようで、そのために S3 へ Q がアクセス出来るようにしてやる必要があるみたいです。
アカウント ID とバケット名を入力すると、一時 URL が発行されるので AWS マネジメントコンソール上で権限のあるユーザーでアクセスをしてみます。
すると次のように Q からのアクセスを承諾するような画面が表示されました。
接続はこのコネクターで管理されるみたいですね。
承諾するとまた設定画面に戻ります。
コネクターの設定が完了していれば、あとは以下の「Send to Q」ボタンを押しましょう。
こんな感じでどんどんステップを対応していきます。
ソースコードを適当に Zip 圧縮したものを S3 バケットに格納し、それの URL を指定します。
設定がうまくいけばソースコードの解析が行われます。
少し待つと最後のドキュメント生成ステップになりました。
ファイルを選択して「Send to Q」です。
おっ、ジョブのステップが全て完了しました...!
ドキュメント出力先が示されるので、こちらにアクセスしてみましょう。
ソースコードを格納した S3 バケットに出力されるみたいですね。Q 変換用のバケットという位置づけで新しく用意してやるのが良さそうですね。
こちらのフォルダにアクセスしてみると、いくつかドキュメントが出力されていました。
PDF ファイルの一つを見てみると、コードの実装内容の入出力概要がドキュメントとしてまとまっていますね。内容は英語になるようです。
さいごに
本日は Amazon Q Developer の Transform for mainframe がプレビューとなったので COBOL コードからのドキュメント生成を試してみました。
COBOL に精通しておらず、ドキュメントの品質についてコメントがあまり出来ないので惜しいのですが、それっぽいドキュメントが生成されている雰囲気です。
もしお手持ちの COBOL コードがあれば、まずはコード分析やドキュメント生成の用途からでも使ってみてはいかがでしょうか。変換までしなくてもこれだけでもかなり使いやすいと思います。