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

今回は、どのモデルに頼むかを、いつも比べてから選ぶのをやめる話です。比べるのには手間がかかり、仕組みは、比べている間は増えないからです。

ただし、比べること自体は、してかまいません。私も比べました。第 2 回では用途ごとに量の比を測り、第 3 回では両方に同じものを渡して、何が違うのかを確かめています。私がやめたのは、比べるかどうかを考えずに、いつも比べてから選ぶことのほうです。

私は、比べる 2 つのモデルを、名前の代わりに「高い側」と「安い側」と呼びます。比べるのに使った時間は、円や分の代わりに「仕組み何本ぶんか」で数えます。

私は 1 日で、第 2 回と第 3 回の実験のためにモデルを比べるのに、483 分を使いました。同じ時間で、決まりを破ると落ちる仕組み(自動テストや hook)を、20 本置くことができた計算です。

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

そして、コードを足す課題で比べて出た 2 つのモデルの差は、8 点満点で 0.17 でした。

モデルを比べたことがあるなら、そのときのことを思い出してみてください。

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

比べて出た答えは、比べ終わってから何か月使うことができますか。

CC BY 4.0

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

私は、手元のリポジトリにコードを足す同じ課題を、高い側と安い側の両方へ渡しました。モデルのほかに変えたのは「何を渡すか」です。1 回の実験で会話を引き継がないサブエージェントを 12 回起動し、それを 2 回、別の乱数で回しました。乱数を替えると、サブエージェントに渡す題材が作り直されます。1 回目は 3 通り(何も渡さない / 実例を渡す / パターンを明文で渡す)、2 回目は 2 通り(何も渡さない / パターンを明文で渡す)の条件で回しました。パターンを明文で渡すというのは、私のリポジトリで守ってほしい決まりを、文章にしてサブエージェントに渡すことです。下の表の差は、2 回に共通する 2 通り(何も渡さない / パターンを明文で渡す)だけで採っています。

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

何を渡すかで出た差は、どちらのモデルかで出た差の 12〜13 倍でした(2.00 ÷ 0.17 と 2.17 ÷ 0.17)。しかも、この開きは 2 回とも同じくらいの幅で出ています。題材を作り直しても、2 つの差は 1 回目とほぼ同じ値になりました。

ただし、モデルの差の 0.17 は、2 回で向きが逆です。1 回目は安い側が 0.17 上で、題材を作り直した 2 回目は高い側が 0.17 上でした。

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

2 回目の総点の差 0.17 を、渡したものの条件ごとに分けてみます。

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

2 つの条件で、差の向きが逆でした。何も渡さないと高い側が上で、パターンを明文で渡すと安い側が上です。総点だけを見ると「差は無い」に見えますが、条件ごとに見ると、どちらが上かが入れ替わっていました。

この実験の 2 つのモデルには、順位が付きませんでした。「高い側のほうが上」も「安い側のほうが上」も、どちらも私の手元のデータから言うことができてしまいます。

比べた時間で、仕組みは何本置くことができたのか

私は数えました。数えるのに使ったのは、1 日ぶんの記録(コミット 62 本)だけです。私はコミット 1 本を 1 手と数え、62 手を自分で 5 つに分けました。

[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 本

モデルを比べるのに使った 483 分で、決まりを破ると落ちる仕組みを、20 本置くことができた計算です。

実際に置いたのは 5 本です。5 本は、どれも比べていない時間に置いたもので、比べている間に置いた仕組みは 0 本でした。

なぜ、この比較では差が小さく、答えが古くなるのか

8 項目は、どれも、私のリポジトリで実際に破られたことがあり、そのあとで私が置いた決まりです。Claude Code のサブエージェントのページによると、会話を引き継がないサブエージェントは、新しく隔離されたコンテキストで始まり、メインの会話の履歴も、それまでに読んだファイルも見えません。2 回目に何も渡さなかった 6 回は、高い側も安い側も、6 回とも同じ 2 項目を落としました。明文を渡した 6 回は、6 回ともその 2 項目を守りました。

モデルの差のほうは、1 回ぶんの点の大きさでした。2 回目の 0.17 は、高い側の 6 回の点を足した 38 点と、安い側の 6 回の点を足した 37 点の差を、6 で割った値です。差は 1 点で、1 回のサブエージェントが 1 項目を落とすかどうかの差です。

私が項目ごとに点を見ると、向きの入れ替わりも 1 つの項目に集まっていました。明文を渡した条件で高い側が失った 3 点は、3 回のサブエージェントが同じ 1 項目で 1 点ずつ落としたものです。落ちた行はどれも、私が渡した明文の中身を、高い側のサブエージェントがそのままコードのコメントに書いた 1 行でした。その 3 回は、コメントの外のコードでは、その項目を守っていました。

別名で指定したモデルは、同じ名前のまま、中身が入れ替わります。Claude Code のモデルの設定のページによると、sonnet や opus のような別名(エイリアス)は、そのときに勧められているバージョンを指し、時間とともに更新され、特定のバージョンに固定したいときは、別名の代わりに完全なモデル名で指定します。私も実験では、モデルを別名で指定してサブエージェントを起動していました。別名で選んでいるかぎり、比べた日に動いたモデルと、あとで同じ名前で動くモデルは、別のものになっていることがあります。

新しい種類の仕事を、また頼むことになったとき

あなたは、第 2 回・第 3 回のとおり、新しい種類の仕事をAIに頼むたびに、高いモデルと安いモデルの両方に同じものを渡して比べ、どちらに頼むかを決めてきました。比べるたびに、採点のやり方や条件をそろえる下ごしらえが要り、振り返ると、比べていた日には、決まりを破ると落ちる自動テストも、hook も、1 本も足していませんでした。また新しい種類の仕事を頼むことになりました。あなたなら次のどちらにしますか。

  • いつものとおり、両方に渡して比べてから、どちらに頼むかを決める
  • 比べる前に、その比較にかかる手間を数え、比べるかどうかから決める

答えは、比べる前に、その比較にかかる手間を数え、比べるかどうかから決めるほうです。比べるのにかけた手間では、仕組みは増えません。私の 1 日では、比べるのに使った 483 分が仕組み 20 本ぶんで、比べている間に置いた仕組みは 0 本でした。そして、比べて出る差が、その手間に見合うとは限りません。この回の実験では、モデルの差は 0.17 で、題材を作り直すと向きが逆になりました。別名で選んでいるモデルは、時間とともに更新されます。いつものとおり比べると、その比較に値打ちがあるかを見ないまま、毎回その手間をかけることになります。その比較が仕組み何本ぶんかを数えておけば、選び方は 2 つです。いま置くことのできる仕組みがその本数より少ないなら比べ、多いなら比べずに一方に決めて、先に仕組みを置きます。

理解したことは一文にできます。

比べるのにかけた手間では仕組みは増えず、比べて出る差がその手間に見合うとは限らない。だから、いつも比べてから選ぶのではなく、その比較が仕組み何本ぶんかを数えて、比べない選択肢も持つ。

CC BY 4.0 はここまで

比べなくなったもの

  • 私は、どのモデルに頼むかを、いつも比べてから選ぶのをやめました。比べる前に、その比較が仕組み何本ぶんかを数えています
  • 続けていることもあります —— 用途ごとに、どちらか一方に決め打つことです。決め打ったあとは、比べ直さずにそのモデルを使い続けています

CC BY 4.0

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

この手順は、比較を始める前に、その比較の値札(仕組み何本ぶんか)を見るためのものです。

前提

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

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

手順

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

合格条件

合格の条件は 4 つです。1 つ目は、手順 2 で、スクリプトと下ごしらえの手数が 1 以上あることです。0 なら数え落としていて、私の実測では、そこが 19 手のうち 9 手でした。2 つ目は、手順 3 で、3 本の 1 手あたりの時間が、比較の 1 手あたりの時間の 2 倍以内に収まっていることで、それより離れているなら、手数で換算する代わりに、時間で数え直してください。3 つ目は、手順 5 で、書き出した仕組みが N 本より少ないことです。そのときは、比較を回すほうが割に合います。4 つ目は、手順 6 で、「何を渡すか」の差が出ていることです。出ていないなら、採点が差を拾うことができておらず、そのぶん、比較の差も読むことができません。

合格しなかったとき

  • N が 1 本未満 —— 安い比較です。その比較は回してください
  • N 本ぶんの仕組みを全部書き出すことができた —— 先にそれを置いてから、まだ比べたいかを見てください。私の場合、置いたあとは比べたくなくなりました
  • 1 手あたりの時間が 2 倍以上離れている —— 手数での換算をやめ、時間だけで出します
  • 「何を渡すか」の差が出ない —— 採点の結果が、全員満点か、全員が同じところで落ちるかのどちらかになっています。モデルの差を読む前に、採点の項目か課題を直してください

後始末

分類は、自分で書いたものを残します。自動テストに見張らせるのは「分類し忘れが無いか」だけです(日をまたぐと、分類していないコミットが、誰も気づかないうちに増えます)。コミットの間隔が長いときは、離席していたとみなして打ち切ってください。打ち切らないと、寝ていた時間まで比較の費用に数えられます(私は 60 分で切りました。打ち切りは 5 回ありました)。

ここまで飛ばした人へ

正解です。

あなたは、読むだけで分かることなら、測るのを省いてかまいません。検証手順が言っているのは、結局この 1 行です。

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

検証手順は、あとで「本当か」と思ったときのために置いてあります。いま納得しているなら、そのまま次へ行ってください。


CC BY 4.0 はここまで

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