IBM i(AS/400)開発に生成AIの力を組み込むアドオン製品 「IBM Bob Premium Package for i(以下、pp4i)」。
これまで「導入編」「Read・Execute編」「Edit編」「Build編」と解説してきましたが、完結編となる第5部では 「Test(RPGUnitによるテスト自動化)機能の検証」 をお届けします。
今回は単なる単体テストにとどまらず、既存のRPG III資産(得意先照会画面)を題材に「プロシージャ化」「RPGUnitでの単体テスト」「IWS(Integrated Web Services)によるREST API・Web画面化」までの一連のモダナイゼーションをIBM Bob(以下、Bob)へ一括指示してみました。
途中で発生した環境設定や権限エラーなどのトラブルを、Claude+MCPを併用して解決したリアルな試行錯誤のプロセスも含めて詳しくご紹介します。
JUnitやPyTestなどと同種の「xUnitファミリー」に属する、IBM i向けの単体テスト自動化フレームワークです。
対象:ILE RPG(RPG IV)のサブプロシージャーおよびサービス・プログラム(*SRVPGM)
用途:TDD(テスト駆動開発)の実践や、プロシージャー単位の回帰テスト(デグレ防止)
画面定義(DSPF)と業務ロジックが一体化している既存RPG IIIの場合、直接サブプロシージャーとしてテストできません。そのため、従来通り「テストデータを投入してCALLし、5250画面やDBの変更値を目視確認する」か、今回の事例のようにロジックをプロシージャー化(RPG IV化)してからRPGUnitを適用するアプローチとなります。
Testツールを利用するには、接続先のIBM i側へあらかじめ「RPGUnit」ライブラリを導入しておく必要があります。
今回は、既存のRPG IIIで開発された「得意先照会画面(カナ名称の前方一致検索)」をベースに、以下のステップをBobへ一括依頼しました。
※IWSのアプリケーションサーバー構築などの事前環境準備は完了している前提で進めます。
まずはベースとなる現行プログラムの確認です。カナ名称の前方一致検索を行うことで、該当する得意先番号などの項目を一覧表示するシンプルな照会画面です。
IBM iに接続した状態から、Bobのチャット欄にプロンプトを投げて作業を開始します。
① プロンプト投入と計画作成
プロンプトを投入すると、Bobが自動的に全体の「実行計画(Plan)」を作成してくれます。
② 計画に沿った作業の開始と承認対応
計画に沿って作業が進行します。
途中、Bobから確認や質問があった場合は回答や承認を行って作業を進めます。
作業が進むと、STEP 1より実際のコード生成が開始されます。
提示される承認依頼(Approve)に順次応答していきます。
Bobによって新規作成されたコードが、画面左の「OBJECT BROWSER」へリアルタイムに反映されていきます。
③ チャット往復回数の上限アラート(100回到達)
1つのチャット(タスク)内でBobとのメッセージ往復が100回に達したため、タスクが一時停止しました。
AIの応答速度低下や過去指示の記憶漏れ(コンテキスト漏れ)を防ぐための仕様ですが、今回は「Continue Task」を選択してそのまま続行します。
④テストフェーズ
テスト自動化のフェーズに入りました。
BobがRPGUnitのテストプログラム(IPH210T)を作成・実行する過程で、コピー句(/include)などの参照設定をソースファイル(QCOPYSRC)へ書き込む(更新する)必要があります。
そのため、BobからUPDATE処理の許可を求めてきました。
ここは「2. Yes, just this time」を選択し、今回のUPDATE処理のみを一時的に許可して先へ進めます。
⑤ 応答停止とQSYSOPRエラーの確認
テストプログラムの実行状態のまま画面の動きが止まってしまったため確認したところ、QSYSOPR(システム運用員メッセージ)にエラーが上がっていました。
Bobと会話をして指示を出し、キャンセルで応答させて一度仕切り直しを行いました。
⑥ 再度のアラート表示と設定調整
作業を進める中で、再度メッセージ往復が100回を超えた旨のアラートが表示されました。
今回は上限値を「200回」に引き上げて作業を継続します。
⑦ RPGUNITライブラリの事前設定漏れ対策
履歴ログを確認した際、「テストツールライブラリ RPGUNITが見当たらない」というメッセージが出力されていました。
Code for IBM i 側のライブラリ・リスト(USER LIBRARY LIST)に RPGUNIT を手動で追加したところ、無事にエラーが解消されました。事前作業として、ライブラリリストへの事前登録が必要だったようです。
⑧ テスト実行フェーズの成功
ライブラリ設定後、再度テストを実行しました。
今度はすんなりとテストを通過しました!
⑨ REST API化とIWSへのデプロイ完了
続いてREST API用のプログラム作成も完了し、そのままIWSへのデプロイが行われました。
※pp4i V1.1.0 からはIWS管理スキル(サービスの開始・停止、デプロイなど)が追加されているため、すべてチャット上から自動で完結します。
Webサービスの管理画面からも、無事にデプロイされていることが確認できました。
デプロイ完了後、実際に画面を動かして結合テストを実施したところ、いくつか問題が発生し解決に時間を要することになりました。
単一のAI(Bob)だけで解決を目指すのではなく、Claude + MCP(Model Context Protocol)※ にも参加してもらい、原因の調査と切り分けを行いました。
※MCPについての詳細は、文末の「PVS One for AIエージェント」リンクをご参照ください。
まずは、以下の項目を順番に調査していきます。
確認の結果、Bobが作成したRPGプログラムやフロントエンド(JavaScript)のコード自体には問題がないことが判明しました。 そこで、インフラ・通信側に視点を移して引き続き調査を進め、エラーの再現を行いながら問題の切り分けを進めていきます。
調査を進めた結果、インフラ・認証周りで2つの要因が判明しました。
IWS(Integrated Web Services)側の環境にて、Basic認証の設定漏れがあることが分かりました。Claudeとやり取りしながら管理画面を操作し、対象サービス(IPH210R)の設定変更と再配置を実施しました。
Basic認証設定後、エラーの状況が変化しました。
IWS関連の実行ユーザーに対して、ログインユーザーを認証・実行するための権限が不足していることが判明したため、5250画面から権限追加コマンドを実行しました。
環境と権限の修正を終え、再度結合テストを実施したところ、認証・検索ともにすべて正常に動作しました!
以下の各ケースにおいても期待通り問題なく機能し、RPG側の品質がしっかりと担保されていることを確認できました。
ケースB:カナ名称指定時(前方一致検索)
ケースC:存在しないカナ名称指定時(該当なしメッセージ表示)
今回、既存RPG III資産からWebサービス化までの一連の作業を実施したところ、プロンプト投入から初回デプロイまでのBobの作業時間は約1時間半程度でした。
CCSID 5026 であったため、5035 用へのコード変換処理が必要となった点。RPGUNIT)のライブラリリスト追加漏れ。作業中に行き詰まった場合は、単一のAIに執着せず「別のLLM(Claudeなど)に意見を求める」アプローチが非常に有効であることを実証できました。
今回の検証では、BobがWebサービスのデプロイやアプリケーションサーバーの停止・開始、さらにはオブジェクトの生成・削除など、IBM i内部の多岐にわたる高度な操作を自律的に行いました。
こうしたAIエージェントによる試行錯誤を安全に行うためにも、本番・共有環境ではなくPVS上の検証専用(サンドボックス)環境を利用していたことが極めて大きな安心感につながりました。
全5回にわたってお届けした「IBM Bob Premium Package for i(pp4i)」の活用検証はいかがでしたでしょうか?
pp4iを活用することで、IBM i資産の解析・編集・コンパイル・テスト・Web化までの開発プロセスが劇的に変化します。クラウド型IBM i サービス「PVS One」では、IBM BobのライセンスをPVS Oneのサブスクリプションから消化・充当できるだけでなく、本記事のようなAIエージェントの検証を安全に行えるサンドボックス環境「PVS One for AIエージェント」や、「API-Bridge for AIエージェント」の無償利用特典をご用意しています。
IBM iのAI活用や開発環境の効率化・検証環境についてご興味のある方は、ぜひお気軽にお問い合わせください。
>>PVS Oneに関するお問い合わせはこちら
株式会社MONO-X公式サイト
株式会社MONO-Xへのご相談・お問い合わせはこちら
最新記事の通知や配信をご希望の方は、ぜひ下記フォームよりメールマガジンにご登録ください。
[メルマガ登録フォームはこちら]