3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Bobと共にあらんことを — IBM Bob で挑んだ「RPG(IBM i)× Python」AI駆動開発

3
Last updated at Posted at 2026-09-24

はじめに

この記事では、IBM iの RPGでAI駆動開発をするときの技術的な詳細—AGENTS.md や SKILL.md の中身、実際にBobに投げたプロンプト、コンパイルまでの実演でBobがどう振る舞ったか。を、書いてみました。

当コンテンツの基になっているのは社内の実証事例(いわゆる Client Zero)です。現在RPGで動く基幹の販売管理システムと、Pythonで作る顧客向けWebポータルを連携させる社内プロジェクトを、IBM Bobを使って進めています。

なお、このポータルサイト刷新プロジェクト自体は本稿執筆時点でまだ稼働(ローンチ)していません。現在開発を継続中です。この記事で紹介するのは「ローンチできた成功事例」ではなく、「AI駆動開発というアプローチが、RPGの現場で実際に機能した」という手応えの記録です。

なぜ今、RPGなのか

Webシステムの話をする前に、前提を共有しておきます。RPGは固定形式のRPG IIIから自由形式のRPGへと進化を続けてきた言語で、今も多くのIBM i環境で基幹業務ロジックの中核を担っています。

課題は、これまで積み上げてきたRPG資産・ノウハウを失わずに、品質を高めながら開発のスピードをどう上げていくかという点です。つまり品質とスピードはトレードオフになってはならない。とくに今はお客様の要求する変化のスピードも上がり、内容も高度化してきています。
IBM Bobを検証してみようと思ったのは、この「積み上げてきたものを活かしながら前に進む」という課題に対して、AIエージェントがどこまで力になれるのかを確かめたかったからです。

私たちの挑戦

IGUAZUはIBMのハードウェア・ソフトウェア・サービスを扱うディストリビューターです。グループ会社のアルファー・コミュニケーションズは長年RPG開発を専門にしてきました。

今回、顧客向けの情報配信ポータルサイトを刷新するプロジェクトで、IBM i/RPGとPythonを組み合わせ、IBM Bobを使って開発を進めています。

システム全体像

対象システムはざっくり言うと、RPGで動く基幹の販売管理システム(IBM i)と、Pythonで作るWebシステムの2階建て構成です。

image.png

IBM BobによるAI駆動RPG開発のしくみ

ここが一番技術的に面白いところです。IBM BobでRPGを書かせるには、いくつか事前準備が要ります。

image.png

ポイントは「Premium Package for i」を使って、IBM i上のRPGソースをローカルのワークスペースフォルダにテキストとしてダウンロードしてくることです。コピー&ペーストや転送の作業は要りません。Bobに指示するだけで、ローカルにソースが揃います。

ローカルには次の要素を用意しました。

# ファイル/フォルダ 役割
1 AGENTS.md プロジェクト概要・技術スタック・接続情報・サンプル構成。常時読み込まれる
2 SKILL.md(alpha-rpg-gen Skill) RPGソースを新規生成する際の手順ガイド。コーディング時のみ呼び出される
3 workspace フォルダ(/workspace_root) Bobがローカルに作成
4 対象ソースのテキスト保存 Bobがワークスペースフォルダにダウンロード

AGENTS.md と SKILL.md は、どちらも社内の「アルファー開発標準.md」(これまでExcelで管理していた開発標準ドキュメント)をBobに読み込ませて作らせました。Bobに「このファイルをコピーしてAGENTS.mdとSKILL.mdを作って」と指示するだけで作ってくれました。

SKILL.md の中身

Bobが自動生成した alpha-rpg-gen SKILL の概要です。

自動起動トリガー: 次のような発言でBobが自動的にこのSKILLを呼び出します。

  • 「RPGを作って」「プログラムを新規作成」「雛形を生成」
  • 「マスタメンテのRPG」「明細取得」「単票取得」「更新処理を作って」

SKILLが行う手順:

Step 内容
1 プログラムID・種別・ファイル名・フィールド情報などを質問で収集
2 開発標準のコーディング規約を適用(命名規則・標準パラメータ・サブルーチン構成・エラーコード等)
3 workspace_root/[ID].RPGLE としてローカルに保存
4 IBM iメンバー(QRPGLESRC)へ登録
5 コンパイル・次ステップを提案

AGENTS.md と SKILL.md の役割分担はこうなります。

AGENTS.md  ← プロジェクト概要・技術スタック・接続情報・サンプル構成(常時読込)
SKILL.md   ← RPGソース新規生成の手順ガイド(作成時のみ呼び出し)

コーディング規約(AGENTS.mdに書いた内容の一部)

開発標準として AGENTS.md に落とし込んだRPGのコーディング規約から、いくつか抜粋します。

命名規則:

  • 入力パラメータ: WI + 項目名
  • 出力パラメータ: WO + 項目名
  • ワークフィールド: W + 項目名
  • キーフィールド: K + ファイル接頭辞 + 項目名

全マスタファイル共通で持たせている項目(プレフィックスはテーブルごとに変更):

  • [XX]DELT: 削除フラグ(1桁、' '=有効、'D'=削除)
  • [XX]CRDT / [XX]CRTM / [XX]CRSY: 作成日・作成時刻・作成者
  • [XX]UPDT / [XX]UPTM / [XX]UPSY: 更新日・更新時刻・更新者

標準エラーコードの一部:

コード 意味
E00001 データが存在しません
E00074 既に登録されています
I00009 登録/更新が完了しました
I00011 削除が完了しました

トランザクション制御は「更新処理は必ずCOMMIT/ROLBKで制御し、エラー時は必ずロールバックする」というルールをそのまま書きました。標準サブルーチン構成(#S010=初期処理、#S020=メイン処理、#S030=終了処理 など)も明文化しています。

ヘッダー部のテンプレートはこんな形です。

**********************************************************************
*
*プログラム  : [プログラムID]
*              :[プログラム名称]
*
*作成者      : [作成者名]         [作成日]
*変更者      :
*変更内容    :
*
**********************************************************************
H DATEDIT(*YMD/)

サンプルとして、郵便番号マスタメンテのプログラム一式(AASMI010=明細取得、AASMI011=単票取得、AASMI012=更新処理)を Back_Sample フォルダに置き、「このサンプルと同じ構造で作って」とBobに指示できるようにしました。

こうしたルールをすべて .md ファイルに書いておけば、Bobはそれを参照して作業してくれます。これはPython側でも同じです。

Bobに新しいRPGを書いてもらう

ここからは実際にBobを動かした様子です。郵便番号検索RPG(TST010)を参考に、更新ロジックを追加したTST011を作ってもらいました。

image.png

実際にBobへ投げた指示はこちらです(日本語で指示し、コメントは英数字で書くように念を押しています)。

現在表示しているTST010は郵便番号検索のRPGになります。このRPGを参考にTST011という名前で更新RPGを作成して下さい。コメントに日本語は用いず、英数字で記載してください。まずはコンパイルが通ることを最優先に、指示する順を追って指示するので部分ごとの実装をお願いします。

「コメントは英数字のみ」とわざわざ指示しているのには理由があります。日本語コメントは固定長のRPGソースに対して物理的に長くなりすぎることがあり、これが原因でコンパイルエラーになるケースがあったためです。地味ですが、実務でRPG生成をBobにやらせるなら最初につまずきやすいポイントだと思います。

BobがAI駆動開発を率先して行う

特にAGENT.mdやSKILL.mdを参照することをBobに指示したわけではありません。
ワークスペースフォルダーにそれらを格納すれば、教育が行き届いているBobは自分からそれらを
見に行きます。(当たり前ですが)

image.png

image.png

そして極めつけがこちらです。

image.png

Premium Package for iの機能を使って、生成したソースのアップロードからコンパイルまで自分でやってしまいました。
ちなみにこの一連のBobcoin消費は、6.5 Bobcoin でした。プログラムステップ数は350
(一応補足しますがBobcoinは、Bobの利用コストを表す内部的な単位です。使用トークンをもとに計算されます)

出来上がったもの

最終的に、郵便番号マスタメンテの画面(TST011を含む一連のRPG資産)が動く状態まで持っていけました。

image.png

ここまではRPG側の話でしたが、Webシステム側(Python)でも考え方は同じです。IBM iのテーブルアクセスルールや命名規則、FastAPI/DB2 on AS/400のバックエンド設計指針、共通コンポーネント設計、エラーハンドリング、プロセス管理ルールなど、約40本の.mdファイル**にガイドラインをまとめ、Bobに読み込ませています。

image.png

代表的なファイル名を挙げると:

  • IBM i table IO rules.md
  • IBM i table IO seq rules.md
  • IBM i table naming rules.md
  • backend-guide.md(Python / FastAPI / DB2 on AS/400)
  • common-components-design.md
  • error-handling-guide.md
  • process-management-rules.md

RPG側で確立した「ルールを.mdに書いておけばBobが従って動いてくれる」というパターンは、言語やレイヤーが変わっても再現できるという手応えを得ています。

UPDATE: AGENTS.md は現在IBM i上で稼働できます

QSYS(BOBSRC/AGENTS.MD)または IFS(.bob/AGENTS.md)にプロジェクト固有のガイドラインを定義すると、IBM i Developer モードと Database モードに自動的に挿入されます。
/init コマンドはシステムライブラリーの警告とワークスペースの要約を含む IBM i 環境に最適化されています。
image.png
IBM Bob.com
IBM Docs

まとめ:スピードと品質はトレードオフではない

今回の一連の検証を通じて得た結論はシンプルです。

  • RPGのAI駆動開発には、開発標準などを指示する.mdファイルが必要
  • ソースコードはローカルに置く必要があり、BobはPremium Package for i経由で接続されたソースをローカルに保管したまま、その.mdファイルを参照して作業する
    そして今では、/init(スラッシュ・イニット)コマンドで、AGENTS.mdをIBM i上に置くこともできるようになりました。
  • Bob自身がPremium Package for iの機能をフルに使って、生成したソースのIBM iへのアップロードとコンパイルまで担当してくれる
  • ルールやガイドを.mdファイルにきちんと書いておけば、Bobはおおむねそれに従って動く
     (言うまでもなく、これはPython側でも同様のセオリー)

最後に May the Bob be with us.

IGUAZUはIBM Bobを「使う」だけでなく、実際の現場での使われ方を通じて製品の成長にも関わっていきたいと考えています。RPGという長年積み上げてきた資産を活かしながら、AI駆動開発という新しいやり方を現場に定着させていく——その最初の一歩が、今回紹介した検証事例でした。

登壇情報

  • イベント: IBM TechXchange 2026(米国ジョージア州アトランタ、Georgia World Congress Center) Oct 26-29
  • セッション: [TLK-1431] Our Real-World Cases of AI-Driven Development in IBM i + RPG
    Oct 27 3:00 PM - 3:20 PM EDT
  • 形式: Tech Talk(20分)/ COMMON(IBM iユーザー会)同時開催トラック
  • 登壇者: Takashi Fujinuma(Senior Manager, IGUAZU Corporation)
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?