Claude Codeに怒涛の巻き戻しを喰らった話――日本語の「主語省略」はAI時代に事故るのか

今日、開発中にClaude Codeに盛大にやられた。

もっとも、正確にはClaude Codeが悪いわけではない。

悪いのは、たぶん私である。

別の部署からレビューコメントが届いたので、その文章をそのままコピーしてClaude Codeに貼り付けた。そして、

「理解しました?」

と聞いた。

私の頭の中では、

「これは別部署から来たレビューコメントです。まず内容を理解してください。そのうえで妥当性を検討し、必要なら対応方針を考えましょう」

くらいの意味だった。

ところが、そんなことは一言も書いていない。

Claude Codeから見れば、私が突然いくつもの修正事項を貼り付けて、

「理解しました?」

と聞いてきたのである。

当然、理解した。

そして理解しただけでは終わらなかった。

猛烈な勢いでコードを直し始めた。

「いやいやいや、待て待て。それはまだ直せとは言っていない」

と気づいたときには、結構な範囲が変更されていた。

幸いコミットする前だったので、変更を全部巻き戻して事なきを得た。

そして大量の変更が消えていく画面を見ながら思った。

これ、AIの問題というより、日本語の問題でもあるんじゃないか。

日本語では、主語がなくても普通に通じる

日本語では主語を頻繁に省略する。

「昨日行った?」

「行った」

「どうだった?」

「結構よかった」

これだけで普通に会話が成立する。

「誰が」「どこへ」「何をしに」という情報のかなりの部分が消えているが、人間同士なら前後の文脈から補完できる。

むしろ毎回、

「あなたは昨日、その店へ行きましたか?」

「はい。私は昨日、その店へ行きました」

などと話していたら不自然である。

日本語では、分かっているものを省略するほうが自然なのだ。

そして私は、その感覚のままAIに指示していた。

私の頭の中には、

「これは他部署から来たレビューコメントである」

「まだ採用すると決めたわけではない」

「まず内容を検討する」

という前提が全部入っている。

しかしAIの入力欄には入っていない。

人間なら会議の流れや、その場の状況から察することができる。

Claude Codeにはそんなものはない。

書かなかった情報は、基本的には存在しないのである。

AIが賢くなったから、むしろ危ない

昔のAIなら、曖昧な指示をすると、

「具体的に何をすればいいですか?」

と聞き返してきた。

これは面倒ではあるが、安全でもあった。

今のコーディングAIは違う。

かなりの文脈を読み、こちらの意図を推測し、自分でファイルを探し、コードを書き換え、テストまで実行する。

それが便利だから使っている。

しかし、自走能力が上がるほど、最初の解釈を間違えたときの被害も大きくなる。

人間にたとえるなら、昔のAIは「指示待ちの新人」だった。

今のAIは「話を半分聞いたところで、分かりましたと言って猛烈な勢いで仕事を始める部下」に近い。

能力は高い。

仕事も速い。

ただし、勘違いしたまま走らせると恐ろしく速い。

今回まさにそれをやった。

英語にすると、自分の曖昧さに気づく

実際に日本語と英語の両方を使い、AIへ日常的に指示を出している私の感覚では、

情報を誤解なく伝え、ロジックを明示するという用途では、英語の構造は強い。

普段ブログを書いていても感じることがある。

私は日本語を書くとき、かなり主語を省略している。

ところが、それをAIに英訳させると、英語では主語を決めなければ文章が成立しない。

Iなのか。

Weなのか。

Theyなのか。

The companyなのか。

The governmentなのか。

日本語では曖昧なまま通過できた部分で、英語では「で、誰がやるの?」という答えを要求される。

そして出来上がった英語を読み返して、

「ああ、自分が言いたかったのはこれだ」

と思うことがある。

英語では、誰が何をするのかを文章の構造上はっきりさせることを要求される場面が多い。

一方、日本語では主語を消したままでも、ごく自然な文章として成立する。

人間同士なら、それでいい。

問題は相手がAIだったときである。

AIへの指示では、

「これを直して」

ではなく、

「誰が出した指摘なのか」

「AIは何をするのか」

「何を変更してよいのか」

まで文章の中に入れる。

AIへのプロンプトは自然言語で書いているが、性質としてはプログラムに近い。

プログラムなら、変数も処理対象も条件も書かなければ動かない。

AIが賢くなったことで、そこを勝手に補完して動いてくれるようになった。

そして今回、その便利さがそのまま事故の原因になった。

言葉は、その文化が何を区別してきたかを映す

ここから少し話が飛ぶが、言語というのは面白い。

文化によって「細かく区別するもの」が違う。

例えば日本には長い魚食文化がある。

魚について、種類はもちろん、成長段階によって名前が変わる出世魚があり、部位や調理法についても非常に細かな言葉がある。

ブリ、ハマチ、イナダなど、同じ魚でも成長段階によって名前が変わり、さらに地域によって呼び方まで違う。

日本人にとって魚は、それだけ細かく区別する必要のある存在だった。

一方、英語圏では家畜に対する言葉の解像度が高い。

羊なら sheep だけではない。

ram は雄羊、ewe は雌羊、lamb は子羊。

牛も cattle、bull、cow、calf、steer と、性別、年齢、去勢の有無などによって別の単語になる。

日本人が魚を細かく見分けて名前を付けてきたように、牧畜が生活に密着していた社会では、家畜を細かく区別する必要があった。

その社会が何を重要なものとして見てきたのかは、語彙を見ると分かる。

言語は単なる情報伝達の道具ではない。その言葉を使ってきた人たちが、世界のどこに境界線を引き、何を別物として認識してきたのかまで残っている。

日本語で主語を省略しても会話が成立するのも、日本語が積み上げてきたコミュニケーションの形である。

そして今、その長年便利だった「言わなくても分かる」という仕組みが、AIという新しい会話相手を前にして、ときどき事故を起こすようになった。

「察してくれ」はAIにも通じる。でも外すことがある

現在のAIはかなり察してくれる。

少しくらい主語がなくても、前後の会話から驚くほど正確に補完する。

だから普段は困らない。

むしろ困らないからこそ、こちらもどんどん雑になる。

「これ見て」

「直して」

「さっきのやつ」

「これどう?」

そんな指示でも動いてしまう。

そして100回うまくいくと、

「AIは分かっている」

という感覚になる。

しかし101回目に、違う意味で「分かりました」と言われる。

しかも今のAIは、その間違った理解を猛烈な速度で実行できる。

人間向けの文章なら、省略も行間も日本語の面白さである。

ブログまで、

「私は昨日、禅寺へ行った。私は境内を歩いた。私は禅について考えた」

などと書き始めたら、読むほうがつらい。

しかしAIに作業を命令するときは別だ。

誰から来た情報なのか。

これは命令なのか、参考情報なのか。

何を検討してほしいのか。

どこまで変更してよいのか。

ここは省略しないほうがいい。

AIに仕事をさせる瞬間は、少しプログラムを書くように日本語を書く。

今日の私は、

「他部署から来たレビューコメントです。まだ実装しないでください。まず妥当性だけ検討してください」

と最初に一文書けばよかった。

それを省略した結果、Claude Codeは余計な仕事を大量にこなし、私はそれを全部消す仕事をした。

AIによって生産性が上がる時代に、人間の主語省略ひとつで生産性をマイナスにする。

少なくとも今日一日に限れば、AIより先にアップデートが必要だったのは、私のプロンプトのほうだった。