コード生成AI——ClaudeやChatGPTのようなものに「こういうものを作って」とお願いすると、プログラムを書いて返してくれます。私たちの“お願い”を、機械が分かるプログラミング言語に翻訳してくれているわけです。
では、ここで一つ想像してみます。もし私たちが、自然言語(ふだんの日本語)ではなく、最初からプログラミング言語そのものを話すようになったら、どうなるのでしょうか。
「早めにスイング」を、プログラミング言語で言うと
たとえば、野球のコーチが、バッティングのアドバイスをする場面を考えてみましょう。
ふだんの言葉なら、コーチはこう言います。
投手の動きに合わせて、早めにスイングする
これをプログラミング言語で表すと、たとえばこうなります。
def check_timing(timing_ms):
"""
timing_ms:
0 = 理想のタイミング
+値 = 遅れている
-値 = 早すぎる
"""
return abs(timing_ms) <= 80
砂糖さんうっ、いきなりコードが出てきた…
身構えなくて大丈夫です。やっていることは単純で、スイングのタイミングのズレを数値で測って、前後80ミリ秒以内なら「OK」、外れていれば「ダメ」と、判定しているだけです。実際に動かすと、こうなります。
print(check_timing(40)) # True 少し遅いがOK
print(check_timing(120)) # False 遅すぎる
print(check_timing(-100)) # False 早すぎる「タイミングが合う」という、なんとなくの感覚が、abs(timing_ms) <= 80 という、誰が見ても同じ答えになる形に置き換わっています。
ここに、自然言語とプログラミング言語の、決定的な違いがあります。「早めにスイングする」の“早め”は、人によって違いますよね。コンマ1秒を早めと感じる人もいれば、半テンポを早めと取る人もいる。自然言語は、こういう曖昧さを残したまま通じます。一方、プログラミング言語は、その曖昧さを許しません。「80ミリ秒以内」と、きっちり決める。
私たちがプログラミング言語で話す世界でも、伝わらないものがある
もし私たちが、このプログラミング言語を、ふだんの言葉のように話せるようになったら——それは、コード生成AIが書いているのと同じ言語で、私たちが直接やりとりするということです。つまり、人間とシステムの間で翻訳してくれるコード生成AIは、そもそも要らなくなる。
では、そうやって誰もが正確な言葉で指示できるようになれば、みんなが同じ解釈で、過不足のないプログラムを作れるのでしょうか。
私の答えは、ノーです。正確に指示できても、伝わらないものが残るからです。
野球の例に戻ります。コーチは、なぜ、あなたにスイングのタイミングを指導するのでしょうか。
単純に、試合に勝てるようになってほしいのか。あるいは、プロ野球選手になってほしいと願っているのか。はたまた、コーチ自身が次に勝たないと首になってしまうのか。——指導という行為の裏には、こうした背景や狙いがあります。“意図”と言ってもいい。そして、この意図が相手に正確に伝わることは、とても難しいんです。
「80ミリ秒以内」という指示は、完璧に正確です。でも、その指示が何のためにあるのか——その奥の願いは、数値には書ききれない。
これは、プログラムを作るときも、まったく同じです。たとえコード生成AIを使わず、自分で完璧に正確なプログラムを書けるようになったとしても、それを使う人の“意図”を汲み取れていなければ、本当に役立つプログラムにはなりません。
プログラムは、使ってこそ価値が出るもの、です。最終的に「これは使いやすい」「これは欲しかったものだ」と価値を認めるのは、使う人。その人の意図に沿っていなければ、どれだけ正確に動いても、価値は生まれない。
そして厄介なことに、使う人の意図は、本人のなかでもはっきり形になっていないことが多い。「なんとなく不便」「こうだったらいいのに」——言葉にすらなっていない願いを、抱えています。
コード生成AIは、使う人の意図を、すべて把握することはできません。そもそも、その意図が全部具体化されているとも限らないからです。だからこそ、AIがどれだけ完璧なプログラムを書けるようになっても、使う人の意図を理解する人は、必ず要る。むしろ、そこを担える人こそ、これからの時代に価値のある人材として評価されていくのだと、私は思います。


コメント