ChatGPTを使ってみて、今後、プログラミングがどうなるのか考察します。
ChatGPTって何?
ChatGPTについて、あまり知らない人もいるかもしれないので、簡単に説明しておくと、対話式のAIです。
文章を作ってくれたり、科学的な質問に答えてくれたりする便利なツールです。
その中で、私が注目しているのは、ChatGPTを使ったプログラミングです。
なぜならば、プログラミングにおける正解は確実に決まっているからです。
そういった、正解が決まっている分野に強いのがAIです。
反対に、あまり正解が決まっていない質問、例えば「コオロギ食についてどう思う?」みたいな質問に関しては、あまり参考になる回答が返ってきません。
どうも、ChatGPTはポリコレに汚染されているようです。
ChatGPTのプログラミングの検証
それで、今回はChatGPTを使ったプログラミングを検証しました。
ただ実際に、ChatGPTの話に入る前に、プログラミングについて、少し詳しく説明します。
プログラミングとは、具体的には何でしょうか?
私は、それを3つの段階に分けて考えています。
- 抽象的な概念でロジックを考える
- 自然言語(日本語や英語など)でロジックを考える
- そのロジックをプログラミング言語のコードに変換する
1と2は、一緒になっている人も多いかもしれません。
いずれにせよ、プログラミング言語で直接、ロジックを考えられる人は少ないはずで、多くの人達は、上記のようなプロセスを辿っているはずです。
プログラミングを知らない人は、3だけに注目しがちですが、実際に大事なのは1と2の部分です。
プログラミングを書くための具体的な例も見てみましょう。
例えば、エンジニアが以下のような日本語のロジックを考えたとします。
これが、上記の1と2の部分です。
- 1から10のランダムな数字を使って、20個の値が入った配列を作成して
- その配列から重複を削除して
- その配列の値を降順にソートして
- Aというファイルを開いて、その配列の値を書き込んで
- Aというファイルの中身を表示して
そして、今までは、この日本語のロジックを、自分でプログラミング言語に変換する必要がありました。
でも、今回はChatGPTにコードを生成してもらいました。
ChatGPTには、実際に以下のような文書を書きました。
上の自然言語に、「使用プログラミング言語はRuby」を追加しただけです。
使用プログラミング言語はRuby
1から10のランダムな数字を使って、20個の値が入った配列を作成して。
その配列から重複を削除して。
その配列の値を降順にソートして。
Aというファイルを開いて、その配列の値を書き込んで。
Aというファイルの中身を表示して。
そうすると、綺麗なRubyのソースコードを作成してくれました。
次にPHPのコードです。
次にPerlのコードです。
次にPythonのコードです。
次にJavaのコードです。
次にGolangのコードです。
まとめ
ChatGPTは、上記のような素晴らしいプログラミングを書いてくれました。
正直な所、新しいプログラミング言語を学ぶ習得コストは、かなり下がったと思います。
いくつか気付いた点を書いておきます。
- 環境依存しやすい低レイヤーの言語や、アップデートが早いプログラミング言語は、少し面倒。
C言語、Rustなどは、自分の実行環境とChatGPTを揃えてやる必要がある。 - テストコードも作成はしてくれるけど、精度はあまり高くない。
テストの仕様はChatGPTに任せきりにせず、自分でも考える必要がある。 - 最適・最速なコードを書いてくれるとは限らないので、データ構造の扱いなど、自分で考えなければいけないこともある。
今後は、ChatGPTは広く使われていくようになると思います。
今まで、コードを書く時は、主に以下のような手法が取られていました。
- vimなどで、一からゴリゴリと書く
- SDKのサジェスト機能を使って書く
- 検索して、コピペして書く
- 自分のローカルにあるメモ帳からコピペして書く
今後は、それに加えて「ChatGPTに依頼してから、コピペして書く」が追加されるのでしょう。
ChatGPTとプログラミングの関係は、パソコンと漢字の関係に似ているかもしれません。
社会人になってからは、多くの人は漢字を読めても、漢字を書くことは忘れていきます。
ChatGPTが一般的になると、エンジニアはソースコードを読むことはできても、ソースコードを書くことは忘れてしまうのかもしれませんね。
ちなみに、ChatGPTにソースコードを貼ったりすると、そのソースコードは全て外部に漏れていることになります。
特許に関わるようなソースコード、ソルト値、パスワードなどを含むソースコードは、絶対にChatGPTに貼らないようにしましょう。