GitHub CopilotによるRPGでのAIペア プログラミング
ずっとVS Codeを試してみようと思っていても、これまでそうする機会がなかったという方は、今日のこの機会にぜひとも利用してみることをお勧めします。確かに、RDiユーザーにとっては、お気に入りの設定、コード スニペット、およびコンパイル コマンドを移行するのに多少の手間暇は掛かるでしょうが、移行を後悔させないことはお約束します。
以前の記事、「 VS CodeでCode 4 i 拡張機能を使い始める」では、使ってみようとするきっかけになるような機能や設定について、いくつか紹介しました。そして、SEUユーザーにとっては、確かに、切り換えは気が遠くなるくらい大変だと思えるかもしれませんが、IBM iコミュニティの素晴らしいところの1つは、喜んで手伝ってくれるコミュニティ メンバーが大勢いることです。
今回の記事では、私が愛用している2つの拡張機能を紹介しようと思います。すなわち、GitHub CopilotとGitHub Copilot Chatです。これら2つの拡張機能は GitHubで入手可能です。2021年10月の最初のリリース以来、GitHub CopilotおよびGitHub Copilot Chatは、それぞれ2,200万回および1,600万回以上のダウンロード回数を数え、かねてから素晴らしい機能に、さらに素晴らしいアップデートが加わり続けています。コード アシスタントに関するする限り(RPGプログラマーにとっては)、インストールして、どのようなことができるのか試してみるには、GitHub Copilotが一番手早く簡単だと思います。
費用の面でも、これらの拡張機能は非常にお手頃だと思います。30日間の無償トライアルから始めることができ、その後、3種類の料金プランから選ぶことができます。Copilot Individualは、月額10ドルまたは年額100ドル、Copilot Businessは、1ユーザー当たり月額19ドル、Copilot Enterpriseは、1ユーザー当たり月額39ドルです。この記事では、デモ用にCopilot Businessを使用しています。これらが提供する機能は実に広範囲に及びます。 github.com/features/copilotを参照して、料金プランや機能を比較検討してみることをお勧めします。この記事では、それらの機能のいくつかに的を絞って、RPGプログラマーがどのように活用できるかについて紹介しようと思います。
では、簡単な例を1つ見てみましょう。RPGプログラムで簡単なSQLステートメントを書き、最初に「From」ステートメントを指定してから、「Select」ステートメントを入力すると、Copilotは、以下のように、いくつかのフィールドを提案してくれます。

これはすごいことですが、コンテキストがなければ、Copilotも、どのフィールドが必要なのか分かりません。しかし、私の経験では、ビジネス ロジックが多ければ多いほど、Copilotはコンテキストをじっくり調べるので、提案はより適切なものになります。
Copilotコード アシスタントを使用することで、開発者スピードは25~55%向上するとされています。では、コード アシスタントは、開発者の代わりに作業を行ってくれるのでしょうか。そうではありません。Copilotの好きなところは、私が日常的に書くコードの大部分を管理してくれる点です。
たとえば、私は習慣として、すべてのSQLステートメントについて、SQLCODEが0未満かどうかを確認しています(皆さんにもそうすることをお勧めします)。0未満の場合は、何か不具合があったということです。その場合、社内のロギング機能を使用してこれを記録します。このIfステートメントおよびロギング機能の呼び出しは、通常、10行に満たないコードです。
EXEC SQL
UPDATE file_1
SET fldCH1 = :dsRecord.fldch1,
fldCH2 = :dsRecord.fldch2,
fldCH3 = :dsRecord.fldch3
WHERE FLDKEY = :dsRecord.fldkey;
if sqlcode < 0;
common_logger('Failed to update file_1 record' +
'. key - ' + %Char(dsRecord.fldkey) +
'. CH1 - ' + %Char(dsRecord.fldch1) +
'. CH2 - ' + %Char(dsRecord.fldch2) +
'. CH3 - ' + %Char(dsRecord.fldch3) +
'. SQLCODE - ' + %Char(SQLCODE) +
'. SQLSTATE - ' + sqlstate +
'. SQLERRMC - ' + sqlerrmc);
Endif;
私のコーディングはこのようなことを行うためだと察すると、SQLステートメントの後でEnterを押したらすぐに、CopilotはIfステートメント全体を提案してくれました。Copilotは、テキスト行を前の行と揃えるのが私の好み(可読性のためです)であることを察しているようです。Copilotは、SQLステートメントからのホスト変数をフォーマットして、その後にSQLCODE、SQLSTATE、およびSQLERRMC情報を続けました。プラス記号を整列させるのが好みであることも、Copilotはお察しだったようです。Tabを押して、提案を受け入れたら完了です。これには驚きです。エラーを記録することも大事ですが、Copilotの提案のおかげで、もっと大事なビジネス ロジックにすぐに取り掛かることができるのです。
最近になってCopilotに追加された機能の1つに、「 Ask Copilot」を開く便利なアイコンがあります。

このアイコンは、指先を動かすだけでAIの世界を開き、Copilotとの対話を始めることを可能にします。ただし、画面下部に、対話にどのLLMを使用するか選択する機能があることに注意してください。
次に、Copilotに、フィボナッチ数列を説明する、簡単なRPGプログラムを書いてもらえないかと頼んでみました。すごいです。この回答をコンパイルしてはいませんが、一見して、かなりいい線を行っているように思います。

AIコード アシスタントまたは何らかのAIベースのツールで作業するときは、AIから返された結果は出発点として利用する必要があることは言うまでもありません。必ずしも最終的な回答であるとは限らないからです。

30秒でインストールできる拡張機能にしては、これは驚異的です。
ぜひとも試してみることをお勧めします。私がそうしたように、安価な値札以上の価値があることをご自身でも確かめてみてください。次回の記事では、この他にも使用できるかもしれない完全に無償のAIコード アシスタントがあるかどうか調べてみるつもりです。次回をお楽しみに。RPG言語で使用できるAIコード アシスタントの探究は続きます。