この記事は、連載「追わない技術」の第 7 回です。うまくいかない症状と、その対処を一つずつ並べています。各回はファイルやスクリプトを一つ置けば完結します。その仕組みがなぜ要るのかは、置いたあとに解説を読めば分かります。連載の全体像と各回の一覧は序論にあります。

今回は、どのモデルを使うかを決めきる時点の話です。第 2 回は「一番安いのを既定にするな」、第 3 回は「新しいのが出た日に乗り換えるな」でした。今回は、そもそも比べるのをやめる話です。比べている間は増えないからです。比較が返すのは「どちらが上か」で、仕組みが返すのは「どちらでも通る」。返ってくるものの寿命が違います。

先に、題を否定しておきます。比べること自体は、悪くありません。私も比べました。この連載の 2 回ぶん(第 2 回と第 3 回)は、まるごと比較でできています。やめたのは、選ぶために比べ続けることのほうです。

もう 1 つ。この回にもモデルの名前も、価格も、性能の数字も出てきません。比べるものは「高い側」と「安い側」とだけ呼びます。費用も、円でも秒でも出しません。出すのは「仕組み何本ぶんか」だけです。円も単価も半年で古くなりますが、比は古くなりません。

そして白状します。私は 1 日で、モデルを比べるのに 483 分を使いました。同じ時間で、落ちる仕組みは 20 本置けました。

実際に置いたのは 5 本です。

そして比較から出た差は、0.17 でした。

一つ思い出してみてください。

モデルを比べていたあいだに、仕組みはいくつ増えましたか。

比べ終わったあと、その答えは何か月もちますか。

CC BY 4.0

比べて出た差は、0.17 でした

同じ課題を、高い側と安い側の両方へ渡しました。条件は「何を渡すか」です。1 回の実験に会話を引き継がない作業者を 12 人ぶんそろえ、それを 2 回、別の乱数で回しました。1 回目は 3 通り(何も渡さない / 実例を渡す / パターンを明文で渡す)、2 回目は 2 通り(何も渡さない / パターンを明文で渡す)です。下の差は、両端の 2 通りで揃えて採っています。

条件差(8 点満点)
⭐⭐ 何を渡すか(何も渡さない → パターンを明文で)+2.00 と +2.17
⚠️ どちらのモデルか0.17 と 0.17

仕組みの差は、モデルの差の 12〜13 倍でした(2.00 ÷ 0.17 と 2.17 ÷ 0.17)。しかも 2 回とも同じ幅で出ています。別の乱数で、同じ数が返ってきました。

これは第 3 回で書いたこと(モデルの能力で埋めていた差は、仕組みを置くと埋まる)の続きです。第 3 回は「新しいのに乗り換えなくていい」でした。今回はそこから 1 段進んで、「そもそも、どちらを使うかを決めなくていい」になります。

しかも、その 0.17 は向きが入れ替わります

総点の 0.17 を、条件ごとにばらしてみます。

渡したものどちらが上か
⚠️ 何も渡さない高い側が 1.00 上
⚠️ パターンを明文で渡す安い側が 0.67 上

符号が逆でした。知見を渡さないと高い側が勝ち、明文を渡すと安い側が勝ちます。総点だけを見ると「差は無い」に見えますが、中では入れ替わっていました。

これが「順位が付かない」ということです。「高い側のほうが上」も「安い側のほうが上」も、どちらも私の手元のデータで言えてしまいます。言えるのは、渡すものを決めれば、どちらが上かも決まるということだけです。

順番が逆だと気づいてください。

先にモデルを選んで、あとから渡すものを考えるのが普通の順です。

実際に効いているのは、渡すもののほうです。

11 項目のうち 10 項目は、渡さなくても両方が守ります

別の実験では、守ってほしいことを 11 項目に分けて数えました。知見を何も渡さない条件を 1 つ足して、項目ごとに「落ちたのは何人か」を見ています。

11 項目のうち 10 項目は、何も渡さなくても両方のモデルが守りました。差が出たのは 1 項目だけです。

つまり、仕組みを置く先はその 1 項目です。残りの 10 項目に明文を足しても、守られていたものが守られるだけで、何も変わりません。

そして 10 項目ぶんの明文は、渡すたびに全部読ませることになります。

ここは第 3 回と一緒に読んでください。

明文を渡すと、その明文を見張っている自動テストの目が塞がれるという副作用も、同じデータから出ています。仕組みはただではありません。だから、置く先を 1 項目に絞る値打ちがあります。

比較の答えは、読み方を変えるだけで裏返ります

もう 1 つ、比較そのものの性質があります。第 2 回の実験では、同じ出力を採点し直すたびに、結論が 3 回変わりました。数字は 3 回とも正しいままです。変わったのは、母数の取り方と、課題の 1 段落だけでした。

比較の答えは、比べ方のほうに強く依存します。どこで読み間違えたのかは、次回に書きます。

別の実験なので、点はそのまま比べられません(課題も物差しも違います)。ここで言えるのは 1 つだけです。どちらの実験でも、渡すものと読み方のほうが、モデルの違いより大きく効いていました。

原理: 比べている間、仕組みは 1 つも増えません

比較が返すのは「どちらが上か」です。仕組みが返すのは「どちらでも通る」です。

返ってくるものの寿命が違います。

返るものいつまで使えるか
⚠️ 比較どちらが上か⚠️⚠️ どちらかが変わった日まで
⭐⭐ 仕組みどちらでも通る⭐ 課題が変わるまで

モデルは、選び終わったあとも更新されます。選んだ根拠は、更新された日に消えます。

一方、置いた自動テストは、どちらのモデルが来ても同じところで落ちます。

そして比較は、比べている間ずっと、仕組みを 1 本も増やしません。ここが費用です。払っているのは料金ではなく、その時間で作れたはずの仕組みのほうです。

では、比べた時間で何本作れたのか

数えました。新しく実験は回していません。1 日ぶんの記録(コミット 62 本)を、手で 5 つに分けただけです。

分け方は自動テストに決めさせていません。触ったファイルで切ろうとしたら、分けられませんでした。記事を書く手も自動テストの下限を上げるので、自動テストのファイルを触ります。だから分類は手で書き、自動テストには「1 本も分類し忘れていないか」だけを見張らせています。

[observed] 2026-09-09 のコミット 62 本を全数分類した(未分類 0)
[observed] 手数: compare 19 / mechanism 5 / write 8 / upkeep 12 / other 18
[observed] 経過(分。60分を超えた間隔は打ち切り 5 回): compare 483 / mechanism 117 / write 166 / upkeep 70 / other 134
[observed] 1 手あたりの分: 比較 25.4 / 仕組み 23.4
[observed] 比較にかけた手間で置けた仕組み: 手数で 19 本 / 経過で 20.6 本
[observed] 実際に置いた仕組み: 5 本

答えは 20 本です。モデルを比べるのに使った 483 分で、落ちる仕組みは 20 本置けました。

実際に置いたのは 5 本です。

この数には検算が付いています。1 手あたりの時間が、比較 25.4 分、仕組み 23.4 分で、ほとんど同じでした。だから手数で数えても(19 本)、時間で数えても(20.6 本)、同じ答えになります。ここが離れていたら、手数のほうは捨てるつもりでした。1 手の大きさが違うということなので。

19 手のうち、実験そのものは 10 手です。残りの 9 手は、採点するスクリプトと、実験を組んでよいかを判定する門と、次の条件の設計でした。比べるための下ごしらえが、比べる手数とほぼ同じだけありました。

注意: この数字が言えないこと

比較の側は下限です。実験のたびに一覧が古くなるので、そのあとの手直し(12 手)は本当は比較の費用です。

ただし記事を書いたあとにも同じ手直しが出るので、分けられませんでした。入れれば、20 本はもっと増えます。

私の場合、比較そのものが記事という成果物になりました。この連載は比較を売っているので、費用が丸ごと回収されています。比較は、たぶんそうなりません。

そこは差し引いて読んでください。

1 手 = 1 つの仕上がった仕事、という数え方をしています。これは測定ではなく、私の数え方です。測定のほうは時間(483 分 / 23.4 分)で、そちらが 20.6 本を出しています。2 つが近かったので、両方を出しました。

1 日ぶん・1 人ぶんの数です。62 本のコミットは全部私のもので、比べた相手も 2 つだけです。

倍率としてではなく、「桁」として読んでください。

そして、いちばん大事な線を引いておきます。測るなという話ではありません。「モデルを選ぶために」測るのをやめただけです。置いた仕組みが効いているかどうかは、いまも毎回測っています。その測り方の話は、次回にします。

CC BY 4.0 はここまで

比べなくなったもの

  • 「どちらが向いているか」を先に決めるのをやめました。決まるのは渡すものを決めたあとです。順番が逆でした
  • 総点で「差は無い」と読むのをやめました。条件ごとにばらすと、符号が逆でした。総点は、それを平らにならしただけです
  • 明文を 11 項目ぶん渡すのをやめました。10 項目は渡さなくても守られていました。置くのは、落ちた 1 項目だけです
  • 比較を「ただ」だと思うのをやめました。払っているのは料金ではなく、その時間で置けたはずの仕組みのほうです
  • やめていないこともあります —— 用途ごとに、どちらか一方に決め打つことです。決め打ったあと、比べ直していないだけです

比べれば分かる、という感じは、たいてい正しく見えます。比べたその日は、確かに分かるからです。見えないのは、その答えが次の更新まで、そして次の課題までしかもたないことのほうでした。

CC BY 4.0

検証手順: 比べる前に、その比較が仕組み何本ぶんかを数える

比較をやめろという手順ではありません。始める前に、値札を見る手順です。

前提

  • 直近で置いた仕組み(自動テスト・門・hook)が 3 本以上あり、それぞれ何手で置いたかが記録に残っていること。残っていないなら、この手順は使えません(次の 3 本を数えてから戻ってきてください)
  • 仕事の区切りが記録に残っていること(私はコミットで採りました)。区切りが無いと、比較の手数も仕組みの手数も数えられません
  • 1 手の大きさが、比較と仕組みでそろっている必要があります。そろっていないときの逃げ道は「合格しなかったとき」に書きました

所要時間: 20 分(記録が手元にある場合)

手順

  1. これから比べたいものを 1 行で書く(例:「高い側と安い側で、テストの見逃しが変わるか」)
  2. その比較に必要な手を数える——採点するスクリプト/条件をそろえる下ごしらえ/回す回数/読み解き。スクリプトと下ごしらえを忘れないでください(私の実測では、そこが半分でした)
  3. 直近で置いた仕組み(自動テスト・門・hook)を 3 本選び、1 本あたりに何手かかったかを数える
  4. 2 を 3 で割る。これがこの比較の値札です(「仕組み N 本ぶん」)
  5. いま置ける仕組みを思いつくだけ書き出し、その本数を N と比べる。N より少ないなら比べてよい——置く先がまだ分かっていないということなので
  6. 比較を回したら、出た差を「何を渡すか」を変えたときの差と並べる。片方だけ出すと、大きいか小さいか分かりません

合格条件

  • 手順 2 で、スクリプトと下ごしらえの手数が 0 でない(0 なら数え落としています。私の実測では、そこが 19 手のうち 9 手でした)
  • 手順 3 で、3 本の 1 手あたりが、比較の 1 手あたりと 2 倍以内に収まっている(離れているなら手数での換算は使えません。時間で数え直してください)
  • 手順 5 で、書き出した仕組みが N 本より少ない(そのぶんだけ、比較が勝っています)
  • 手順 6 で、「何を渡すか」の差が出ている(出ていないなら物差しが動いていません。比較の差もそのぶん読めません)

合格しなかったとき

  • N が 1 本未満 —— 安い比較です。回してください
  • N 本ぶんの仕組みが全部書き出せた —— 先にそれを置いてから、まだ比べたいかを見てください。私の場合、置いたあとは比べたくなくなりました
  • 1 手あたりが 2 倍以上離れている —— 手数での換算をやめ、時間だけで出します
  • 「何を渡すか」の差が出ない —— 物差しが天井か床に張り付いています。モデルの差を読む前に、そちらを直してください

後始末

  • 分類は手で書いたものを残します。自動テストには「分類し忘れが無いか」だけを見張らせます(日をまたぐと黙って漏れます)
  • 離席した間隔は打ち切ります。打ち切らないと、寝ている時間が比較の費用に化けます(私は 60 分で切りました。5 回当たっています)

ここまで飛ばした人へ

正解です。

読むだけで分かることを、わざわざ測る必要はありません。あの手順が言っているのは、結局この 1 行です。

その比較に要る手を、仕組み 1 本ぶんの手で割る。

置いてあるのは、あとで「本当か」と思ったときのためです。いま思っていないなら、そのまま次へ行ってください。

確かめるかどうかを決めるのは、確かめ方ではなく、いま分かっていないかどうかのほうでした。


CC BY 4.0 はここまで

次回は「諦めさせない技術」。私は、「差が出ませんでした」で畳むのをやめました。今回まで数字で切ってきましたが、その数字が「差が無い」と言うとき、たいていは「まだ測れていない」の言い換えだったからです。