ここんところ生成 AI に関することばっかり書いてる気がしますね。それだけ世間的にもホットな話題だし、私自身も興味関心を持っているということでもあるのですが。
短い生成 AI の歴史の中では、生成 AI による自動プログラミングはもはや古典に属する話題かもしれません。生成 AI 登場の当初からプログラミングの補助は言われていましたし、これでプログラマは失業するという論は現在まで繰り返し言われていることですね。それに対して、こんな感じじゃないかなぁというところを述べてみたいと思います。
昔話をすると、かつてはアセンブラで書かないとまともな処理速度は出ないという時代がありました。高級言語のコンパイラは存在しましたが、性能が低くて速度はそこまで出なかったんですね。速度が重要でない処理はコンパイラ言語を使い、速度が重要なところはアセンブラで書くという使い分けが当たり前でした。
しかし時代が進み、コンパイラとオプティマイザの性能が格段に向上しました。合わせて CPU のパイプラインの複雑化も影響は大きいです。かつての CPU は挙動が単純でしたので、人間のプログラマが脳内で挙動を再現することが容易でした。それゆえにプログラマによる最適化が可能だったんですね。でもパイプラインが複雑化して、実行時にどのような挙動になるかの予想が難しくなりました。人間がこうしたら速くなるんじゃないかと思って書いたコードが、実際の CPU で実行してみるとかえって遅くなるということも当たり前に起こるようになりました。一方、オプティマイザはそうした CPU のパイプライン挙動まで予測して最適化を行いますので、オプティマイザが速いとしたコードは実際に実行しても速いわけです。ここにおいて、人間のプログラマはオプティマイザに敗北することとなりました。まだ一部の用途では人間がアセンブラで書くこともあるようですが、世間一般的には完全に非合理な手段となりました。つまり、アセンブラ開発の世界では人間は AI(この場合はオプティマイザ)に置き換えられてしまいました。
アセンブラが使われなくなったころ、主流のプログラム言語のひとつは C 言語でした。C 言語の特徴の一つに、メモリ管理を全てプログラマ自身が行わなければならないということがあります。必要なメモリ領域があれば領域確保のコードを書きます。確保した領域を操作する処理も書きますし、領域に収まるかどうかの管理も自分で行います。管理が行き届かなければバッファオーバーフローです。ところがその後主流になったプログラム言語のいずれも、ここまでのメモリ管理は不要です。配列を宣言しておけば勝手に拡張されますし、もっと複雑なデータ構造も言語の仕様のなかにあったりもします。メモリ管理の細々とした処理は AI(この場合はプログラム言語処理系)が勝手にやってくれるようになって、人間は失業したのです。
つまりプログラム言語の歴史というのは、下層の構造を AI(何らかのプログラム処理)に任せて人間が行わなくてよくなることと言えるわけです。これを抽象化と言ったりもしますね。今の生成 AI による自動プログラミングも、この一連の流れの一つと言えるのではないかなと思うわけですよ。
生成 AI による自動プログラミングで、いわゆるプログラムコードを人間が書くことは激減しています。今後さらに減っていくことでしょう。ではプログラマは要らなくなるのかというと、そんなことはない。実装フェーズは生成 AI に任せられるようになったとしても、設計フェーズは今のところ人間にしか出来ません。いずれ設計フェーズも生成 AI に置き換えられるでしょうけれど、要件定義は当面人間が行わなければならないでしょう。なぜなら生成 AI は言われたことをこなすのは得意だけれど、自分から何かをしたいという欲求を持たないからです。まあこれもいずれ変わるかもしれませんけどね。各種レポートを自分で読み解いて、何をすべきかを自分で考える生成 AI というのが登場するのも、そんな遠い未来の話ではないでしょう。
プログラマというのが与えられた仕様をプログラム言語に翻訳する仕事だとしたら、それは生成 AI に置き換えられるでしょう。かつてはコーダーという職業がありましたが、現代ではほぼ絶滅しているのと同じようなことですね。しかしプログラマという職業が、実現したい欲求をシステムで実現できる仕様に落とし込む職業だとすると、これはまだしばらく生成 AI には置き換わらないのではないかと思います。また、世間で言われているプログラマ不要論は、この要求仕様から生成 AI への指示は誰でもできることだという仮定に基づいています。「〇〇なシステムを作って」とプロンプトを与えれば生成 AI がサクッと作ってくれるというイメージですよね。でも実際のところとしては、それっぽいものは出来上がったとしても使い物になるわけではない。使い物になるシステムを作り上げるのには様々細かいことを詰めなければならず、そこを詰める専門職がプログラマなんですよね。
ということで、生成 AI によって単純にコードを書くという行為は職業としては消滅するだろうと思います。でもプログラマの仕事は一段階メタになってまだしばらくは残り続けるのではないかと思います。ああ、なんか結論だけ抜き出すと世間で言われてる通りのことだな。まあ、それで合っているとは思うんですけれども。
ところでこの記事では IT エンジニアではなくプログラマと書きました。それは IT エンジニアは結構幅広い概念で、プログラムコードを書かない IT エンジニアも多数いるからです。プログラムコードを書く IT エンジニアという意味でプログラマという呼称を使いました。