AIが普及する時代にもプログラミングを学ぶ意義はあるか?
近年、ChatGPTに代表される、まるで人と話すくらい自然なコミュニケーションを取ることが可能なAIサービスが登場しています。(参考:Introduce ChatGPT)
これらは事前に人間社会に関する大量の知識を学んでおり、また最先端のAIアルゴリズムを搭載したシステムによって実現されています。
そのため、従来のサービスよりも一歩進んだ体験を提供しています。
このようなAIは、人間の仕事を代わりにこなすようになると言われることもあります。
近年のAIはとても優秀ですね
もしそうだとすれば、私たちは仕事のためのスキルを身につける必要がなくなるのでしょうか?
中でも、エンジニアの仕事がなくなってプログラミングスキルが不要となることはあるのでしょうか?
この問題について考えてみたいと思います。
近年登場したAIサービスについて
まずは、近年登場したAIサービスが今までのものとどう違うのか考えてみます。
冒頭のような疑問が浮かぶようになったのは、新しく「生成系AI」が登場したことが理由ではないでしょうか。
生成系AIは、与えられた文章(一般的な文章と区別するためプロンプトと呼ばれます)を解釈し、その目的を満たすコンテンツを生成します。
ChatGPTを利用すると分かりますが、GoogleやWikipediaのように検索するのではなく、あたかも人が聞いて意図を理解したかのような解釈をしてくれることが特徴です。
例えば「勉強の意味を教えて」と質問すると、辞書通りの意味だけでなく、目的やメリットを合わせて最終的な結論を述べてくれます。
別のサービスでは、生成系AIにイラストや写実的な画像を作らせるものもありますし、音楽や映像を作らせるものも出現しています。
そして、ある程度のプログラムであればコードの出力もできるようになってきているのです。
となると当然、AIはエンジニアのプログラミング作業を代替できるのでは?という疑問がわくわけですね。
プログラミング作業が代替される可能性はある
確かに、AIがプログラミング作業を十分に行うことができるようになり、人間が直接プログラムを書く必要がなくなる可能性はあると思います。
これまでにも、技術の発展によって人間の作業が不要になってきた例はたくさんあります。
それはプログラミング作業であっても例外ではないでしょう。
さらにはデザインも代替され、プロンプトからアプリを作れたり、Webサイトを出力できるようになるかもしれません。
では、私たちはプログラミングを学ぶ必要がなくなるのでしょうか?
僕は、そうは考えていません。
少なくとも、今の方向性でAIが発展する限り、本質的にエンジニアリングが不要になることはないからです。
詳しく解説します。
プログラミングスキルが不要になるわけではない
プログラミングスキルが不要となる理屈を改めて言語化すると、「人の言語とコンピュータの言語の両方を理解する存在がいれば、私たちはそれに対して人の言語のみ話せばOK」ということになります。
つまり、AIにプログラムを外注すればよいということですね。
しかし、これにはちょっと違和感があります。
プログラミング言語化するプロンプト
AI側は私たちが入力した自然言語を解釈してプログラムに落とし込むわけですが、ここに問題があります。
自然言語は、表現に大きな幅がある言語です。「ちょっと」や「すぐに」といった値は個人の主観や状況によって異なる値域を取ります。
このままでは意図と異なる値になってしまう可能性があるので、こうした曖昧な言葉をAIが推測可能なものにしていく必要があり、プロンプトの推敲が必要となります。
推敲したプロンプトは再利用できるように管理され、AIに意図が正確に伝わるような語彙、構文ルールができあがります。(こうした作業全体のことをプロンプトエンジニアリングと呼びます)
あれ、ちょっと待ってください。
自然言語をシステムが理解できるような形式で記述する…それってもはやプログラミング言語ではありませんか…?
利用側の事情が残る
結局、AIは賢いトランスパイラ(変換器)の一つに過ぎず、私たちがそれに対してなんらかの言語で入力するのは変わらないのです。
人間同士の日常会話でも、適切に意図が伝わらずすれ違いが発生することがありますよね。
その表現をそのまま持ってくるのは、私たち人間側にとって難しいと思います。
となると、もう少し厳密な表現が可能な共通言語(プログラミング言語)を使わせてもらうのが落とし所になるのではないかと考えられます。