Vondet

← 記録の一覧

実測

Claude Code の効果測定は1日でできます。難しいのは、そのあとの数字のほうです

9本走らせて出た数字は、いまも取り下げていません。取り下げたのは、その数字から書いた3本の記事の中の、8つの文のほうです。

Vondet / 2026-09-26 / 読了 10 分

Claude Code の効果測定は、大がかりでなくても意味があります。私たちがやったのは、1日・1リポジトリ・問い1つです。CLAUDE.md に1行足したら、Claude Code の動きは本当に変わるのか。

同じ種類の作業を、2つの主題で9本走らせて、はっきり分かれました。性質として書かれた道具の説明文のもとで走った7本は、ゼロ。出来事として書かれた CLAUDE.md の1行のもとで走った2本は、2本とも。文面と置き場所は、同時に変わっています。この結果は Claude Code がルールを忘れる理由を書いた別の記事にしてあり、いまも取り下げていません(この記事の末尾からたどれます)。

そのあと、記事を書きました。3本です。

その3本から、8つの主張が出所と突き合わせて生き残りませんでした。うち5つは、すでに公開されていた記事の中にありました。

この測定は、標本が1桁の、自分の家のものです。生成AIの効果測定は、他人の数字の当否を決めなくても始められます。Claude Code で生産性向上があったのかも、自分のリポジトリでなら1日で確かめられます。

難しいのは、そのあとです。

1日で終わる効果測定でも、この5つを守れば使える数字になります

どれも私たちが考えたものではありませんし、この先に書くことは、この5つへの反論ではありません。まだやっていないなら、ここから始めてください。

1. どうせ決めることを、測る。私たちはちょうど指示ファイルに1行足そうとしていて、その1行が場所を取るだけの価値があるかを知りたかっただけです。実際の判断にぶら下がった測定は、最後まで行きます。好奇心にぶら下がった測定は、途中で放り出されます。

2. 印象ではなく、結果を数える。あとから他人が、あなたのファイルだけを見て数え直せるもの。開発生産性の指標として持つ価値があるのは、そちらだけです。「道具を呼んだか」は数えられます。「セッションが快適だったか」は数えられませんし、その日の記憶より長くは持ちません。

3. 分子の隣に、必ず分母を置く。「2/2」も「94/100」も、どちらも「良い」です。読む人が、どれだけ信じてよいかを決められるのは片方だけです。分母を落とした百分率は、小さい標本の隠れ場所になります。

4. 隔離が、変更を本当に運んだかを確かめる。私たちは処置群を隔離した作業ツリーで走らせました。あれは既定のブランチから分岐するもので、いま自分が立っている場所からではありません。足したばかりの1行はブランチの上にあり、その2本には届いていませんでした。あと一歩で、逆の結論を報告するところでした。

5. 「この測定が示していないこと」を、走らせた当日に書く。限界をいちばん正確に知っているのは、その日のあなたです。結果がどちらに転んだかを知る前に書いておけば、結果に合わせて限界を整える誘惑も消えます。

5つを全部やっても残るもの —— 測定は正しく、書いた文が間違っていました

5つはどれも、測定を守ります。2週間後に書く文のほうは、1つも守りません。

ここです。

数字は、測った時点で自分のものになるわけではありません。数字は主張であって、もう一度導き直せる範囲でしか信用できません。

理由は物理的で、ひねりはありません。走るのは1日。その記録は、列の意味をまだ覚えている人が同じ日に書きます。記事はそのあと、記録を読んだ人が書きます。記録を読むことは、走った回を見ることとは違います。

受け渡しのたびに、列の名前が変わり、行が合流し、同じ回が二度数えられます。私たちは3つとも踏みました。

走らせた回・記録・記事の草稿・公開ページの4段の鎖。鎖の上に8つの印があり、3つは記録の上、5つは記録から草稿への矢印の上にある。鎖の下には検査の届く範囲を示す括弧が2本。淡い括弧は草稿から公開ページまでしか覆わず、印の下を1つも通らない。濃い括弧は記録から草稿までを覆い、8つの印すべての下を通る。
図1. 走らせた回から公開ページまでの鎖の、どこで8つの誤りが入ったか。3つは当日書いた記録の時点ですでに間違っていて、記事はそれを忠実に写しました。5つは、あとから書くときに入っています。記事を読み直す検査が届くのは最後の1区間だけで、記録を開いて数える検査だけが、誤りが実際にいる2箇所の両方に届きます。

3つは書く前から間違っていて、5つは書くときに壊れました

8つのうち3つは、記録の時点ですでに誤りでした。つまり記事は、正しく写していました。

いちばんはっきりしているのは、走った回が1つも無い分数です。記録には、ある群が「0/2」と出ています。記事はそれを、前の版の文面の結果として載せました。

算術が合いません。4つの群は 3・2・2・2 で合計9、余りゼロです。

2つの表に出てくる「0/2」は同じ2本で、片方では「無効」、もう片方では「結果」として数えられていました。報告できる有効な2本は、最初から存在しません。

2つ目の誤りは、読むのをやめていた列の中に隠れていました。結果の表には主題の列があり、3本の対照群だけ、ほかと主題が違います。私たちの「7本」は、2つの主題を黙って足していました。

試していた文面は「実測値」という語で発火します。9本のうち6本はその主題そのものが実測値だったので、主題の側が効いている可能性があります。私たちはそこを切り分けていません。

3つ目の誤りは、記事の中でいちばん気に入っていた文です。「3回が —— 別々の群で、独立に、誰にも言われずに —— 自分で「確からしさの札」を発明しました。」

群は3つではなく2つでした。3回のうち2回は、試していた文面そのものを渡された状態で走っています。

しかもその2回のうち後の1回は、先の1回の成果を見ていました。作業ツリーは隔離されますが、共有のボードは隔離されないからです。

残りの5つは、書くときに入りました。こちらのほうが、恥ずかしい種類です。

誤りの1つは、表の見出しの単語1つです。記録は「指示に従った回数:2/2」。草稿は「道具が呼ばれた回数:2/2」。同じ記事の後ろにある自分の「示していないこと」には、2回のうち1回は書き込む前に止まったと書いてありました。列の名前を変えたのは私で、数字はそのままに主張だけが変わり、記事は公開されているあいだずっと、自分で自分を否定していました。

誤りの1つは、ファイルが無視されたように見せた言い回しです。公開版には「7回連続で無視されました」と書いてあります。その7回のうち、CLAUDE.md にその1行が入っていた回は1つもありません。5回は何も足していない対照で、残る2回には、足したはずの1行が届いていませんでした。

「その1行がファイルに無い状態で7回走った」は、別の文です。しかも、ずっと地味な文です。

誤りの1つは、見出しの本数です。次のセッションへの引き継ぎを書いた別の記事(この記事の末尾からたどれます)の英語版に、こういう文がありました。「同じ6つの見出しが毎回並ぶ」。

指している手順書の列挙は7項目で、しかも見出しではなく箇条書きです。そのファイルは私たちのものです。誰も開いていませんでした。

誤りの1つは、日付です。ある草稿は、その報告を「数日前」に書いたと言っていました。両方のコミットは9月5日で、間は68分です。相対的な時間も数字で、同じように腐ります。

誤りの1つは、読者が足せば分かる算術です。Claude Code の並列実行を書いた記事(こちらも末尾からたどれます)の草稿は「9本必要になりました」で始まり、後半で「3回分が無効になりました」と自分で書いていました。9本は結果の表に残った数で、無効の3回はその外側です。実際は12本以上で、2つの文は同じ記事の中にありました。

4回の採点が見逃し、5回目がファイルを開いて見つけました

これに対する定番の答えは「もう1人読む」で、それは正しい答えです。私たちは全部の記事に採点役を置き、書いた物差しに当てて読ませました。実際、たくさん見つけています。

この2件は見つかりませんでした。

「6つの見出し」と「数日前」は、どちらもその草稿の最初のコミットに入っていました。3回目の採点は自分を「仕上げの検算」と名乗って、その記事を通しました。4回目も通しました。5回目が2件とも見つけて、公開を止めました。

4回目と5回目のあいだで、採点役そのものは変わっていません。変わったのは、どこを見たかです。

5回目は、数字それぞれの出所になったファイルを開いて、中の項目を数えました。2件とも、そこで一度に落ちました。

どちらの主張も、その文を読んでいるかぎり見つかりません。文としてはきちんと出来ているからです。ただ、ファイルに書いてあることと違うだけです。

採点そのものも間違えました。しかも、気づきにくい方向に

ある回の採点は、別の記事を、前の回の点を2つの区分ぶん引き継いで付けました。理屈は通って見えます。本文はあの回から動いていないのだから、新しく足した区分だけ付け直せばよい。

結果は 111/130 で 85.4%、合格線は 85% でした。

次の回が3区分とも付け直したら、引き継いだ側から2点少ない結果が出ました。そのうち前の回に遡って当たるのは1点だけです。もう1点は、あの回のあとの改稿で新しく入った欠陥でした。110/130 は 84.6% です。0.5点差で通したはずの記事は、通っていませんでした。

間違っていたのは「本文は動いていない」ではありません。それは本当でした。間違っていたのは「点は点だ」のほうです。2つの回のあいだに配点が100点から130点に組み替わっていて、いくつかの観点が、名前を変えないまま見るものを変えていました。

0から130までの横一本の帯。0から17までの濃い区間がその回に実際に採点した部分、17から111までの淡い区間が前の回から引き継いだ部分。合格線110.5を示す縦線は淡い区間の中に落ちる。帯の下には付け直し後の合計110を指す目盛りがあり、合格線をはさんで111の反対側にある。
図2. 1回の合否を、130点の帯で描いたもの。濃い側がその回に実際に付けた点、淡い側が前の回から引き継いだ点です。合格線 110.5 は淡い側の中に落ちます。つまり公開してよいかどうかの判断は、まるごと「誰も見ていない部分」に乗っていました。付け直すと合計は 111 から 110 になり、合否も一緒に動きます。

見つかったのは、前の回が「0.5点差で越えただけ」と自分で書き残していたからです。その1文が無ければ、誰も戻って調べませんでした。

そこで決めた規律は、望ましいより雑です。本文が動いた回は、全部付け直す。物差しが動いた回は、本文が動いていなくても全部付け直す。

自分の数字は、1時間で検算できます。6手です

公開済みのものなら何にでも当たります。AI 活用の効果測定である必要も、記事がエージェントの話である必要もありません。

  1. 1. 記憶からではなく、機械で数字を全部拾う。grep -oE '[0-9]+([./][0-9]+)?' draft.md | sort | uniq -c は一瞬です。そのうえで、数字の顔をしていない数字を足します —— 数日前・ほとんど・毎回・同じ6つの・先週。
  2. 2. 手元のメモではなく、出所から導き直す。数字が出てきたファイルを開いて、自分で行を数えます。メモは写しで、最初の誤りはたいてい写しの中に入っています。
  3. 3. 部分の和が、全体と一致するか見る。群の合計が全体とぴったりで余りがゼロなら、「自分の走行回数を持っているように見える数字」は持っていません。私たちの場合は 3+2+2+2=9 で、余りはゼロでした。
  4. 4. 表の見出し・図のラベル・キャプションを、文として読む。列の見出しは、動詞の無い主張です。「道具が呼ばれた」と「指示に従った」は、同じ2本についての別の主張で、測ったのは片方だけです。
  5. 5. 本文の断定を、自分の「示していないこと」と1つずつ突き合わせる。どちらも同じ回について、自分が書いたものです。食い違ったらどちらかが誤りで、そのファイルの外に出ずに決着します。
  6. 6. 相対的な日付を、絶対的な日付に直す。git log --date=short は思い出すより速く、こちらに都合よく答えてはくれません。

6手より価値のある問いが1つあります。それは「この数字は正しいか」ではありません。

知らない人から明日もう一度この数字を出してと言われたら、私はどのファイルを開いて、何を数えるのか。

これに1文で答えられないなら、その数字はまだ自分のものになっていません。そこが埋まるまで、6手のどれも効きません。

この記事が示していないこと(7つ)

これは1つのチームの数字で、誤りの発生率の調査ではありません

1つの実験から作った3本の記事に、8件。特定の間違いを数えたものであって、他人の数字がどれくらい間違っているかについては何も言えません。

AI 活用で速くなったかは測っていません

基準値も、倍率も、ベンチマークもありません。もとの実験が測ったのは「エージェントが指示に従ったか」で、所要時間ではありません。

書き手と採点役は、同じ種類の仕組みです

どちらも私たちのリポジトリで動く Claude Code のセッションで、当てている物差しも私たちが書いたものです。人間の採点役なら別の外し方をするはずですが、そこは試していません。

「4回見逃した」は1本の記事の話です

残る2本はもっと早く見つかっており、見逃しの普通の水準を語れるだけの本数を回していません。

6手は手順であって、測定ではありません

この8件から組み立てたもので、当てた相手はこの記事1本きりです。見出しの「1時間」はその見当であって、測った時間ではありません。まだ見たことのない誤りを捕まえられるかも、示せていません。

実験の2つの群は、文面だけが違ったわけではありません

性質で書かれた文面は道具そのものの説明文にあり、出来事で書かれた文面は CLAUDE.md にありました。文面と置き場所が同時に動いていて、片方だけを変えた対照は走らせていません。

記録そのものも直しました

8件のうち3件は、実験の記録の側を書き換える結果になりました。私たちが突き合わせる相手だった一次資料そのものが、間違っていたということです。突き合わせる相手についても同じだと思ってください。私たちのものも含めて。

これが崩れる条件

  • 私たちが検算済みの記事にこの6手を当てて、9件目が出てくる。そうなれば、この6手は安いだけで十分ではないということで、どの手が足りなかったかを知りたいです。
  • 丁寧に読み直すだけで、この種の誤りが確実に見つかると示される。「文の中からは見えない」がこの記事の中心なので、はっきりした反例が1つ出れば、これは発見ではなく習慣に格下げされます。
  • 算術の議論のほうが間違っていた —— あの「0/2」の裏に有効な2本があったと分かる実行ログが出てくる。そうなれば1件目の訂正自体が誤りだったことになり、この一覧の中ではいちばん役に立つ結末です。

3つとも安く試せます。引用されるより、訂正されるほうがありがたいです。

ここから先は、私たちがそれに対してやっていることです。地の文に書かれた数字には、いつ測ったかの欄も、まだ暫定かどうかの欄もありません。だから私たちの数字は、公開された記事の中で、確定した事実とまったく同じ顔をして座っていました。

そこで、別の形のものを作っています。Vondet(vondet.com)は、エージェントが直接読み書きする計画と決定の記録です。実測値が測定日と状態を持ったまま置かれるので、周りの文の語調から確からしさを推し量ってもらう必要がなくなります。登録はまだ開いていません。順番待ちだけがあり、いまはそれで十分だと考えています。

その前に1つ。最後に公開した、数字の入っている文章を開いてください。その数字の出所のファイルを開いて、数えてみてください。合ったかどうかを教えてください。合わなかったときは、なおさら。