はじめに
私たちaチームは「IBMi×AI」というテーマで活動してきました。
グループ活動開始当初はIBMが提供する生成AIであるIBM Bob(以下、Bobと呼びます)が利用できるようになったばかりだったため、
- Bobは何ができるのか
- 既存の生成AIとは何が違うのか
- 実際の開発で使えるレベルなのか
を知ることを目的に検証を始めました。
まずは、Bobの操作に慣れるためメンバーがそれぞれ自由に触りながら、
- ソースコードから仕様書を作る
- RPGプログラムを生成する
- プログラムの解析をさせる
- 画面レイアウトを作らせる
といった検証を実施しました。
Bobでどのようなことができるかを体験したのち、各自が業務で使用している生成AIを含めて比較を行うことになり
- Bob
- Microsoft copilot(以下Copilotと呼びます)
- Claude Code(以下Claudeと呼びます)
を対象として検証を進めました。
共通仕様「受注管理システム」を各AIに作らせてみた
比較を行うため、まずBobで受注管理システムの仕様書を作成しました。
そして各AIに対して同じ仕様書を渡し、次のようなプロンプトでRPGソースの生成を依頼しました。
IBMiのRPGプログラムを作りたい。この仕様書を参照してプログラムソースを作成して。
この時点ではコーディング規約やルールをほとんど渡しておらず、「使用書だけを渡したらどこまでできるのか」ということを確認するための検証でした。
生成されたプログラムを比較したところ、AIごとの特徴だけではなく、ルールを設定しているかどうかによる差も見えてきました。
グループの中には、すでに業務でClaudeを利用してコード生成を行っており、社内ルールやコーディング規約を事前に設定しているメンバーがいました。
そのメンバーが生成したプログラムは、コンパイル完了までにある程度の時間はかかったものの、最終的にはコンパイルを通し、画面を表示して動作確認まで行うことができました。
一方で、BobやCopilotについては、ルールやスキルの設定を行わずに検証を進めていたため、コンパイルを通すまでに苦戦する場面が多く見られました。
特に、以下のような問題が発生しました。
- 入力フィールドの欠落
- 桁数不一致によるエラー
- 画面サイズを超える項目配置
- FFRPGと固定長形式の認識違い
これらの問題は、Bob、Copilot、Claudのいずれでも発生しました。
入力フィールドの欠落
仕様書上には存在している項目なのに
- 画面に出てこない
- 入力できない
- 定義そのものがない
というケースがありました。
受注管理システムという入力項目が多い画面では、この問題が多く見られました。
FFと固定長の認識違い
IBMi開発では、各社によって
- 固定長RPG
- ILE RPG
- FFRPG
のどれを開発環境としているか異なります。
今回の仕様書ではILE RPGを指定していましたが、各社の環境が異なるため、そのままでは利用できない生成結果になることがありました。
そのため
「固定長で出力してください」
や
「FF形式で再作成してください」
といった追加指示を行い、再生成するケースが発生しました。
コンパイルまでに必要だった指示パターン
また、コンパイルエラーを解消する際のやり取りについても比較しました。
単純に「コンパイルが通らない」と伝える場合よりも、
- 発生している現象だけを伝える
- 原因を指摘する
- コンパイルエラーメッセージをそのまま提示する
という形で具体的な情報を与えた方が、各AIとも修正精度が高くなる傾向がありました。
発生している現象だけを伝えるパターン
コンパイルが通りません
エラーがあります
画面が表示されません
AIに原因を考えさせる方式を取りました。
最も手軽でしたが、修正の精度は低いように感じました。
原因を指摘するパターン
入力フィールドが不足しています
固定長で作成してください
これらは修正対象を明示するため、精度は向上しました。
実際の検証でもエラー内容を具体的に指摘したほうが、現象だけ伝えるパターンよりも改善が早いという傾向を確認できました。
コンパイルエラーをそのまま提示するパターン
RNFXXXX
CPFXXXX
などのコンパイルエラーの番号を入りつける方法です。
最も精度が高く、Copilotでは2~3回程度のやり取りで動作するレベルにまで生成することができました。
Claudeでは、コンパイルエラーをもとにコンパイルエラーを修正するプログラムを挟んだことで
最終的には、短時間でコンパイルエラーの無いプログラムを生成することができたという事例もありました。
まとめ
今回の検証を通して、生成AIは仕様書からRPGプログラムを生成できるものの、まったくルールを設定していない状態では短時間かつ少ないやり取りで、コンパイル可能なプログラムを作成することは難しいということがわかりました。
AIそのものの性能差だけでなく、
- コーディングルール
- 社内規約
- RPGの開発標準
- 過去のコンパイルエラー情報
といった知識を事前にルールやスキルとして与えることが重要であるということがわかりました。