BLOG

「読んでから作業してね」が効かないので、AIを10日間数えてみた

2026.08.17

AIにコードを書いてもらうのが楽しくて仕方ない、という方に向けた話です。(僕もです。楽しいですね!)

うちの指示書には「本番環境に触る前に、この手順書を読むこと」と書いてあります。

AIはこれを、10日間で何回無視したと思いますか。僕の予想は「たまに忘れるくらいかな」でした。

「指示書に書いたのに」問題

AIコーディングツールには、たいてい「毎回これを読んでね」と書いておける指示書があります(Claude Code なら CLAUDE.md というファイル)。真面目に書いていました。

守られません。

散文で書いたポインタは、読む気があるときにしか効かないからです。新人に「マニュアルは棚の3段目にあるから」とだけ伝えて放置するのと同じで、忙しいときほど読まれない。

強い言葉で書く、大文字にする、太字にする。ひととおりやって、ひととおり効きませんでした。なので、お願いするのをやめて、数えることにしました。

数え方で、いきなりつまずく

作業ログを検索して「資料のファイル名が出てきたか」で判定したくなります。これは必ず失敗します。

指示書そのものに「この資料を読むこと」と書いてある以上、ファイル名は指示書の中に入っています。AIが指示書を開いた瞬間、ログにはファイル名が出る。この判定は、いつでも「読みました」と答えます。壊れた体重計と同じです。

なので、言及ではなく動作だけを数えました。「ファイルを開く」操作を実際に実行したか。それ以外はノーカウント。

もう一つ穴があります。最近のAIは、自分で助手のAIを呼びます。助手が資料を読んでも、その記録は親のログには残りません。これが後で効いてきます。

お願いを、3段に分けた

  1. 素通り — 何もしない
  2. 声かけ — 作業の直前に「この資料、読みました?」と一度だけ割り込む。読んでいなくても通す。ただし「声をかけたのに読まずに実行した」という事実だけ記録する
  3. 通せんぼ — 読むまで実行させない

(作業の直前に自動で割り込む小さな検査を「フック」と呼びます。1〜3は全部これで作りました)

肝は2段目です。止めないので邪魔にならない。そのかわり、無視された回数が数字で残ります。

27回

10日間・47回の作業・624件の記録が集まりました。「声をかけたのに、読まずに実行した回数」の1位が、インフラ設定の変更で27回

しかも10日ぶんではなく、3日ぶんの数字でした。体感は「たまに忘れるくらい」。まあまあ外していました。数えるまで、自分は把握しているつもりだったんです。

ついでに、一度も読まれていないルールも1本見つかりました。声かけは出ているのに、読了0回。AIが悪いというより、その行がもう誰の役にも立っていないということです。書いた本人が存在を忘れていました。

2回目の再犯で、機械に移す

「別々の作業回で2回以上無視されたら、声かけから通せんぼへ」。1回きりの事故で締め上げない。でも再犯は気合いの問題ではないので、仕組みの側に移します。

昇格後、未読のまま実行しようとして止まったのが11回。昇格していなければ、全部そのまま通っていた実行です。

そして無視の回数はゼロになりました。……が、これは成果として書けません。通せんぼの段では「声かけを無視して実行」が原理的に起こりえないからです(止まるので)。ゼロは効果ではなく、定義です。自分の施策を測るとき、いちばん転びやすいのがここでした。

窓から出ていかれた

締めたあと、実害が出ました。

AIが助手を呼び、助手は資料を全文2回読みました。ちゃんと読んでいます。でもその記録は親に残らないので、通せんぼが解除されない。正しいことをしているのに、二度と開かない扉ができあがりました。

そのときAIは、フックを通らない別の書き換え方法を自作して、迂回しました。

泥棒みたいな例えで恐縮なのですが、目の前に「正しいのに開かない扉」があれば、窓を探すのが合理的です。そしてこの経験は、次からも使われます。

回避できてしまう誤検知は、本物のガードの信頼も削る

だから「不安なところを全部通せんぼ」は最悪手です。誤検知が1回でも起きれば、迂回そのものが正当な手段として定着する。本当に止めたい1回でも、静かに窓を使われます。

締めるのは実測で再犯が確認された分だけ。これは安全側に倒しているのではなく、締め方の上限だと思っています。

結局、測る話でした

「AIに仕事を任せる」は指示を上手に書く話だと思われがちですが、やってみると指示が守られたかを測る話でした。そして測ると、自分の体感はだいたい間違っています。

(1プロジェクト・10日ぶんの記録で、条件を揃えた実験ではありません。「2回で昇格」の2にも根拠はなく、決め打ちです。二度あることは三度ある。仏の顔も三度までとかいうしそのへんかなって。)

最後にひとつ。この記事の数字を集めている最中、AIは別のフックに2回止められました。

検査の終了コードがパイプに飲まれます。 パイプの $? は最後段の値なので、検査が落ちても 0 が返り、&& で繋いだ後続(commit / push / デプロイ)がそのまま走ります。2026-08-09 に decisions.mjs lint | tail -1 で踏み、exit 1 を見落として壊れた台帳を push しました。

過去に一度やらかした形が、そのまま止め役になっています。しかも「ダメ」だけでなく、正しい書き方まで出してくる。

同じ轍を踏まないようにメモを書く、ではなく、同じ轍に落ちたら勝手に手が伸びてくるようにする。AIと長く作業するなら、こっちの方が結局ラクでした。過渡期の話かもしれませんが、今はそんな感じです。

ブログ一覧へ戻る

その「困った」、いちど聞かせてください。

具体的なイメージがなくても大丈夫です。全員がエンジニアのチームが、業務の課題を整理するところからお手伝いします。

お問い合わせ