# 無料枠を半分しか使わない番付にした：呼び出し5回を2回に

> 番付サーバーが無料枠を使う量を半分にした。一人が遊ぶ一回の呼び出しは5回から2回、読んだ行は421から221へ。順位の数え方と、前置きの呼び出しをなくした経緯。

- URL: https://koshinstudio.com/notes/ranking-free-tier/
- 公開: 2026-10-08
- 書いた人: Koshin（https://koshinstudio.com/about/）
- サイト: Koshin Studio

  English version (https://koshinstudio.com/en/notes/ranking-free-tier/)

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

  すし積む (https://koshinstudio.com/works/sushitsumu/)には、オンラインの番付（ランキング）があります。置き場所は Cloudflare の Workers と D1（データベース）で、無料枠の中で動かしています。この番付サーバーの無料枠の使い方を、半分にしました。何を数えて、何を変えたのか。コミットに残っている実測値で書きます。

## 無料枠は、みんなで分け合う

  Cloudflare の無料枠は、アカウント単位です。そのアカウントの Workers と D1 のすべてで、分け合います。ほかのプロジェクトと同居するなら、番付のほうは、細くしておくに越したことはありません。さらにコミットには、2026年9月1日から、D1 はこの上限で、本当に問い合わせを断るようになったとあります。上限は、「読んだ行数」で、1 日 500 万行です。

## 一人が遊ぶと、何が起きているか

  「一人が一度遊び、点を送り、番付を一度見る」という、一番ふつうの流れで、サーバーへの呼び出しと、読んだ行数を数えました。数え方は、D1 の代わりに node:sqlite を噛ませた Worker を、実際に動かして、です。

     | 前 | 後

    呼び出し | 5 | 2

    読んだ行 | 421 | 221

    書いた行 | 1 | 1

  頭打ちになるのは、読んだ行数です。500 万行を、一人あたりの行数で割ると、無料枠で遊べる人数が出ます。前は 5,000,000 ÷ 421 ≒ 11,876 人（コミットには「約 1 万 1 千人」とあり、割り算とは少しずれています）。後は 5,000,000 ÷ 221 ≒ 22,624 人（コミットでは約 2 万 2 千人）。どちらの数え方でも、1 日あたりの上限が、およそ 2 倍になりました。

## 変えたのは二つ

### 1. 順位を、サーバーで数える

  それまでは、ゲームのほうが、上位 100 件の一覧を二度引いて、その中から自分を探していました。これを、サーバーが順位を数えて返す形に変えました。数え方は、上位の一定の件数（SCAN）で打ち切る COUNT です。上位にいる人ほど、読む行が少なくて済みます。

### 2. 前置きの呼び出しを、なくす

  点を送る /submit を、text/plain で受けるようにしました。中身は JSON のままです。ただ、この型で送ると、ブラウザが、前置きの確認の呼び出し（OPTIONS）を投げません。呼び出しが、一つ減ります。

  なお、共有データベース（アーティファクト側）には、順位を数える仕組みがありません。そちらは、これまでどおり、ゲーム側で数えます。submit が null を返したときだけ、一覧を引く形にしました。

## 確かめたこと

- 空の番付に二人送ると、1 位・2 位が出る。

- 500 人の番付では、サーバーが数えた順位（「100 位圏外」を含む）が、正しく出る。

- 点を書き換えた申告は、日本語でも英語でも、これまでどおり弾かれる。

## 分かったこと

> 数えるのは、お金ではなく、呼び出しと行。

- 無料枠の上限は、いちばん先に尽きるものを数える。ここでは、呼び出しの回数ではなく、読んだ行数でした。

- 「ふつうの一回」を、実測する。一人が遊ぶ流れを一本決めて数えたから、「半分」と言えました。

- 同じ無料枠の話は、10秒ピッタリのランキング (https://koshinstudio.com/notes/stopwatch-rank/)にもあります。そちらは、書き込みの回数（KV の 1 日 1,000 回）でした。

  この記事の数字は、コミット（2026年9月7日）の記録から取りました。無料枠の上限値（1 日 500 万行など）は、コミットの記述によります。

  この話に出てくるもの

- すし積む（作品ページ） (https://koshinstudio.com/works/sushitsumu/) — 落ち物パズルのゲーム

- 10秒ピッタリのランキングを、公平にする (https://koshinstudio.com/notes/stopwatch-rank/) — 書き込み回数を数えた、別の記録

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