目的
最近ChatGPTの有料プランに加入して色々試しているときに、ふと「誰かに書いたプログラムのレビューをして欲しい。ChatGPTを使ったらプログラミングの学習のパートナーになるのでは...?」と思い立ちました。自分も学習始めの頃は「エラーの内容が英語で書かれているし、何を指摘しているかよくわからない!もういや!」となっていましたが、ChatGPTならもう少し人間に寄り添ってくれるかもしれません。少し実験してみました。
実験
ChatGPTに、以下のような形で少々雑なリクエストを出してみました。人間にこんなお願いをしたら「んな初歩的なこと俺に頼むな」「は?そんなもんググったら一発だろ」「本読め」と罵詈雑言を浴びせかけられること間違いなしでしょう。この誰かに頼みごとをするというハードルがグッと下がるのが、AIの良いところですね。
そうすると入門用の例題を7つほどつらつらと紹介してくれました。確かに初心者にはちょうどいい難易度かもしれません。
と、いうことで1番目の問題「1から10までの整数を順番に出力するプログラムを書いてください。」に対して、下記のようなクソコードを投げてみました。さて、どうなるか...
以下がChatGPTの回答です。うーんさすが...正解ということを判定するのはもちろんのこと、もっとスマートな解答例まで教えてくれる...優しい...
わざと間違った出力をするプログラムを渡してみる
では、以下のような「エラーではないけど、所望の答えと異なるプログラム」を与えてみましょう。このプログラムでは1〜10だけでなく11も出力されてしまうので、回答的には間違いになります。是非指摘して欲しいところですが...
i=1
while(1):
print(i)
if(i>10):
break
i=i+1
うーんこれはダメでした。きちんと誤答であることを指摘してくれません。しかし、しれっと正解のコードを出して訂正してくるあたり、相手を傷つけない優しい性格なのかもしれません。
いちおうこのことをChatGPTに指摘してみました。ちゃんと自らの非を認めているようだ。これは、なかなかプライドの高くなってしまった人間にはできることではないですね。AIならではの素直さ・謙虚さが伺えます。
エラーを含むプログラムを渡してみる
次に「エラーが出て実行不可能なプログラム」として、以下のようなプログラムを渡してみましょう。このプログラムでは5行目で"="で比較をしているのでSyntaxErrorが発生しますが、さてこれは指摘してくれるでしょうか。
i=1
while(1):
print(i)
if(i=10): # =で比較しているのでSyntaxErrorになる
break
i=i+1
おぉ...ちゃんとエラーを指摘してくれました!しかもエラーの発生箇所と、その解決方法まで教えてくれるとはなんとお優しい...
ChatGPTへのお願いの仕方を変えてみる
もしかしたら冒頭のお願いで「もしエラーがあったら指摘して欲しいな」しかいっていないので、エラーしか指摘してくれないのかも。
というわけでこういうお願いを追加。
するとエラーだけじゃなくてプログラムの出力結果が所望のものでは無いことも指摘してくれうようになりました!お願いの仕方で教師としての精度が変わるのかもしれません。
まとめ
今回はプログラミングの学習パートナーとして、ChatGPTが使えるかどうかを実験してみました。結果としてまだ少し粗さはあるものの、こちらのお願いの仕方次第で、かなりの精度でプログラミング学習をサポートしてくれるパートナーになりうると思います。なんといっても、こちらがプログラムをかけるまで、じっと何も言わずに見守ってくれるのが嬉しいです。書籍やオンライン教材などはどうしても学習が単調になりがちですが、ChatGPTを使うことでレビューやディスカッションを行えるようになり、プログラミング学習がより捗るかもしれません。
何より、プログラミング学習初心者がぶつかる「エラーの内容が英語で書かれているし、何を指摘しているかよくわからない!もういや!」という、大きな障壁が取り除かれるかもしれません。