[アップデート] Amazon Q Developer の Transform for mainframe がプレビューとなりました

[アップデート] Amazon Q Developer の Transform for mainframe がプレビューとなりました

Clock Icon2024.12.06

いわさです。

AWS re:Invent 2024 に参加中です。
12/3 のキーノートで Amazon Q Developer の Transform 機能が登場し、いくつかのプラットフォームのモダナイゼーションを支援してくれるようになり、対応プラットフォームのひとつとして てメインフレームがプレビューでサポートされました。

https://aws.amazon.com/jp/about-aws/whats-new/2024/12/amazon-q-developer-transformation-mainframe-modernization/

レガシーなコードの解析・ドキュメント化・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 ステータスとなっています。

D5C65C3D-09C6-4BC1-8410-8F1DA50CE3B7.png

Edit から変更し有効化しましょう。
有効化すると Application URL が発行されますので、そちらにアクセスし、事前に Q Developer Pro を割り当て済みの IAM Identity Center ユーザーでサインインします。

63FFB6BF-5C7C-4CC7-88A3-DD2FA2220742.png

すると、「Amazon Q Developer transformation web experience」にアクセスすることが出来ます。

E841C134-1531-4A49-A39E-ADB193C810EE.png

.NET や VMware などの変換機能もこちらの Web Experience 機能から操作を行う形となります。

メインフレーム変換ジョブの作成

早速 Ask Amazon Q からジョブの作成を行ってみます。
「Create a new job」ボタンを押すと、Q との対話が開始されます。

どのタイプの変換を行いたいのか問われますので番号で回答します。
今回は 3 の Mainframe modernization です。

D9DE2F58-4A8A-433B-A4E7-0290ACC1B5E0.png

何を行うことが出来るのか説明されます。
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」と指示してみます。

E4A3F7A8-151C-43D1-B8CE-BBADF642AD6F.png

おっ、こちらの意図したとおりのジョブを作成してくれそうです。
ジョブ名などは対話の中でカスタマイズ出来そうな雰囲気ですが、今回はこのまま勧めてみましょうか。

「Create job」ボタンを押します。

こちらがジョブの実行画面のようです。
左側にジョブのステップ、右側のダッシュボードやジョブの実行ログなどが表示されます。

64C049A0-9F5A-44D0-B2AD-2AA031385179.png

左側のステップをひとつづつ対応していく感じなのだと思いますが、「Required」ラベルが付与されたステップがあります。
これは対応必須な感じで、このラベルがついていなければ任意ってところでしょうか。

見てみると、ひとつめの必須ステップは Amazon S3 へのアクセス権限の設定でした。
どうやらソースコードは S3 バケットに格納する必要があるようで、そのために S3 へ Q がアクセス出来るようにしてやる必要があるみたいです。

3D4C4E81-2A96-4822-818B-9FA130E555C3.png

アカウント ID とバケット名を入力すると、一時 URL が発行されるので AWS マネジメントコンソール上で権限のあるユーザーでアクセスをしてみます。

すると次のように Q からのアクセスを承諾するような画面が表示されました。
接続はこのコネクターで管理されるみたいですね。

7E9CF0F0-93E3-4C5E-A454-CFB8BE2E17EA.png

承諾するとまた設定画面に戻ります。
コネクターの設定が完了していれば、あとは以下の「Send to Q」ボタンを押しましょう。

98256A01-D52B-493E-8D17-9A5E8D78A3A9.png

こんな感じでどんどんステップを対応していきます。
ソースコードを適当に Zip 圧縮したものを S3 バケットに格納し、それの URL を指定します。

B1D529C5-67C4-460B-93ED-26D5AF9DD9E7.png

設定がうまくいけばソースコードの解析が行われます。
少し待つと最後のドキュメント生成ステップになりました。

ファイルを選択して「Send to Q」です。

212A0D78-4D63-4CC7-A1E9-E6CB6891F1A0.png

おっ、ジョブのステップが全て完了しました...!
ドキュメント出力先が示されるので、こちらにアクセスしてみましょう。
ソースコードを格納した S3 バケットに出力されるみたいですね。Q 変換用のバケットという位置づけで新しく用意してやるのが良さそうですね。

F1271C7D-CAFF-4680-864D-EA02AAFEBFBD.png

こちらのフォルダにアクセスしてみると、いくつかドキュメントが出力されていました。
PDF ファイルの一つを見てみると、コードの実装内容の入出力概要がドキュメントとしてまとまっていますね。内容は英語になるようです。

98C44813-F922-4489-B855-1D84CA4DC5E1.png

さいごに

本日は Amazon Q Developer の Transform for mainframe がプレビューとなったので COBOL コードからのドキュメント生成を試してみました。

COBOL に精通しておらず、ドキュメントの品質についてコメントがあまり出来ないので惜しいのですが、それっぽいドキュメントが生成されている雰囲気です。
もしお手持ちの COBOL コードがあれば、まずはコード分析やドキュメント生成の用途からでも使ってみてはいかがでしょうか。変換までしなくてもこれだけでもかなり使いやすいと思います。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.