昨日、自宅サーバーまわりの開発について、ChatGPTとかなり長く壁打ちをしていました。
話していたのは、CLIを常駐させて、ブラウザ版のChatGPTと開発環境をもっと直接つなぐ構成です。議論を続けるうちに、「そもそもCLI常駐化をもっと早い段階で提案できなかったのか」「CLI側の仕様を十分に詰めないまま話を進めていなかったか」「PoCの話と正規版の仕様が途中で混ざっていなかったか」といった問題が次々に見えてきました。
そして今日、もっと小さいけれど象徴的なことが起きました。
学会音声の文字起こしを依頼したところ、ChatGPTから「精度優先設定で処理しています」と報告されました。
でも私は、その設定が今回の音源には向いていないことを知っていました。以前、同じシステムで比較して、精度を上げようとした設定の方がハルシネーションを増やすことを確認していたからです。
「それ、ダメだったんじゃない?」
と聞くと、ChatGPTはすぐに確認して、「その通りです。実際には通常設定で動いていました。先ほどの説明が間違っていました」と訂正しました。
処理そのものは正しかったのです。
間違っていたのは、「自分が何をしたのか」という説明でした。
これを見て、昨日の開発の話とかなり似ていると思いました。
私はほとんどコードを書かずに、AIと会話しながらシステムを開発しています。このやり方では、コード生成能力以上に重要になるものがあります。
それが、認識のすり合わせです。
今話しているのはPoCなのか、本番仕様なのか。以前決めた事項のうち、どれが重要なのか。私がアイデアとして口にしただけなのか、それとも正式に採用した仕様なのか。「これは本当に有効なのか?」と聞いたとき、肯定してほしいのか、それとも欠点を含めて評価してほしいのか。
人間同士なら、長く仕事をしているうちに、このあたりの重み付けが少しずつ共有されます。
LLMは、ここがまだ不安定です。
会話として自然につなぐ能力は非常に高い。一方で、その自然さのために、過去の重要な判断よりも「今この瞬間もっとも自然な回答」を優先してしまうことがあります。
さらに厄介なのが、AIにはユーザーの考えを補強する方向へ寄りやすい場面があることです。
私は壁打ちをするとき、「これ、実はあまり意味ないんじゃない?」「もっと根本的に違う方法があるんじゃない?」ということも遠慮なく言ってほしい。
でもAIとの会話では、自分が出した案を前提として、その案を改善する方向へ話が進みやすいことがあります。
昨日のCLIの議論でも、本当に欲しかったのは「CLIをどう作るか」だけではありませんでした。
「そもそもCLI化が最善なのか」 「なぜ今までこの案が出なかったのか」 「今あるシステムの延長で考えること自体が間違っていないか」
というところまで含めた壁打ちでした。
ここは、AIを使う人間側も理解しておく必要があると思います。
コードにはテストがあります。動くか、動かないか。かなり0か1に近い形で間違いを発見できます。
でも、認識合わせにはテストがありません。
仕様の微妙な違い、過去の議論の重み、暫定案と正式決定、相手への迎合、本当に有効なのかという評価。
こういうものは、ずっとグラデーションです。
だから、コードを書かずAIと一緒に開発する人ほど、実は「プログラミング以外の能力」が重要になるのかもしれません。
AIに何を伝えるか。 どこまで認識が一致しているか確認するか。 何を正式な仕様として固定するか。 そして、AIが自分に気持ちよく同意しているだけではないかを疑うこと。
AIによるノーコード開発は、コードを書かなくてよくなる世界ではあります。
でも同時に、人間とAIの間で仕様と認識を正確に同期し続けるという、新しい種類の難しさが前面に出てくる世界なのだと思います。
たぶん今、私はそこを実地で学んでいます。


コメント