若手技術者のためのIBM i学習に対する「ChatGPT」活用方法【IBM i若手技術者コミュニティ2024】

## はじめに

今回、IBM iの若手技術者を対象に仲間づくりと最新技術情報の収集を目的に日本IBM様が主催する「IBM i若手技術者コミュニティ」に参加させていただきました。
[IBM iの若手技術者コミュニティ始動　～IBM iの仲間づくり、最新情報の収集を目指して](https://www.imagazine.co.jp/ibm-i-community-for-young-generation/)

この記事では、私たちグループの活動内容についてご紹介します。


## テーマ「生成AIは我々IBM i若手技術者を救うのか？」

私たちのグループでは「若手技術者のためのIBM i学習に対するChatGPT活用方法」をテーマに活動を進めました。
IBM i若手技術者の方々の中には「オープンソースと比較してIBM iは情報が少ない...」「相談できる相手が少ない...」といった悩みを抱えている方もいらっしゃるのではないでしょうか？

上記のような問題を解決する一つの手助けになればと思い、IBM i学習に「ChatGPT」をどのように活用できるかを調査しました。


### 実際にやったこと

1. IBM i上でAPI連携することで情報を取得するプログラムを作成
2. 1.のプログラムにバグを入れ込む
3. 生成AIである「ChatGPT」を活用して、プログラムのバグを検出し、問題解決できるかを調査

![01_ibmi_rising2024_v-b_theme.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962887/64425ac7-837a-3e49-6618-e5ec10e124b0.jpeg)


### 調査環境

* OS：V7R5
* 言語：フリーフォームRPG
* エディタ：Visual Studio Code
(拡張機能に「Code for IBM i」を使用)
* 生成AI：ChatGPT（無料版）

## 調査結果

### 概要

* 直接的な質問＋ソースコード全体を添付したプロンプトにより修正案を得る
    * 「ChatGPT」からの提案の中にバグの原因が含まれていた
* 「ChatGPT」からの回答に対して繰り返し質問をすることで、本例では問題を解決することができた
    * 回答の中には適切ではないものも含まれていた。効果を得るためには、質問者が「ChatGPT」の回答に対して、適切な取捨選択を繰り返していく必要があった

![02_ibmi_rising2024_v-b_resultSummary.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962887/925af1e8-ee64-3bb3-f34a-723b0d654599.jpeg)



ここからは「ChatGPT」の各活用例ごとにご紹介していきます。


### ChatGPT活用①エラー修正候補の提案

ChatGPT 活用例の1つ目は、エラー修正候補の提案です。
ChatGPTに直接的な質問と問題が起こっているソースコード全体を投げかけることで、エラーの修正候補として3つの回答が得られました。

知識がまだ十分でない若手技術者にとっては、効率よく解決の糸口を見つける手助けになるように思います。
実際本例では、提案の中にバグの原因が含まれていました。

![03_ibmi_rising2024_v-b_suggestion.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962887/eb73facf-dc76-54c8-9e19-8806aaef40d8.jpeg)


### ChatGPT活用②ソースコードの提案

ChatGPT 活用例の2つ目は、ソースコードの提案です。
今回使用した限りでは、ChatGPTが0から作成したソースコードの活用は現時点ではまだ難しいように思いました。

ChatGPTからは、ハルシネーション（＝誤情報をAIが生成すること）により、IBM iのQSYS2で提供されている関数と、SYSTOOLSで提供されている関数とが混在したソースコードが提案され、もちろんコンパイルエラーとなりました。

しかし、質問者が知識を身に付け、より詳細な情報を投げかけることができれば、活用の幅は広がるように思います。
今回のケースですと、「サンプルソースを基に、SYSTOOLS.HTTPGETCLOB関数を使用してresponseを取得する例を記述してください。」（＋サンプルソース添付）といったように、あいまいさを減らすことで「ChatGPT」が提案したソースコードであっても、わずかな修正で期待通りの機能を得ることができました。

![04_ibmi_rising2024_v-b_sourceCode1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962887/99384425-2359-cc28-2a39-e367d1b98dba.jpeg)
![05_ibmi_rising2024_v-b_sourceCode2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962887/98d4c0e7-51d9-7944-ebfa-da99b24de8a6.jpeg)


### ChatGPT活用③関連知識の補完

ChatGPT 活用例の3つ目は、関連知識の補完です。

ChatGPTは関連する知識を補足しながら回答してくれるため、質問者は効率的に学習できると思いました。
ただし、回答の中には適切でない部分が含まれることもありました。

そのため、質問者自身が適切な回答を取捨選択する必要があるように感じました。

今回は以下の図のように、真ん中の提案に対して繰り返しの質問をしました。
![06_ibmi_rising2024_v-b_knowledge.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962887/fadac96c-c7d5-091d-f05a-4684431a4528.jpeg)


### ChatGPT活用④ソースコードのデバッグ

ChatGPT 活用例の4つ目は、ソースコードのデバッグです。

発生している問題の説明、確認すべきソースコードの場所の要求、そしてソースコード全体を添付したプロンプトを送ったところ、本例では適切な場所を指摘してもらい、効率的に問題箇所を発見することができました。

## おわりに

本例ではChatGPTを活用して、プログラム(FF RPGLE)の誤りを検出し、問題を解決することができました。
ただし、質問者自身がChatGPTの回答が正しいか判断するためにも、ある程度の知識は身につける必要があるように感じました。
問題解決の初めのステップとして、ChatGPTを活用することは効率的であり、場合によっては効果的だとも思います。

ご参考になれば幸いです。最後までお読み頂きありがとうございます。