ChatGPTとプログラミングに関する覚書

このパラダイムシフトに関して、特に目新しい内容ではないが、現在の自分の利用状況やうっすら考えていることについてログとして残しておく。
いずれ貴重な歴史資料となるに違いない。

なお現在はだいたいGPT-3.5を使っている。
ChatGPT PLUSにお金を払っているのでGPT-4も使えるけど、今のところレスポンスが遅いのでGPT-4を使うのはGPT-3.5の結果があんまりなときだけというかんじ。

頭の良さがだいぶ違うので多少時間がかかってもGPT-4を使っている。

ChatGPTにやってもらっていること

コードを書いてもらう

こういうコード書ける?と箇条書きで動きの仕様をまとめて投げるとコードをサクッと書いてくれる。
コピペして動かすと打率は5割くらいか(この打率に関しては自分のプロンプト力が低い可能性もある)

ちなみに最近Astroをいじっているのだが、よくNext.jsの関数のまじったコードを返してくる。当然動かない。
LLMの性格的に前例のない新しいものには弱いのかもしれない。

一方でアルゴリズムやWordPressのコードなど、ネットにたくさんサンプルが転がっているコードは軽やかに正解を書いてくれる。

自分で書くのが少しめんどくさいコードなどで、動くのが出てきたら儲けものくらいの感覚で使っている。普通に便利。

ただやってもらいたいことをうまく整理するスキルが必要なので割と頭使うというか、プロンプトを書くのに負荷は感じる。

コードのバグを直してもらう…のはイマイチ

ChatGPTにコードを書いてもらって仕様通りに動かないものが出てきたとき、バグを直す指示はなかなかうまくいかない印象がある。
バグをひとつ直すと別のバグが出たりとか。そしてそのバグを直してと言うと前のバグがまた復活する。このバグのモグラたたきが無限ループする。

思った通りに動かないものが出てきたらプロンプトを見直してまるっと作り直してもらった方がいいかも。または諦める。

コードの書き方を教えてもらう

Ruby、Python、PHP、JavaScriptなど色んな言語でうろ覚えな正規表現、文字列操作、日付操作、ファイル操作などの書き方やイディオムを質問すると、サンプルコード付きで解説が返ってくるので重宝している。ググって現役プログラマーが解説する系を踏んでイライラすることもなくなった。

あと自分で書いたコードが力技すぎると思ったときにもっといい書き方ない?とか聞いたりしている。
より一般的でスマートな書き方を教えてくれたりする。

こういう基本的なことに関してはけっこう信頼性高い。
おかげでググる頻度は確実に減っている。

信頼性高いといいつつそんなに根っこからは信頼してなかったりもするので、ダブルチェックでググったり、ChatGPTさんに念を押して聞いたりはしている(この答えの自信度を10段階で表すといくつ?間違いなく10です!ほんとかよ、GPT-4さんどう?みたいな)

新しい言語やフレームワークの学習効率も高まって便利。

コードを変換する

RubyのハッシュをJavaScriptのオブジェクトに変換とか、YAMLをJSONに変換とか、そういうのはほぼ間違いなくできる。

トランスパイラーとしてはかなり便利。すごいぞChat-GPT。

Rubyでこう書くやつPythonだとどうやるの?みたいな質問もイケる。

エラーメッセージについて聞く

エラーメッセージが出たときにとりあえずChatGPTに投げると参考になる答えが返ってくるので、ググってStackOverflowとかに流れ着いて原因を探るのに比べるとかなり時短になっている。

かなり便利。

コードをレビューしてもらう

コードを食わせてレビューをお願いするとなかなかいいかんじにコードレビューしてくれる。

的外れなことも言ってきたりするけど、コードだけだとコンテキストが伝えきれないってこともあるので、そういうのはスルーして気にしない。

便利。

プログラマの仕事はなくなるのか

自らの生業についてうっすらと考えていること。

炭鉱夫のように急に仕事が消えてしまうことがあり得るんじゃないか、昔からそんなことを漠然と思っていたので、本当に消えたらちょっと感慨深い。
まあ男一匹何をしても生きていけるとは思ってるので、特に慌てることはない。今まで培ってきたスキルが無価値になるというのはしんどいはしんどいだろうけどね。

そういう情緒的なことをひとまず置いて考えると、一口にプログラマといってもその内訳はピンからキリまであるので、まずはそこを分けていく必要があるだろう。

よわよわプログラマー

まず最低レベルの層。多重下請けの一番下の層で、常に誰かに細かく指示をもらいつつ、日々コピペとワークアラウンドで過ごしているような人々。
これは現在のChatGPTだけでもけっこうなくせるんじゃないかな。少なくとも人数は減らせる。

バグ修正を依頼したら別のバグを埋め込むのがデフォ&まともな動作確認すらできてないくらいの質だと、中間で仕様考えたり指示出ししてる人がChatGPTにコード書かせた方が速い気がする。
しかし中間搾取と言う経済的なモチベーションがこの層の維持に寄与して意外となくならない可能性もある。非効率にした方がお金をもらえるなら非効率にやるよねって言う(多重下請けがはびこっている現状からして)

中堅プログラマー

次に中間から上位の層。質や量の違いはあれ自分で仕様を考えることもできて、ある程度自律的に動ける人々。
これくらいの層はChatGPTだけではまだ当面なくならないのではないかな。
ChatGPTにコードを書かせたり支援ツールとして使いこなすこともできるので、この層でおこるのは単純なスピードアップだと思われる。

仮にユーザーの曖昧な要望から思い通りのアプリケーションを作成できるような技術やサービスが出てきて、仕様のとりまとめから動作確認からひいては運用までうまくやってくれるようなものになるなら、この層も危うい。だがさすがにまだそれは夢物語に思える(特に作るまでは超高速でサクッとできても運用を安定して続けていけるのかという問題。負の遺産がものすごい勢いで増殖していくだけの可能性)
また、モノはできても人の方がすぐには追い付いて行かないだろう。こと日本に限って言えばFAXがいまだに幅を利かせてる国なので。

つよつよプログラマー

最後にトップレベルの層。プログラミングを通じて新しい価値を生み出しているような人々。
この層はよほどのことがない限りはAIに淘汰されることはなさそうに想える。
AIと協調して色々と創造性を発揮していくのではないかな。

このレベルの人材が要らなくなるほどに段階が進んだとしたら、それは人間の頭脳が不要になるってことだと思うので、AIとの生存競争で人間ができることはコンピューターの電源を抜くことしかない。

まとめ

短期的には心配していない。
長期的には緊張感をもって注視していく必要がある。