1
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?

カスタムGPT ~RPG Copilotを使ってみた感想~

Last updated at Posted at 2025-10-17

1.はじめに

ご覧いただきありがとうございます。こちらの記事では、活動の終盤にたまたま気づいたRPG Copilotについて、使ってみた感想を書いています。

RPG Copilotの概要や使い方についても、まとめていきたいと思います。

2.カスタムGPT(RPG Copilot)とは

まず、RPG Copilotは「Alessandro Puppo」さんがChatGPTのカスタムGPTという機能を利用して作成した、RPGに特化したAIです。IBMコードの生成・レビュー・編集ができるように訓練されているようです。

下記のように記述がありました。

An expert IBM-i RPG programming assistant, trained on thousands of the best publicly available RPG resources. RPG Copilot can finally help you in generating, reviewing and edit your IBM code.

image.png

次に、カスタムGPTについて、ユーザーがChatGPTをユーザー仕様にカスタマイズできる機能で、話し方などの振る舞いや、命令文などをあらかじめ設定しておけます。
資料などを読み込んで専用で学習させることができるため、専門性の高い回答をすることができます。(会社の就業規則を覚えさせたりして社内FAQを作成したりできますね)

Freeプランの場合は作成ができず、Plus以上を利用する必要があります
使用するだけであればFreeプランでも可能で、およそ5時間あたり10回ほど利用できます
(混雑状況で前後するようです)

3.RPG Copilotを使ってみる

サイドバーにGPT > [調べる]の表示が既にある場合

image.png

ある場合の手順はこちらを展開してください
  1. ChatGPTにアクセスします(サインインが必要です)
  2. [調べる]をクリックします
    いろいろなカスタムGPTが確認できます
    image.png
  3. 検索窓に[IBM i]と入力します
    IBM iに関連するカスタムGPTがたくさん出てきます
    image.png
  4. 今回は RPG Copilot を使用するので、クリックします
    評価などが表示されますね
    image.png
  5. [チャットを開始する]をクリックします
    image.png

これで使用できるようになりました。一度でも質問するとサイドバーにRPG Copilotが表示されます。

サイドバーにGPT > [調べる]の表示が無い場合

image.png

無い場合の手順はこちらを展開してください
  1. カスタムGPTにアクセスします(サインインが必要です)
  2. 検索窓に[IBM i]と入力します
    IBM iに関連するカスタムGPTがたくさん出てきます
    image.png
  3. 今回は RPG Copilot を使用するので、クリックします
    評価などが表示されますね
    image.png
  4. [チャットを開始する]をクリックします
    image.png

これで使用できるようになりました。一度でも質問するとサイドバーにRPG CopilotおよびGPT > [調べる]が表示されるようになります。

マスタ保守のサンプルを作ってもらう

下記のように簡単なプロンプトを作成して、マスタ保守のサンプルを作成してもらいます。

プロンプト
RPGLEの固定フォームで マスタ保守のサンプルを作成ください。
作成してほしいファイルは下記です。
・物理ファイル
・DSPF
・RPGLE

返答については、原文のまま記載します。
興味のある方は「▶」から展開してご確認ください。

RPG Copilot 返答

以下に、RPGLEの固定フォームで実装されたマスタ保守(登録・更新・削除)アプリケーションのサンプルを提供します。以下の3点を順に説明・記述していきます:

✅ 構成概要(マスタ保守の内容)

目的: 商品マスタ(商品コード、商品名、単価)を登録・更新・削除できる
対象ファイル名: PRDMT(Product Master)
機能画面名: PRDMTDSPF
プログラム名: PRDMTMNT(Product Maintenance)

① 物理ファイル(PRDMT)

PRDMT
     A          R PRDMSTR
     A            PRDCOD        5A         TEXT('商品コード')
     A            PRDNAM       20A         TEXT('商品名')
     A            PRDPRC        7S 0       TEXT('単価')
     A          K PRDCOD

商品コード(PRDCOD)を主キーとする商品マスタです。

単価(PRDPRC)は整数(小数なし)で定義しています。

保存例:CRTPF FILE(MYLIB/PRDMT) SRCFILE(MYLIB/QDDSSRC)

② ディスプレイファイル(PRDMTDSPF)

以下は単票形式のDSPFです(1件ずつ表示してメンテナンスする形式)。

PRDMTDSPF
     A          R PRDREC
     A                                      CF03(03 '終了')
     A                                      CF05(05 '登録')
     A                                      CF06(06 '更新')
     A                                      CF07(07 '削除')
     A                                      CF08(08 '検索')

     A            PRDCOD        5A  B  5  5
     A                                      DSPATR(UL)
     A            PRDNAM       20A  B  6  5
     A            PRDPRC        7Y 0B  7  5

     A          R ERRMSG
     A            MSG         50A  O 24  2

保存例:CRTDSPF FILE(MYLIB/PRDMTDSPF) SRCFILE(MYLIB/QDDSSRC)

③ RPGLEプログラム(PRDMTMNT)

以下に固定フォーム形式で記述された、簡易マスタ保守の例を示します。

PRDMTMNT
     FPRDMTDSPF CF   E             WORKSTN
     FPRDMT     UF A E           K DISK

     IPRDREC    DS
     I                                  1   5 PRDCOD
     I                                  6  25 PRDNAM
     I                                 26  32 PRDPRC

     IERRMSG    DS
     I                                  1  50 MSG

     C                   EXFMT     PRDREC

     C     *IN03         IF        EQ *ON
     C                   GOTO      *INLR

     C     *IN08         IF        EQ *ON
     C                   CHAIN     PRDCOD PRDMT
     C                   IF        %FOUND
     C                   MOVE      PRDNAM       PRDNAM
     C                   MOVE      PRDPRC       PRDPRC
     C                   ELSE
     C                   MOVEL     '該当データがありません' MSG
     C                   WRITE     ERRMSG
     C                   ENDIF
     C                   GOTO      LOOP
     C                   ENDIF

     C     *IN05         IF        EQ *ON
     C                   CHAIN     PRDCOD PRDMT
     C                   IF        %FOUND
     C                   MOVEL     '既に存在します' MSG
     C                   WRITE     ERRMSG
     C                   ELSE
     C                   MOVEL     PRDCOD PRDCOD
     C                   MOVEL     PRDNAM PRDNAM
     C                   MOVE      PRDPRC PRDPRC
     C                   WRITE     PRDMSTR
     C                   MOVEL     '登録しました' MSG
     C                   WRITE     ERRMSG
     C                   ENDIF
     C                   GOTO      LOOP
     C                   ENDIF

     C     *IN06         IF        EQ *ON
     C                   CHAIN     PRDCOD PRDMT
     C                   IF        %FOUND
     C                   MOVEL     PRDNAM PRDNAM
     C                   MOVE      PRDPRC PRDPRC
     C                   UPDATE    PRDMSTR
     C                   MOVEL     '更新しました' MSG
     C                   WRITE     ERRMSG
     C                   ELSE
     C                   MOVEL     '存在しません' MSG
     C                   WRITE     ERRMSG
     C                   ENDIF
     C                   GOTO      LOOP
     C                   ENDIF

     C     *IN07         IF        EQ *ON
     C                   CHAIN     PRDCOD PRDMT
     C                   IF        %FOUND
     C                   DELETE    PRDMSTR
     C                   MOVEL     '削除しました' MSG
     C                   WRITE     ERRMSG
     C                   ELSE
     C                   MOVEL     '削除できません' MSG
     C                   WRITE     ERRMSG
     C                   ENDIF
     C                   GOTO      LOOP
     C                   ENDIF

     C     LOOP          TAG
     C                   EXFMT     PRDREC
     C                   GOTO      *INKC

     C                   SETON                   LR

✅ 開発&テストの流れ

物理ファイル作成:CRTPF FILE(MYLIB/PRDMT) SRCFILE(MYLIB/QDDSSRC)

ディスプレイファイル作成:CRTDSPF FILE(MYLIB/PRDMTDSPF) SRCFILE(MYLIB/QDDSSRC)

RPGプログラム作成:CRTRPGPGM PGM(MYLIB/PRDMTMNT) SRCFILE(MYLIB/QRPGSRC)

✅ コメント

これは非常に基本的な固定フォームのサンプルです。

実運用ではバリデーション、ロック処理、コミット制御などの実装も必要です。

現代の開発では、可能であればRPG IV (フリーフォーム)やSQLベースの処理に移行するのが推奨されますが、固定フォームも保守対象で現役です。

必要であれば、フリーフォーム版の同等コードや検索一覧形式(サブファイル)版も提供できます!
ご希望があればお知らせください。

RPGLEで気になる記述はありますが、それとなく返答してくれますね。

実際に物理ファイルのソースに貼り付けてみると、桁位置のエラーが出ましたね。
エラーが出ている行は[長さ]の部分から左に1桁だけずれているようです。
image.png

桁ずれは手で修正をして、記述の無いUNIQUEを追記してもらうため再度聞いてみます。

プロンプト
PRDMTはユニークにしてください

下記のように返答がきました。UNIQUEがレコード名のところに追記されており、エラーが出てしまいました。

PRDMT
     A          R PRDMSTR                    UNIQUE
     A            PRDCOD        5A         TEXT('商品コード')
     A            PRDNAM       20A         TEXT('商品名')
     A            PRDPRC        7S 0       TEXT('単価')
     A          K PRDCOD

何度聞いてもダメそうなので、こちらは手で直していきます。(残念)

DSPFは貼り付けてみると、軽微な桁ずれ(1~3桁)がおきています。
桁ずれに関しては手で直していきます。
image.png

桁ずれを修正の後はコンパイルも通りました。

RPGLEソースを貼り付けてみると、いろいろな行でエラーが出ます。
image.png

桁ずれやIF命令の書き方、文字数オーバーなど。。。
桁ずれは手で修正し、それ以外は再度聞いてみましょう。

プロンプト
PRDMTMNTについて下記の修正をお願いします。 
・IFの記述でエラーが出ます 
・CHAINの記述でエラーが出ます 
・MOVELで日本語をセットしていますが、入力できる桁数をオーバーしています

下記のように返答がきました。

返答
①IFのエラーに関して(2通り)
     C     *IN05         IFEQ      *ON
     C                   IF        *IN05 = *ON

②CHAINのエラーに関して
     C     PRDCOD        CHAIN     PRDMT

③文字数オーバーについて
DS ERRMSG に定義されている MSG フィールドは 半角50バイト。
しかし、日本語(全角)を MOVEL で代入しており、桁数オーバーになります。
     C                   CLEAR                MSG
     C                   MOVEL     '該当データがありません' MSG

①と②についてはこの対応で解決しましたが、③については聞き方が悪いためか、見当違いの回答がきました。

聞き方を変えて再チャレンジしてみます。

プロンプト
日本語メッセージをMOVELで入れると長さの都合上、項目の枠を超えてしまうため、 
対処はできないでしょうか?

下記のような返答がきました。

返答
     C                   EVAL      MSG = '該当データがありません'

実際に反映してみるとエラーが無くなりました。
エラーの修正はスムーズに行ってくれた感覚です。

続いて、コンパイルを実施してみます。が、コンパイルエラーが出力されました。
image.png

このメッセージをRPG Copilotにそのままなげてみます。

プロンプト
RPGLEで下記のようなコンパイルエラーが出ました。対処法を教えていただけますか?

*RNF4013 20      6 入力仕様の未使用の項目がブランクになっていない。省略時の   
                   値としてブランクが使用されます。                           
*RNF4033 30      1 外部名が見つからないか無視されるフィールドである。指定は   
                   無視されます。                                             
*RNF5177 30      1 DO, DOUXX, DOWXX, FOR, IFXX, MONITOR,またはSELECTでENDYY 
                   の指定が欠落している。                                     
*RNF7260 30      2 指定された演算命令で演算項目2オペランドが正しくない。

返答に関しては下記のような予測の内容でした。ソースからエラーを見つけるようなことはできなさそうです。

返答
✅ エラー1:
*RNF4013 20  入力仕様の未使用の項目がブランクになっていない。省略時の値としてブランクが使用されます。

💡 意味:

I仕様(入力仕様)の未使用フィールドに、不要な記述がある。

RPG III形式では、使用しないカラムにスペース以外が入っていると警告されます。

✅ 対処法:

I仕様の未使用の部分をすべて空白にする(スペースで埋める)

もしくは、必要なフィールドのみ記述し、他は削除します。

コンパイルエラーについては、別途解決してみます。。。

4.RPG Copilotを使ってみた感想

RPGに特化したAIと聞いていたのですが、さほどChatGPTと使用感は変わらない感じがしますが、修正要望を出したときに、ほぼ正確に返答したときは驚きました。

サンプルプログラムのたたき台を作成する分には、十分に活用できそうです。
ただ、こちらに関してもある程度の知識が問われると思います。

基本的には有料プラン限定なので、無料プランのユーザーは頻繁に使用することができませんが、機会があれば使用してみてください。
個人的には使用感はあまり変わらない感じです。


■ 当記事の著作権はIBMに帰属します。詳細はこちらを参照ください。

1
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
1
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?