

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS Transform カスタムを使用して Easytrieve を最新の言語に変換する
<a name="transform-easytrieve-modern-languages"></a>

*Shubham Roy、Subramanyam Malisetty、Harshitha Shashidhar、Amazon Web Services*

## 概要
<a name="transform-easytrieve-modern-languages-summary"></a>

このパターンは、 [AWS Transform カスタム](https://aws.amazon.com/transform/custom/) language-to-language 変換を使用して、メインフレームの Broadcom [Easytrieve Report Generator](https://techdocs.broadcom.com/us/en/ca-mainframe-software/devops/ca-easytrieve-report-generator/11-6.html) (EZT) ワークロードを迅速かつ低リスクで変換するための規範的なガイダンスを提供します。バッチデータ処理とレポート生成に一般的に使用される、ニッチな独自のメインフレーム EZT ワークロードをモダナイズする課題に対処します。このパターンは、独自のツールとまれなメインフレームの専門知識に依存する、コストが高く、長く、エラーが発生しやすい移行アプローチを、作成したエージェント AI 自動ソリューションに置き換えます AWS Transform。

このパターンは、EZT 変換用のready-to-useカスタム変換定義を提供します。定義は複数の変換入力を使用します。
+  AWS Transform カスタムを使用して抽出された EZT ビジネスルール
+ EZT プログラミングリファレンスドキュメント
+ EZT ソースコード
+ メインフレーム入出力データセット

AWS Transform カスタムは、これらの入力を使用して、Java や Python などの最新のターゲット言語で機能的に同等のアプリケーションを生成します。

変換プロセスでは、インテリジェントなテスト実行、自動デバッグ、反復修正機能を使用して、期待される出力と機能的同等性を検証します。また、継続的な学習もサポートしているため、カスタム変換定義により、連続する変換の精度と一貫性が向上します。このパターンを使用すると、組織は移行の労力とリスクを軽減し、ニッチなメインフレームの技術的負債に対処し、 で EZT ワークロードをモダナイズ AWS して、俊敏性、信頼性、セキュリティ、イノベーションを向上させることができます。

## 前提条件と制限
<a name="transform-easytrieve-modern-languages-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント 
+ 入力データと出力データを含むメインフレーム EZT ワークロード 

**制限事項**

*範囲の制限 *
+ **言語のサポート - **この特定の変換パターンでは、EZT-to-Java変換のみがサポートされています。この APG パターンは、JCL/Proc のインライン EZT コードでテストされます。
+ **範囲外 - **他のメインフレームプログラミング言語の変換には、メインフレーム AWS Transform に を使用します。詳細については、「 AWS Transform ユーザーガイド[」の「メインフレームアプリケーションの変換でサポートされているファイルタイプ](https://docs.aws.amazon.com/transform/latest/userguide/transform-app-mainframe.html#transform-app-mainframe-supported-files)」を参照してください。

*プロセスの制限 *
+ **検証の依存関係** – ベースライン出力データがないと、変換を検証できません。 
+ **独自のロジック** – 高度に固有のカスタム開発ユーティリティでは、AI エージェントによって正しく解釈されるために、追加のユーザードキュメントと参考資料が必要です。

*技術的な制限事項 *
+ **サービスの制限** – AWS Transform カスタムサービスの制限とクォータについては、[AWS Transform 「 ユーザーガイド - クォータ](https://docs.aws.amazon.com/transform/latest/userguide/transform-limits.html) 」および [AWS 「 全般のリファレンス - クォータの変換](https://docs.aws.amazon.com/general/latest/gr/aws-transform.html)」を参照してください。

**製品バージョン**
+ AWS Transform CLI –  最新バージョン
+ Node.js – バージョン 20 以降
+ Git –  最新バージョン
+ ターゲット環境
  + Java – バージョン 17 以降
  + Spring Boot – リファクタリングされたアプリケーションのプライマリターゲットは バージョン 3.x です
  + Maven – バージョン 3.6 以降

## アーキテクチャ
<a name="transform-easytrieve-modern-languages-architecture"></a>

**ソーステクノロジースタック**
+ **オペレーティングシステム** – IBM z/OS
+ **プログラミング言語** – Easytrieve、ジョブコントロール言語 (JCL)
+ **データベース** – IBM DB2 for z/OS、仮想ストレージアクセス方法 (VSAM)、メインフレームフラットファイル

**ターゲットテクノロジースタック**
+ **オペレーティングシステム** – Amazon Linux
+ **コンピューティング** – Amazon Elastic Compute Cloud (Amazon EC2)
+ **プログラミング言語** – Java
+ **Database** Amazon Relational Database Service (Amazon RDS)

**ターゲットアーキテクチャ**

![AWS Transform custom を使用して EZT を最新のコードに変換するためのターゲットアーキテクチャ図。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/71f15422-42cb-4c7e-94fa-051a4f130445/images/64cbe607-22d3-440c-b888-9a6a86074563.png)


**ワークフロー**

このソリューションは、構築済みの変換定義 AWS Transform を使用して、メインフレーム Easytrieve (EZT) アプリケーションを 3 段階の自動ワークフローを通じて Java にモダナイズします。 AWS Transform custom は、このソリューションの一部として提供される変換定義によって駆動される、ビジネスルール抽出 (BRE)、コード変換、機能同等性検証のプロセス全体を処理します。BRE 生成の検証と機能同等性レポートの検証には、人間による検証が必要です。

*ステップ 1 –  入力フォルダを準備する*

1. **source-code/** – EZT ソースコード (.ezt ファイル）、JCL ジョブストリーム (.jcl/。JCL ファイル）、COBOL プログラム、コピーブック、コントロールカード

1. **bre-doc/ - **生成されたビジネスルール抽出ドキュメント

1. **input-data/** – 検証用のベースラインメインフレーム入力データセット

1. **output-data/** – 検証用のベースラインメインフレーム出力データセット

1. **document\_references/** – 変換定義とリファレンスドキュメントの提供元:

    - `bre_transformation_definition.md` – 5 フェーズのビジネスルール抽出プロセスを定義します。

    - `transformation_definition.md` – Easytrieve コンストラクトが Java にマップする方法を定義します

    - `summaries.md` – 変換ルールとパターン

    - `ca-easytrieve-report-generator-11-6.txt` – Easytrieve リファレンスマニュアル

*ステップ 2 – AWS Transform Custom を使用してビジネスルールを 抽出する*

1. 自然言語を使用して AWS Transform CLI を操作し、利用可能な変換定義 (TDs) を確認し、特定の基準とルールに合わせて BRE TD をカスタマイズする

2. 確定された TD を使用して BRE ドキュメントを生成します。 AWS Transform カスタムはメインフレームソースアーティファクト (Easytrieve、JCL、COBOL、コピーブック、コントロールカード) を分析し、ビジネスルールカタログ、ファイルレイアウト、データ系統、データ型マッピングを含む構造化 BRE を生成します。

3. 生成された BRE ドキュメントをステップ 3 で使用する`bre-doc/`フォルダに移動する

*ステップ 3 – 機能的に同等のモダナイズされたコードを生成する *

1. 自然言語を使用して AWS Transform CLI を操作し、使用可能な[基本変換定義 (TDs)](https://github.com/aws-samples/sample-mainframe-easytrieve-transform/blob/main/documents/transformation_definition.md) を確認し、特定の基準とルールに合わせて基本 TD をカスタマイズします。

1. 次に、プロジェクトソースコードを使用して AWS Transform CLI を呼び出します。 AWS Transform custom は変換プランを作成し、承認時に EZT を Java に変換し、サポートファイルを生成して、実行可能 JAR を構築し、終了基準を検証します。

1. 検証エージェントを使用して、メインフレーム出力に対する 機能同等性をテストします。セルフデバッガーエージェントは問題を自動的に修正します。最終的な成果物には、検証済みの Java コードと HTML 検証レポートが含まれます。

**自動化とスケール**
+ エージェント AI マルチモード実行アーキテクチャ – AWS Transform カスタムは、会話型、インタラクティブ、完全自動化の 3 つの実行モードでエージェント AI を活用して、コード分析、リファクタリング、変換計画、テストなどの複雑な変換タスク を自動化します。
+ アダプティブラーニングフィードバックシステム – プラットフォームは、コードサンプル分析、ドキュメント解析、および開発者フィードバックとバージョニングされた変換定義の統合を通じて、継続的な学習メカニズムを実装します。
+ 同時アプリケーション処理アーキテクチャ – このシステムでは、スケーラブルなインフラストラクチャ間で複数のアプリケーション変換オペレーションを同時に分散並列実行できます。

## ツール
<a name="transform-easytrieve-modern-languages-tools"></a>

**AWS のサービス  **
+ [AWS Transform custom](https://docs.aws.amazon.com/transform/latest/userguide/custom.html) は、従来の EZT アプリケーションを最新のプログラミング言語に変換するために使用されるエージェント AI サービスです。 
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。Amazon S3 は、変換定義、コードリポジトリ、および処理結果を保存するための AWS Transform カスタムのプライマリストレージサービスとして機能します。
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) は、誰を認証し、誰に使用する権限を付与するかを制御することで、 AWS リソースへのアクセスを安全に管理できます。IAM は、変換オペレーションのアクセス許可とアクセスコントロールを管理する AWS Transform カスタムのセキュリティフレームワークを提供します。

**その他のツール**
+ [AWS Transform CLI](https://docs.aws.amazon.com/transform/latest/userguide/custom-command-reference.html) は AWS Transform カスタムのコマンドラインインターフェイスであり、開発者は自然言語の会話と自動実行モードを通じてカスタムコード変換を定義、実行、管理できます。 AWS Transform custom は、コードベースのスケーラブルなモダナイゼーションのためのインタラクティブセッション (atx custom def exec) と自律変換の両方をサポートしています。
+ 自動修正アプリケーション中のブランチ保護、変更追跡、ロールバック機能に使用される [Git](https://git-scm.com/doc) バージョン管理システム。 
+ 「[Java](https://www.java.com/en/)」 はこのパターンで使用されるプログラミング言語ならびに開発環境です。 

**コードリポジトリ**

このパターンのコードは、GitHub の [Easytrieve to Modern Languages Transformation with AWS Transform Custom](https://github.com/aws-samples/sample-mainframe-easytrieve-transform?tab=readme-ov-file#easytrieve-to-modern-languages-transformation-with-aws-transform-custom) で入手できます。

## ベストプラクティス
<a name="transform-easytrieve-modern-languages-best-practices"></a>
+ 標準化されたプロジェクト構造を確立する – 変換前に 4 つのフォルダ構造 (source-code、bre-doc、input-data、output-data) を作成し、完全性を検証し、その内容を文書化します。
+ 検証にベースラインファイルを使用する – 本番稼働用のベースライン入力ファイルを使用し、ベースライン出力とのbyte-by-byte比較を実行し、偏差に対するゼロトレランスを受け入れます。
+ 利用可能なすべてのリファレンスドキュメントを使用する  – 変換の精度を高めるには、ビジネス要件やコーディングチェックリストなど、利用可能なすべてのリファレンスドキュメントを提供します。
+ 品質向上のための入力を提供する  – AWS Transform カスタムは、変換実行から学習を自動的に抽出し (開発者のフィードバック、コードの問題）、ナレッジ項目を作成します。変換が成功するたびに、ナレッジ項目を確認し、今後の実行で使用したい項目を承認します。これにより、将来の変換の品質が向上します。

## エピック
<a name="transform-easytrieve-modern-languages-epics"></a>

### AWS Transform カスタムをセットアップする
<a name="set-up-trn-custom"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
|  AWS Transform カスタム用にインフラストラクチャをプロビジョニングします。 | 安全な変換環境をホストするために必要な本番環境対応のインフラストラクチャをデプロイします。これには、Easytrieve コードを変換するために必要なツール、IAM アクセス許可、ネットワーク設定で設定されたプライベート Amazon EC2 インスタンスが含まれます。Infrastructure as Code (IaC) を使用して環境をプロビジョニングするには、[Easytrieve to Modern Languages Transformation with AWS Transform Custom](https://github.com/aws-samples/sample-mainframe-easytrieve-transform) GitHub リポジトリのデプロイ手順に従ってください。 | アプリ開発者、AWS 管理者 | 
| 変換用の入力マテリアルを準備します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | アプリ開発者 | 

###  カスタム変換定義を作成する
<a name="create-a-custom-transformation-definition"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| BRE 変換定義を作成する | Easytrieve ソースコードから BRE (ビジネスルール抽出) のカスタム変換定義を作成するには、次の手順に従います。<br />1. このパターンのコードリポジトリに移動し、ドキュメントフォルダから bre\_transformation\_definition.md を document\_references フォルダとともに EZT コーディングガイドとともにコピーします。<br />2. CLI AWS Transform でそのコンテンツを任意の場所にアップロードし、次のステップで使用するパスの場所を書き留めます。<br />3. atx コマンドを使用して CLI AWS Transform から を呼び出します。<br />4. CLI でこのプロンプトを指定します。<br /> **ステップ 2> のコンテンツへのパス <path to content で利用可能な変換定義ファイルを使用してカスタム変換を作成する**<br /> AWS Transform は、BRE 生成用の新しいカスタム変換定義を作成します。<br />5. 変換定義を確認し、必要に応じて変更を加えます。 | アプリ開発者 | 
| BRE 変換定義の発行 | BRE 変換定義を確認して検証したら、自然言語プロンプトを使用して AWS Transform カスタムレジストリに発行し、Easytrieve-Business-Rule-Extract などの定義名を指定できます。 | アプリ開発者 | 
| 変換定義を作成します。 | 以下の手順に従って、機能検証による EZT から Java への変換のカスタム変換定義を作成します。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | アプリ開発者 | 
| 変換定義を発行します。 | 変換定義を確認して検証したら、自然言語プロンプトを使用してカスタムレジストリに AWS Transform 発行し、*Easytrieve-to-Java-Migration* などの定義名を指定できます。 | アプリ開発者 | 

### ビジネスルール抽出を生成する (BRE)
<a name="generate-a-business-rule-extract-bre"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| BRE 生成ジョブを実行します。 |  AWS Transform CLI コマンドを実行し、非インタラクティブまたはインタラクティブオプションを選択します。<br />**非インタラクティブ実行 (完全自律):**<pre>atx custom def exec --transformation-name "Easytrieve-Business-Rule-Extract" --code-repository-path ~/root/transform-workspace/mainframe-source/source-code --non-interactive --trust-all-tools</pre><br />**インタラクティブ実行 (人的監視あり):**<pre>atx custom def exec -n "Easytrieve-Business-Rule-Extract" -p ~/root/transform-workspace/mainframe-source/source-code</pre><br />中断された実行を再開する:<pre>atx --resume</pre><br />OR<pre>atx --conversation-id <conversation-id>  </pre><br />生成された BRE ドキュメントを、Easytrieve-to-Java**-to-Java 変換ステップで入力として使用する bre-doc/ **フォルダに移動します。 | アプリ開発者 | 

### 検証用のベースラインデータを準備します。
<a name="prepare-baseline-data-for-validation"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 変換検証の概要を確認します。 | カスタム変換を実行する AWS Transform 前に、メインフレームバッチジョブの実行前にキャプチャされた必要なデータファイルがフォルダに含まれていることを確認します `input-data` 。メインフレームバッチジョブの実行後、 `output-data`フォルダが結果のファイルをキャプチャしていることを確認します。すべてのファイルは、実行要件に基づいて EBCDIC エンコードを使用してSequential/Text/DB2 形式になります。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | アプリ開発者 | 
| カスタム変換ジョブを実行します。 |  AWS Transform CLI コマンドを実行し、非インタラクティブまたはインタラクティブオプションを選択します。<pre>:# Non-interactive execution (fully autonomous):<br />atx custom def exec \<br />  --transformation-name "Easytrieve-to-Java-Migration" \<br />  --code-repository-path ~/root/transform-workspace/mainframe-source/source-code \<br />  --build-command "mvn clean install" \<br />  --non-interactive \<br />  --trust-all-tools \<br /><br /># Interactive execution (with human oversight):<br />atx custom def exec \<br />  -n "Easytrieve-to-Java-Migration" \<br />  -p ~/root/transform-workspace/mainframe-source/source-code \<br />  -c "mvn clean install"<br /><br /># Resume interrupted execution:<br />atx -resume<br /># OR<br />atx --conversation-id <conversation-id><br /></pre><br />AWS Transform は、変換の実行中にビルド/テストコマンドを使用して を自動的に検証します。 | アプリ開発者 | 

### テスト済みのコードを検証して配信する
<a name="validate-and-deliver-tested-code"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 変換検証の概要を確認します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | アプリ開発者 | 
| 検証レポートにアクセスします。 | 以下のコマンドを入力して、詳細な検証アーティファクトを確認します。<pre># Full validation report<br />cat ~/.aws/atx/custom/$LATEST_SESSION/artifacts/validation_report.html<br /><br /># Generated code location<br />ls ~/.aws/atx/custom/$LATEST_SESSION/generated/<br /><br /># Execution logs<br />cat ~/.aws/atx/custom/$LATEST_SESSION/logs/execution.log</pre> | アプリ開発者 | 
| 継続的な学習のためにナレッジ項目を有効にします。 | 提案されたナレッジ項目を永続的な設定に昇格させることで、将来の変換精度を向上させます。変換後、エージェントは識別されたパターンとマッピングルールをローカルセッションディレクトリに保存します。これらの学習した項目を確認して適用するには、Amazon EC2 インスタンスで次のコマンドを実行します。<pre># List all knowledge items for a specific transformation definition<br />atx custom def list-ki -n <transformation-name><br /><br /># Retrieve the details of a specific knowledge item<br />atx custom def get-ki -n <transformation-name> --id <id><br /><br /># Update the status of a knowledge item (ENABLED or DISABLED)<br />atx custom def update-ki-status -n <transformation-name> --id <id> --status ENABLED<br /><br /># Update the knowledge item configuration to enable auto-approval<br />atx custom def update-ki-config -n <transformation-name> --auto-enabled TRUE</pre> | アプリデベロッパー | 

## トラブルシューティング
<a name="transform-easytrieve-modern-languages-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| *入力パスと出力パスの設定*<br />入力ファイルが読み取られていないか、出力ファイルが正しく書き込まれていません。  | 入力ファイルが保存される完全なディレクトリパスを指定し、出力を書き込む場所を明確に指定します。これらのディレクトリに適切なアクセス許可が設定されていることを確認します。 <br />ベストプラクティスには、曖昧さを避けるために相対パスではなく絶対パスを使用することや、指定されたすべてのパスが適切な読み取り/書き込みアクセス許可で存在することを確認することが含まれます。  | 
| *中断された実行の再開*<br />実行が中断されたか、停止した場所から続行する必要があります | CLI コマンドで会話 ID を指定することで、中断した場所から実行を再開できます。<br />前回の実行試行のログで会話 ID を見つけます。   | 
| *メモリ制約の解決*<br />実行中にメモリ不足エラーが発生します。 | 現在のインメモリ JVM サイズを共有し、この情報に基づいてメモリ割り当てを増やす AWS Transform ように に依頼できます。この調整は、より大きな処理要件に対応するのに役立ちます。<br />調整後もメモリ制約が続く場合は、大きなジョブを小さなバッチに分割することを検討してください。  | 
| *出力ファイルの不一致に対処する*<br />出力ファイルが期待と一致しず、これ以上の変更ができない AWS Transform ことを示します。 | 現在の出力が正しくない理由を説明する具体的なフィードバックと技術的な理由を提供します。要件をサポートするために、追加の技術ドキュメントまたはビジネスドキュメントを含めます。この詳細なコンテキストは AWS Transform 、コードを修正して適切な出力ファイルを生成するのに役立ちます。 [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/transform-easytrieve-modern-languages.html) | 

## 関連リソース
<a name="transform-easytrieve-modern-languages-resources"></a>
+ [AWS Transform カスタムドキュメント](https://docs.aws.amazon.com/transform/latest/userguide/custom.html)
+ [Easytrieve レポートジェネレーター 11.6](https://techdocs.broadcom.com/us/en/ca-mainframe-software/devops/ca-easytrieve-report-generator/11-6/getting-started.html)