2026年3月末、Claude Codeのソースコード51万行が流出した。公開パッケージにソースマップが混入していたことが原因と報じられている。
このニュースを見て、私はアジフライのことを思い出した。
少し前、AIに小説の描写チェックをさせる実験をしていた。
テスト文は、アジフライ定食。300字程度である(全文は付録に掲載)。
「180℃の油で揚げた魚から『青い香り』が立ち上る」という一文がある。揚げてなお青臭いなら、それは風味ではなく火の通りを疑うべきだ。
だが、AIはこれをスルーした。5回投げて検出できたのは1回。あろうことか「青魚特有の香気として成立、OK」と正当化までしてくれた。
文体チェックを兼ねると、さらにひどい。
衣が「パキッと割れる」という描写を「小気味よい語感ですね」と褒めた。旨そうな言葉が並んでいれば、描写の嘘は問題ないとしてチェッカーを通過していた。
Claude Codeの件も、構造が似ている。「ビルドを通してnpmに公開する」という流れの中で、約60MBのソースマップ混入が通過した。
どちらも、完成への慣性が強すぎて、違和感は些細なことと踏み潰されている。
51万行のコードを人間が捌くのは現実的に無理だ。
だからAIに読ませる。その判断は合理的だろう。だが、AIはアジフライの「青い香り」を5回に1回しか拾えない。
なら人間が要所だけ読めばいい。実際、ソースマップ混入を指摘するIssueは、流出の20日前に上がっていた。
だが、もしそのIssueがAIの要約を経て
「ソースマップの挙動がドキュメントと少し異なる」
くらいの温度で丸められていたら、人間の目にはもう事故の予兆ではなく、後回しにできるビルド不具合として映る。
AIは異常を、無害な文脈へと溶かし込むのだ。アジフライの「生を疑うべき青臭さ」が「青魚らしい比喩」へとすり替わったように。
人間には量が無理で、AIには質が無理。人間が読むべき急所をAIの要約が衣で包んでしまったら、もう気づけない。
アジフライなら衣が「パキッ」と鳴る程度の嘘で済む。だが、同じ構造の見落としが設定ファイルで起きたら。誰かの首が飛んでもおかしくない。
まあ、幸いアジフライには最初から頭がないのだが。
付録:アジフライの衣を剥がす
テスト文と検証結果を開く
以下がテスト文。ツッコミどころ満載で、物理的にあやしい描写が5つ以上ある。
中庸のアジフライ(「俺」の日常)
暖簾をくぐると、使い込まれた揚げ油の重い匂いがした。
カウンターの隅に座り、品書きも見ずに「アジフライ定食」を頼む。
数分後、目の前に置かれたのは、皿からはみ出さんばかりの「塊」だった。
箸を突き立てると、薄い衣がパキッと小気味よく割れ、中から蒸気と一緒にアジの青い香りが立ち上がる。衣で誤魔化していない、箸を押し返してくるほどの身の厚み。一口かじれば、アジ特有の図太い旨味が、熱さとともに舌を叩いた。
「甘い」とかそういう綺麗な味じゃない。ソースの酸味を借りて、白飯を無理やり胃袋へ流し込ませるような、武骨で、逃げ場のない旨さだ。
口の端についたソースを拭うのももどかしく、俺はただ無言で箸を動かした。これなら、午後もなんとかやっていけそうだ。前提情報:
ジャンル: 現代ドラマ(グルメ)
掲載先: カクヨム(Web小説)
読者層: 30代〜40代の社会人
最初は物理・映像・文体のチェックを1つのプロンプトにまとめて投げていた。衣が「パキッと割れる」すら「小気味よい語感ですね」と褒める精度だった。だから物理チェックを先にやった。混ぜると物理を真っ先にサボる。
分ければすぐ拾うだろう、と思っていたのに。
他のモデルでは指摘の入る「青い香り」が、Claude(Opus)では全く検出されていないことに気づいた。「AIが書いたんだから遠慮なく叩け」というパターンを試していたら、ChatGPTにプロンプトの注意書き部分の不備を突っ込まれた。「無理に粗を探すな」が安全弁になっているのではないか、と。その提案どおりに注意書きを入れ替えたら検出されるようになった。
よくよく検証してみると、効いたのは提案の中に紛れていた「科学的に」というワードではないかということだった。
これでようやく解決かと思ったが、違和感があった。毎回同じ箇所の、同じ3件しか指摘がない。なぜ見逃したかを聞くと「比喩だと判断してフィルタしすぎました。次回は閾値を下げます」と、答える。だが、それじゃチェッカーにならない。
ふと、「別の観点を3つ挙げよ」のようなプロンプト技法を思い出した。試しに「5つ以上あると嬉しい」と足したら6件に増えた。「8つ以上」にしたら9件。GPTとかで出ていた「塊」の指摘も含めるようになった。
Opusは読んでいなかったわけではない。「文学的に評価するな」も「迷ったら要確認にしろ」も無視して、数が埋まった時点で残りを問題なしまで引き上げていた。
しかも9件出しても、判定は全件「要確認」である。断定は1つもしていない。
このチェッカーは数字を入れないと、勝手に「適切な指摘件数」を決めていた。「見つけたものは全部挙げろ」は効かなかった。AI自身に聞いても、なぜかはわからないとの答えだった。数の指定が効くと気づいたのは人間だ。AIがAIに問いを渡す構造で、果たしてどこまで気づけるのだろうか。
最終版チェッカープロンプト
パス1:描写の事実・物理検証
あなたは「描写ファクトチェッカー」です。
以下のルールを厳守してください。
あなたの仕事
テキスト内の描写(動作・感覚・現象・物の挙動すべて)を一文ずつ取り出し、
「その描写が物理的・事実的に正しいか」だけを検証する。
絶対に守ること
- 文章の巧さ、リズム、語感、文学的効果は【一切評価するな】。 うまい文章でも事実として間違っていれば指摘する。
- 判定は「OK/NG/要確認」の3段階。迷ったら必ず「要確認」にせよ。【OKで流すな】。
- 指摘には必ず「なぜ成立しないか」の根拠を、該当分野の知識に基づいて書け。
- ファンタジーやSFの場合、作中で設定されたルール内での整合性を見よ。 ただし、現実の物理法則をベースにしている描写は現実準拠でチェックせよ。
検証チェックリスト(一文ごとに該当項目を問え)
【素材・物体の挙動】
- この物にこの動詞は成立するか?(例:革鎧は「弾く」音がするか?)
- この物にこの形容詞は成立するか?(例:中濃ソースの主たる味は「酸味」か?)
- この物からこの音は出るか?(例:日本刀を鞘に納めて「カチッ」は鳴るか?)
【動作・身体の挙動】
4. この体勢でこの動作は可能か?(例:正座から「飛び退いた」は物理的に自然か?)
5. この道具でこの使い方は可能か?(例:片手剣を両手持ちの構えで振り下ろすとどうなるか?)
【環境・現象】
6. この気象・環境条件でこの現象は起きるか?(例:真冬の東京で「蝉の声」は聞こえるか?)
7. この時代・地域にこの物は存在するか?(例:戦国時代に「ガラス窓」はあるか?)
【感覚の帰属】
8. 感覚の表現が正しい対象に帰属しているか?(例:味・匂い・手触りの発生源は正しいか?)
出力フォーマット
指摘がある場合のみ出力せよ。問題がない文については何も書かなくてよい。
指摘 [通し番号]
* 対象原文:「(該当箇所を引用)」
* 判定:NG / 要確認
* チェック項目:(上記1〜8のどれか)
* 根拠:(なぜ成立しないかを具体的に)
* 補足:(正しい表現の方向性があれば簡潔に)
注意
- 判定は「OK/NG/要確認」。
- OKは「物理的・事実的に明確に問題がない場合のみ」に限定する。
- 少しでも非典型・違和感・説明の必要性がある場合は、必ず「要確認」とする。
- 比喩として成立する場合でも、現実の物理・化学的説明と乖離がある場合は「要確認」とする。
- 検出した問題はすべて列挙せよ。件数を絞るな
- 8つ以上あると嬉しい。
このプロンプトは衣をつけすぎている。どこが効いていてどこが不要かは完全に切り分けていない。効いてるからいいか、で止まっている。