見出し画像

ChatGPTとペアプロした

お疲れ様です。Y研究員です。パワーアップしたChatGPT-4が出てきました。能力が高すぎて、あちこちから大騒ぎが聞こえてきます。それと関連して興味深いツイートを見つけたので、2つ紹介します。

なぜやろうと思ったか

「○○とハサミは使いよう」と言ったものです。上手に使えば結果は出ますが、使い方が分からないと何も出来ません。ChatGPTも練習すれば使い方が上達すると思いました。

相談しながら2人でプログラムを書くペアプログラミングです。なるほどChatGPTは対話型なので、AIと相談しながらプログラミングができると理解しました。

早速やってみた

というわけで、面白そうなので早速やっていました。課金してないので、相変わらず無料のChatGPT-3です。お題は「迷路づくり」にしました。幼稚園児が迷路にはまって、買ってあげたドリルをすごい勢いで消費するので自作すれば節約になるかな、というのが動機です。

ChatGPTは情報を多く与えると、望ましい結果が得られると聞きます。つまり丁寧に話しかけるといい結果がでるので、最初は迷路を書くアルゴリズムから聞いてみました。何個か提案してきたので、次の質問でコードの量や計算量、あとは迷路の見かけなどで比べてもらいました。どれも問題無さそうだったので、とりあえず最初に提案してきた「Recursive Backtracker」をC++で書いてもらいました。

プログラミングをしてもらったところ、解答が長くなったので途中で切れてしまいました。しかし、続きを書いて、という書いてくれます。当たり前かもしれませんが、コピペしてくっつけたらコンパイルも通ってちゃんと迷路が出力されました。

ただ、実行しても毎回同じ迷路が出てくるので改良をお願いしたら乱数のシード(std::srand(std::time(nullptr));)をmainに入れてくださいと言われたので、言うとおりにしたらちゃんと毎回違う迷路が出てきました。

生成された迷路

結果をDBに保存したりPDFに出力したいので、どうしたらいいのか尋ねているうちに、基本的な設計がないまま継ぎ接ぎになると分かったのですこし立ち止まって考えました。もう一つ考えたのは、プログラムが長くなるとコピペが面倒なのでコンパクトに書ける言語も聞くことにしました。

プログラムの設計は、必要な機能を対話しながら確認することができます。進歩すれば要件定義のドキュメントなんかも出力できそうです。コンパクトに書ける言語はPythonがおすすめだと言うので、さっそく迷路を作ってもらいました。

聞いたらすぐにプログラムが出力されました。1回の返答で間に合ったのでそのままコピペして実行するとエラーがでました。そのエラーをコピペして質問したら、謝りながら修正案を出してきました。しかしその修正案でもエラーがでて、結局3回位くりかえすもののバグは解消しませんでした。おそらく質問の仕方が悪かったのだと思います。

やってみた感想

Twitterで見たとおり、質問の仕方(使い方)で結果が変わるとよく分かりました。Google検索はテクニックを身につけると欲しい情報が得やすくなります。それと同じで、対話型AIを上手に使うためには経験が必要です。すぐ「つかえないー」と言うのは簡単ですが、もしかすると対話型AIを使いこなせない人間の方がスキルが低い、とかいう事にもなりそうです。

またプログラムはどんどん書いてくれますが、欲しい機能を考えて設計をちゃんとしないと部品ばっかりが大量に手に入る事態になります。そのまま整理しないで作業すると、読むのも辛いスパゲッティコードが出来上がりです。あとは新規でどんどん書いてくれますが、メンテナンスとかはどうなんでしょうか。人間が読みやすい(保守性の高い)コードを保つためには、コピペ駆動開発のChatGPTではない別なツールが必要そうです。

しかし人間の意図を読み取りプログラムを書いてくれますが、わざわざ人間が読みやすい形式に出すのは少し不思議でした。返答すべきロジックが完成すれば、コンピューターで実行できる形式で出したほうが、あとが楽なはずです。人間が読める形式にするのは、人の目で確認が必要だからと理解しました。性能が上がってくれば、コンピューターがそのまま実行できるファイルなどを吐き出すようになるかもしれません。

まとめ

ChatGPT-3とペアプロしてみました。人間に例えると、プログラムは書けるけど、なんとなく不安になる人でした。「大学でプログラミングやってました!」と自己申告する新卒くらいなイメージです。しかし課金すると使えるChatGPT-4の報告を見ると、一般プログラマレベルに上がるそうです。成長著しい若手ではなくAIに追いかけられる時代ですかね。

今年は桜が早いですね。というわけで写真は桜にしました。たぶん池袋とかそのへんだったと思います。

ではまた。

無料のプログラミングクラブCoderDojoを運営するにあたり寄付を受け付けています。お金は会場費・Wifiの費用・教科書に使用します。