# 穴子がデカすぎた話

> 落ち物パズルの最後の一手に、どうしても届かない。勘で直す前に、自動プレイで三百戦以上の統計を取って原因を突き止めた記録。

- URL: https://koshinstudio.com/notes/anago/
- 公開: 2026-09-07
- 書いた人: Koshin（https://koshinstudio.com/about/）
- サイト: Koshin Studio

  English version (https://koshinstudio.com/en/notes/anago/)

すし積む 開発の記録 ／ 2026年9月

  2026年10月8日に追記しました。この記事の数字は9月8日の版のものです。そのあと、9月10日にもう一度、寸法と降ってくるネタを変えています（いちばん下の「その後」）。

  「すし積む」 (https://koshinstudio.com/works/sushitsumu/)を作り終えたあと、ひとつ引っかかっていることがありました。最後のネタ、金のすし桶に、一度も辿り着けない。

  自分で何度遊んでも、その手前の伊勢海老すら滅多に見ない。感覚としては「穴子がデカすぎる」。でも、感覚で寸法をいじると、たいてい別のところが壊れます。まず測ることにしました。

## 測る仕掛けを作る

  ゲームは HTML 一枚で、時間の進みは requestAnimationFrame に任せています。そのままだと一戦に数分かかるので、時計を自前のものに差し替えました。requestAnimationFrame と setTimeout を横取りして、こちらから好きな速さで進める。絵を描く処理も空にすると、一戦が約 2 秒で終わるようになりました。

  あとは、合体を最優先しつつ、山が落ち着くまで待ってから置く、という程度の打ち手を書いて、放っておくだけです。

## 百戦まわして分かったこと

  まず、素の状態で百戦。

  点   最低 12,337 / 中央 21,664 / 最高 44,622
到達した最高ネタ   大トロ 43戦  穴子 52戦  伊勢海老 4戦  金の桶 0戦
  金の桶はゼロ。では、どこで詰まっているのか。一段上げる歩留まり——下から二つ合体して一つ作れた割合——を並べると、はっきりしました。

    合体 | 歩留まり

    サーモン → マグロ | 94.0%

    マグロ → いくら軍艦 | 91.9%

    いくら軍艦 → ウニ軍艦 | 86.9%

    ウニ軍艦 → 大トロ | 71.4%

    大トロ → 穴子 | 55.2%

    穴子 → 伊勢海老 | 13.1%

    伊勢海老 → 金の桶 | 0.0%

  なだらかに落ちてきて、穴子のところで崖になっています。作れた穴子 61 本のうち 53 本（87%）が、しまいの盤面にそのまま残っていました。合体まで漕ぎ着けたのは 8 本だけ。

## 穴子は、確かにおかしかった

  寸法を並べ直すと、一目で分かりました。桶の内側の幅は 336 です。

    ネタ | 幅 | 高さ | 幅／内寸 | 前段からの伸び

    大トロ | 149 | 83 | 44% | ×1.34

    穴子 | 247 | 71 | 74% | ×1.66

    伊勢海老 | 230 | 107 | 68% | ×0.93

    金の桶 | 210 | 210 | 62% | ×0.91

  穴子が、ゲーム中で一番太い駒でした。そのあとに来る伊勢海老よりも、最終形の金の桶よりも太い。幅の伸びも、他の段が 1.0〜1.34 倍のところ、ここだけ 1.66 倍。

  結果として、穴子が一本寝ると、横に残る隙間は 336 − 247 = 89。ここに置けるのはサーモン（幅 85）までで、ウニも大トロも入りません。穴子が桶を横断して、その先の道を塞いでいたわけです。

  ちなみに面積の梯子は綺麗でした。どの段も「前の段二つ分の 0.70〜0.71 倍」で一定。壊れていたのは幅の順序だけです。

## 直してみる。ただし測ってから

  横幅だけを 4/5（247 → 198）にして、また百戦。

     | 中央値 | 最高 | 穴子 | 伊勢海老 | 穴子→伊勢の歩留まり

    247 × 71（元） | 21,664 | 44,622 | 61本 | 4匹 | 13.1%

    198 × 71 | 24,858 | 47,392 | 79本 | 12匹 | 30.4%

    205 × 85（面積を保つ） | 25,149 | 36,350 | 33本 | 1匹 | 6.1%

  面白かったのは三行目です。面積を保ったまま細くした案では、終盤がまったく動きませんでした。効いていたのは「細い」ことそのものではなく、穴子が桶を横断しなくなって、その隣に大きいネタを並べられるようになったこと。

## それでも金の桶には届かない

  伊勢海老は三倍出るようになりました。でも金の桶はまだゼロ。ここで、別の壁が見えてきます。

  落ちてくる駒はシャリ・玉子・エビの三種だけ。ガリを差し引くと、一投下あたりシャリ 2.217 個分にしかなりません。一方、

    作るもの | シャリ換算 | 無駄ゼロでも要る投下数

    穴子 1 本 | 256 | 115

    伊勢海老 1 匹 | 512 | 231

    金の桶 1 個 | 1,024 | 462

  実測の投下数は中央 280、最長でも 426。一個も無駄にしなくても手数が足りていませんでした。伊勢海老の 231 投下がちょうど境目で、百戦で 12 回という実測とも合います。

## 本当の原因は、寿司が大きすぎたこと

  スイカゲームでは「双子スイカ」を作る人がいます。あれが成立するのは、最後の果実が箱に対して十分小さいからです。うちはどうか。

  金の桶を一つ据えたまま、2匹目の伊勢海老を作らないといけない
  金の桶210 + 伊勢海老107 + 伊勢海老107 = 424px  >  使える高さ 302px
  横に並べる  伊勢海老230 × 2 = 460px          >  内寸 336px
  縦にも横にも入りません。運や腕前の問題ではなく、入る隙間が存在しない。

  そこで、ネタの寸法を一律 0.8 倍にしてみました。金の桶の直径が 210 → 168 になり、桶の内寸 336 のちょうど半分になります。

     | 中央値 | 最高 | 金の桶に到達 | 伊勢海老に到達 | 1戦

    等倍 | 24,858 | 47,392 | 0 / 100戦 | 12% | 3.7分

    0.8 倍 | 58,741 | 103,630 | 7% | 65% | 7.7分

  ようやく道が通りました。伊勢海老はほぼ毎回そこまで行き、金の桶も十数戦に一度は出ます。双子は、それでも六十戦で一度も出ませんでした——これは失敗ではなく、たぶん正しい状態です。手が届く場所にある伝説になった、ということなので。

## 番付も引き直した

  点の出方が 2.4 倍になったので、番付の判定値も全部やり直しです。最上段は、金の桶に届いた試合の点が揃って 86,000 以上だったのに合わせて 85,000。数字は前と同じですが、意味が変わりました。前は誰にも出せない飾りで、いまは「金の桶を出したら伝説」です。

## 出したあとに、もう一度測った

  直した状態のまま、公開しているものと同じ中身で三百戦まわし直しました。100 戦で見えた形が、そのまま続いています。

    測ったもの | 三百戦

    点の中央値 | 59,305

    いちばん高かった点 | 163,426

    穴子一本焼きに到達 | 99%

    伊勢海老に到達 | 73%

    金のすし桶に到達 | 10%（31 戦）

    金の桶を一戦で二つ | 0

    1 戦の長さ（中央値） | 7.7 分

    置いた数（中央値） | 589

    いちばん長い連鎖 | 10

  打ち手は tools/sim/bot.js。合体を最優先し、山が落ち着くまで待ってから置く、という程度のものです。人が遊ぶともっと上手くも下手にもなりますが、直す前と後を同じ物差しで比べるには十分でした。

## 教わったこと

> 感覚は当たっていた。でも、原因は思っていたところになかった。
  「穴子がデカすぎる」という違和感は正しかったんです。ただ、穴子を細くしただけでは終盤は動かず、本当の原因は寿司全体が桶に対して大きすぎたことでした。一箇所を疑って直していたら、たぶん永遠に辿り着いていません。

  三百戦の統計を取るのにかかった時間は、合計で十分ほどです。勘で三回いじって確かめるより、ずっと速くて確かでした。

## その後（9月10日）：もう一度、変えた

  この記事のあと、ゲームを CrazyGames に出して落ちました（くわしくは別の記事 (https://koshinstudio.com/notes/crazygames/)）。見直したのは、桶の中の緊張が、審査の数分のうちに一度も起きていないことでした。コミットには、こう書いてあります。自動プレイで測ると、一戦は中央値 594 手・7分半。人が遊べば30分。桶がいつまでも埋まらず、危ない場面が最後まで来ない、と。

  変えたのは、段ごとの寸法と面積比は触らずに、「合体して大きくなる感じ」を損なわずに直せる場所だけです。自動プレイで測って選びました。

- 降ってくるネタを、3種から5種に。シャリ・玉子・エビに、サーモンとマグロを足しました（出る重みは 1:1:2:3:2）。一手で積み上がる量が増えて、中央値が 594 手から 279 手になりました。上の段への到達率も上がっています。

- 桶の形。縁を 320 から 250 に、高さを 308 から 378 に。遊ぶ場所が画面の 45% から 62% になりました。

- 伊勢海老と金の桶を、さらに 0.89 倍。穴子から伊勢海老への面積比だけが 1.76 と飛んでいたのが、1.40 に揃いました。金の桶が二つ並ぶときの余りは 0px から 36px になり、W 金の桶（金の桶同士の合体）が、実戦で成り立つようになりました。この処理は前からあったのに、300戦で一度も出ていませんでした。

  一戦が半分の長さになったぶん、点も約2割下がっています（自動プレイの中央値 59,305 から 46,529）。番付のしきい値は、60戦の分位点から取り直して、前と同じ当たり方（若手 7％・中堅 28％・花板 40％・大将 17％・伝説 8％）に戻しました。W 金の桶の褒美も、8,000 から 25,000 に上げました。金の桶を一つ作るまでの合体だけで、約 34,000 点入るからです。

  W 金の桶に要る手数は、無駄ゼロでも 275 手です。自動プレイは金の桶一個を理想の約 2.0 倍かけて作るので、自動プレイのままでは届きません（40戦で 0 回）。山を整えて打てる人だけが届く、という置き方にしてあります。

  上の「0.8 倍」の表の数字（中央値 58,741、1戦 7.7 分など）は9月8日の版のものです。いまの数字とは違います。

  この話に出てくるもの

- すし積む（作品ページ） (https://koshinstudio.com/works/sushitsumu/) — 何を作ったのか、画面と数字で

- すし積む 遊び方 (https://koshinstudio.com/works/sushitsumu/guide) — ネタ十一段、合体の点数、連鎖、ガリ

- 使っている道具 (https://koshinstudio.com/about/) — 測る仕掛けに使った Playwright と Matter.js

  遊ぶ (https://koshinstudio.com/play/sushitsumu/)作品ページへ (https://koshinstudio.com/works/sushitsumu/)
