RPGCAプロジェクトは始まったばかり
茂木 映典氏(以降は、「茂木」と記述):
Steveのブログ記事にもある通り、今回のRPGCAプロジェクトは以下の実現を目指して、生成AIに学習させる為のRPGのサンプル・コードを収集するコミュニティー活動です。
- Help:既存のRPGの修正作業を支援
- Generate Code:開発者の自然な指示に基づきフリーフォーマット形式ILE RPGを生成
- Examine and Explain:既存RPGコードを調査し説明
- Generate Unit Test:テスト・プログラムの作成
IBMチャンピオンをはじめとする、世界中のIBM i およびRPG技術者の方々からコード寄贈の申し出を頂戴しており、期待度の高さが伺われます。もちろん、日本からの参加も可能です。
コードの寄贈をご希望になる方は、まず、「AIforIBMi@ibm.com」に英語で連絡をしてください。その後、担当者から連絡が入りますので、このプロジェクトへの参加に対する合意をしていただきます。
図1 Gitリポジトリへの格納方法
さらに、GitHubのIDをご用意いただき、担当者にご連絡いただきます。これにより、このプロジェクトのためのGitリポジトリに対するアクセス権がGitHubのIDに付与されます。
そして、このプロジェクトでは、Gitリポジトリにコードを含む必要な内容を格納する形で情報をご提供いただきます。
このプロジェクト専用のGitリポジトリに対するアクセス権が付与されましたら、図1のような形式でコードを格納していただくことになります。
ここで注意していただきたいのは、単にソースを丸ごとではなく、必ずQuestion & Answer形式でご提供いただきたいという点です。このデータ構造におけるinput.txtとoutput.txtの部分が該当します。
図2 Hello Worldのサンプル
例えば、ごく簡単な例で「Hello World」と表示させるサンプルプログラムで説明すると、この図2の中のinput.txtには「Explain the following ILE RPG code」というような質問文が入り、i1_helloworld.rpgleには実際のRPGのコードを格納します。
そしてoutput.txtには「The fully free-form ILE RPG program displays the message ‘hello world’ to the user.」という説明文が入る、といった塩梅です。
RPGCAプロジェクトへの参加に関する日本語ガイドも準備を始めており、完成次第、公開させていただきます。
ご提供いただくコードは日本語で入力してくださっても良いのですが、最初は英語での訓練が優先されるようです。ただ、日本語環境での訓練も必要だと思いますので、日本語でのインプットをお願いしたいと思います。
矢作 英幸氏(以降は、「矢作」と記述):
実際の業務アプリケーションでは、外部記述の表示装置ファイルや印刷装置ファイル、データベースファイルなどが使われるので、この形式でコードを提供するのは難しいかもしれません。
茂木:
確かにそうですね。いきなり何千行ものプログラムを提供するより、最初は数百行のモジュールとかサブ・プロシージャー的なコードを、QA形式のタグをつけて提供する方法で始める方が、参加しやすいのではないでしょうか?
RPGCAプロジェクトに期待する事
矢作:
ChatGPTなどを使ってみて思うのですが、ユーザーサイドの期待値としては、ある程度実用性のあるアプリケーション、例えば「受注入力」や「出荷一覧」のような完全なプログラムのサンプルを生成してくれて、あとはユーザーがそこに例えば「小計を追加する」などのロジックを追加して利用する、といった使い方が望まれているような気がします。
あるいは、サブルーチン的なものの提供もよいかもしれません。「10営業日先は何月何日か?」を計算するモジュールとか、システムAPIを呼び出して「あるファイルの活動レコード数を返す」とか、指数関数や三角関数の計算を代行するモジュールとかを、さっと出してくれたら便利ですね。
茂木:
今GitHubにあるRPGCAプロジェクトのサイトをみていると、当初収集したいシナリオは以下であると明記されています。
- 自然言語によるRPGの説明
- 自然言語の説明から新しいRPGコードをプロトタイピング
- RPGユニット・テストの生成
- RPGに関する質問を自然言語で行う
- 固定形式のRPGを自由形式 (フリーフォーマット) に変換する
これについては、すでに優れたツールが市場に存在しているので、生成AIを使う必要はないかもしれません。しかし、これは生成AIを訓練する非常に効果的な方法だと考えています。 - 古いRPGを新しいRPGにモダナイズする
さらに、私たちはRPGをモダナイズすることに非常に興味を持っています。これは最初の成果物にはなりませんが、この価値の高い変換について生成AIを訓練するためのデータ収集を開始したいと考えています。
どのような成果物がでてくるのかは現時点では不明ですが、今後、RPG開発者を始めとするIBM i ユーザーが生成AIを活用できるようになるために、AIを訓練するプロジェクトである、とご理解をいただければと思います。
矢作:
確かに、現在でもARCADやRDi、VS Codeを使って固定桁形式からフリーフォーマット形式への変換ができます。ただ、これらが行うのは比較的単純な変換であり、プログラム構造やロジックを大きく変えるような変更はできません。
例えば、レコードレベルIO(READ/CHAIN/WRITEなど)からSQL(SELECT/FETCH/INSERTなど)への変換までができるようになると良いですね。また、ACSのSQLスクリプトの「例」のように、実用的なコード・スニペットを提示してくれると使いやすいと思います。あと、モノリシックなRPGのプログラムをモジュール化してくれると有難いです。RDiにもコードをプロシージャーにリファクタリングする機能はありますが、より包括的なリファクタリングをしてくれれば、生産性やコードの品質の向上に役立つでしょう。
茂木:
将来的には、仰ったようなことも実現したいという構想はあるようです。楽しみにお待ちください。
矢作:
最初から全ての要求を満たすのは無理なので、目指すところの最終形と、そこに至るまでのロードマップなどがあれば、より参加しやすくなると思います。
茂木:
確かにその通りですね、そのような情報があるかどうか、グローバルチームに確認してみたいと思います。
矢作:
あと、日本から協力するのであれば、DBCSへの対応を確認したいです。
例えば、データベース上では50バイトのOpen(混用)で定義されている住所フィールドを、画面に表示する際に30桁に切り詰める場合、DBCSには前後にシフト文字(SO/SI)が入るので単純に切り詰めるとエラーになります。そういった点も確認したいですね。
茂木:
ぜひ、ご支援、ご協力をよろしくお願いいたします。
RPGCAは始まったばかりのプロジェクトですが、RPGとIBM i の将来を担う重要なプロジェクトです。 日本アイ・ビー・エム株式会社 IBM Powerテクニカルセールスの茂木 映典氏によると、 RPGCAプロジェクトへの参加を希望される方は、こちらのメールアドレスに連絡をしていただきたいとのことです。
iWorldでは、今後もRPG コード・アシスタント・プロジェクトの動きを紹介してまいります。
取材協力
日本アイ・ビー・エム株式会社 |
株式会社アイエステクノポート |
IBM i のチーフ・アーキテクトであるSteve Will氏もこの「開発者向けのコード生成」について頻繁に言及しており、生成AIを使ってRPGコードをモダナイズするIBMのイニシアチブ「RPG コード・アシスタント(RPG Code Assistant。以下「RPGCA」と略記)」の立ち上げが発表されたばかりです。
※併せて読みたい:
「You and i -IBM、AIベースのIBM i RPG コード・アシスタント・プロジェクトを始動-」
「Steve Willインタビュー:IBM i の現在と未来(第2回) IBM i とAIが向かう未来」
今回、大注目のRPGCAプロジェクトについて、日本側の窓口である日本アイ・ビー・エム株式会社 IBM Powerテクニカルセールスの茂木 映典氏と、Steve Will氏のブログ記事でも紹介されたIBM チャンピオン(IBMに認定されたエキスパート)である株式会社アイエステクノポートの矢作 英幸氏にお話を伺いました。
※併せて読みたい:矢作氏の運営する「ぐりちゃんねる」について
「【ここにもIBM i情報】YouTubeで可愛い仔猫からIBM i を学ぶ」