MENU

開発中のRPG特化の生成AI「IBM i Code Assistant」を紹介、FF RPGを生成、コードの説明、テストコード生成 ~大規模言語モデル開発プロジェクトへの参加呼びかけも

IBMは5月に開催された「POWERUp 2024」(米国)で、「IBM iへの生成AIの組み込みを推進中」であることを公表したが、その概要が6月21日の「IBM i World 2024」で紹介された。

「IBM Power & IBM i」と題するスティーブ・ウィル氏(IBM i CTO兼チーフアーキテクト)とダグラス・ギブス氏(IBM i製品マネージャー)のセッションの中でのこと。

それによるとIBMは過去2年間、「IBM iのワークロードとAIをどのように組み合わせて使用するかについてIBM iユーザーと話し合いを重ねてきた」(ウィル氏)という。その結果、データ分析、運用支援、開発支援の3つに対してニーズが高かった。

「データ分析」に対するニーズは、Db2 for iのトランザクションを監視・分析してトレンドの分析や異常検知をすばやく行うこと。「運用支援」に対しては、稼働中のIBM iを監視してリアルタイムでモニタリングを行い、アラートの発報や自己修復を実現するニーズ。また操作支援の関するニーズも高かった。3つ目の「開発支援」は、コーディングの支援やコードの理解などに関するニーズである。

IBM i World 2024のセッションでは、3つ目の開発支援に関してIBMが現在推進中の「IBM i Code Assistant」(仮)について説明があった。

IBM i Code Assistantで現在検討中の項目は、以下の4つ。

❶ヘルプ支援:既存のRPGの修復を支援
❷コード生成:開発者の自然な指示に基づき、フリーフォームRPG(FF RPG)を生成する機能
❸コードの調査・説明:既存のRPGコードを調査し、内容について説明する機能
❹テストコードの生成:テストプログラムの自動作成機能

IBMではこれを実現するために、RPGに特化した大規模言語モデル(LLM)の開発とトレーニングを開始し、それと並行して「質問」に応答してFF RPGコードを生成し(=❷)、かつ既存のRPGコードの内容を説明できるか(=❸)をテストした。

その結果、❸に関しては「RPGを知らない人がいても、その人に他のプログラミング言語のスキルがあれば、IBM i Code AssistantにRPGコードを説明してもらうことでより簡単に学ぶことができた」と、ギブス氏は述べた。

また❹のコード生成に関しては、次のような「質問」をし、FF RPGコードを生成可能なことを確認したという。

FF RPGコードの生成

質問

以下の SQLで定義されている給与計算式に基づいて、指定された従業員IDを持ち、指定された時間数の仕事をした従業員に対して支払われる金額を計算するFF RPGのプロシージャを生成してください。この計算には、給与計算テーブルから取得できる従業員の給与率と税率を使用します。

CREATE TABLE payroll(
employee_id INT NOT NULL,
pay_rate DECIMALal(7,2) NOT NULL,
tax_rate DECIMALal(7,2) NOT NULL,
・・・・・

原文の英文
原文の英文

回答(生成されたFF RPGコード)

RPGコードの調査・説明

質問

コード-テキスト、指示:次のRPGコードを要約してください。
(Code-Text.Instruction:Summarize the next RPG code)

原文の質問とRPGコード(左側)と回答として表示されたコードの説明(右側)
原文の質問とRPGコード(左側)と回答として表示されたコードの説明(右側)

回答(コードの悦明:上図の右側の文章)

上図右側の日本語訳は以下の通りである。

「RPGLE コードは、メッセージ ステータス コードをテキスト記述に変換する「GetMsgStatTxt」というサブルーチンを定義します。

プログラムの開始時に宣言される変数は 2 つあります。メッセージ ステータスを保持する 1 文字の変数である wMgSta と、ステータスのテキスト記述を保持する 10 文字の変数である wMsgStaTxt です。

「GetMsgStatTxt」サブルーチンは、Select ブロックを使用して、wMsgSta の値に基づいて wMsgStaTxt の内容を決定します。wMsgSta が D、R、または U の場合、対応するテキスト (それぞれ削除済み、既読、未読) が wMsgStaTxt に割り当てられます。wMsgSta のその他の潜在的な値に対しては、他のアクションや代替ケースは指定されていません」

テストコードの生成

質問

以下の手順と DDL に基づいて、この手順のいくつかのエッジ ケースを実行するユニット テストを記述してください。ユニットには、SQL を目的の状態にするための SQL DML を含めます。

質問の原文
質問の原文

回答

以下のようにテストコードが生成された。

IBMでは今後、RPGに特化した大規模言語モデルの開発とトレーニングを進め、将来的には以下を実現したい、としている。

・システム/36用のRPG Ⅱなどの古いRPGコードのFF RPGへの変換
・オープンソース言語を適用できるRPGコード内のセクションの提案
・古いデータ定義とアクセスの最新のDb2とSQLへの変換
・他の言語が出発点である場合のモダナイゼーションの支援

IBM/日本IBMでは現在、RPGに特化した大規模言語モデルを開発するためのRPGコードの提供を呼びかけている。

日本IBMの担当窓口は、久野 朗・高橋由記子の2氏で、連絡先は下記。
ibmiworld2024@wwpdl.vnet.ibm.com

 

[i Magazine・IS magazine]

新着