はじめに
生成AIによってITエンジニアの仕事がなくなる?コードを書かなくてもよくなる?という話をSNSで多く見かけるようになりました。
GitHub Copilot Workspaceのプレビューの発表もあり、この流れはさらに加速するのではないかと思っています。
しかし、AIがエンジニアの仕事を奪う、というテーマに説明できない違和感を覚えるのです。ITエンジニアの身からすると確かに自分の仕事がなくなるのは困るのですが、そういったことではなく、何かを見落としているようなそんな不安が付きまとうのです。
今回の記事では、この違和感について自分なりに考察した結果を共有したいと思います。
ポイント1:入力に自然言語を用いることが本当に最適なのか?
そもそも自然言語とは私たち人対人のコミュニケーションで利用されるツールです。常に新しい言葉が生まれたり、時代とともに言葉の使い方も変化していきます。私たち人が使いやすいように進化していくのが自然言語です。
次にプログラミング言語は、対PCで用いられる言語で、対PC用に最適化されています。もともとアセンブリ言語というより機械語に近いプログラミング言語がありましたが、人間にとっては理解が難しく開発難易度が高かったため、高級言語(高水準言語)という形で現在のプログラミング言語が発展してきました。
ここで一つ疑問が生まれます。自然言語とプログラミング言語はそもそも利用目的が異なるため、自然言語でシステムを作成することが本当に最適解なのか、と。
図で表現すると以下のような形になると思います。
低水準言語から高水準言語への移行が成功した理由としては、低水準言語を知らなくてもシステムが作成できるレベルまで進化したから、だと考えています。
つまり、AIによるシステム作成が成功するためには、下図のようにプログラミング言語を知らなくてもシステムの作成ができる状態まで行く必要がある、と考えています。
私たちITエンジニアはこれまでの経験でデバッグが非常に難易度が高い作業であることを心に刻まれていると思います。顧客の環境では発生しているが、自分の環境では不具合を再現できない、など単純なエラーメッセージを解決するだけがデバッグではありません。問題解決のためには、ネットワーク、OS、アプリケーションのバージョンなどあらゆるレイヤーの内容を疑い、ひとつづつ検証して可能性をつぶしていく作業が必要であり、これが本当にAIでできるのか?、というのが疑念の根幹にあるのではないでしょうか。
つまり、すべてをAIに任せることができないのであれば、結局のところプログラミング言語の知識は必要であり、AIが仕事を奪うまでいかず、一部の作業の効率化にとどまるのではないか? という感想を皆さん抱いているのではないでしょうか。
ポイント2:かゆいところに手が届かない
WYSIWYG (What You See Is What You Get)という単語を聞いたことがある人も多いと思います。これは簡単に言うと、例えばMicrosoft Wordなどで選択した部分の文字サイズを変える、文字色を変えることができる、ということです。
この考え自体は当たり前になっているのであえて意識する人はいないと思いますが、自然言語で指示を出すということがWYSIWYGの考え方に反しているように感じます。つまり、GUIからCUI(CLI)に回帰しているのではないか?と感じるのです。例えば自然言語でシステムを作成したとして、この部分の文字サイズをもう少し大きくしてほしいと感じた場合どう指示を出しますか?「ユーザー一覧画面の○○コンポーネント内のXXの説明個所の文章を2pt大きくしてください」と指示しますか?
もし、この指示で該当箇所が修正されなかった場合、結局コードを自分で修正する未来が容易に想像できます。
自然言語で指示を出してシステムを作成するユースケースにおいて、ある程度の大枠の指示は自然言語が向いているかもしれませんが、詳細な修正は自然言語は向いていない、と感じます。
この根本的な原因としては現状のAIには思考が抜け落ちているから、と感じます。
例えば、ある入力(○○の部分の文字サイズを大きくしてほしい)があったときに、私たち人間はいろいろなことを考えます。
しかし、AIは原則入力のこと以上はしません。例えば、文字サイズを大きくしてほしいという入力があれば、文字サイズを大きくすることしかしません。つまり、現状のAIは言われたことしかしないポンコツ社員(しかも入力が限定されているので、図示しながらここをこう変えてください、といった指示も出せない) という位置づけではないでしょうか。(少し論理が飛躍しているので異論は認めます)
LLMはあくまでテキスト生成モデルであるため、思考能力はありません。(ただし、Agent機能などに代表されるように、AIによる思考・判断を自動化しようという動きはあります)
初回のシステム作成においてはある程度AIによる自動化が進んだとしても、そのシステムの保守までAIがしてくれないのであれば、他人が作ったよくわからないシステムを人間が保守する、という地獄のような未来が待っています。
最後に
機械学習が流行ったときも透明性、説明できるAIが求められました。今回の生成AIも結局のことろ中身はブラックボックス(過去に黒魔術と揶揄されたことも)となっており、結局一部の作業しか任せることができないという着地に落ち着きそうな気がしています。
MictrosoftがCopilot(副操縦士)というネーミングで展開しているのはなかなかうまいなと思いました。現状のAIはどこまで行っても人を置き換えることはできないが、人をサポートする役割である、ということでしょう。