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

English version

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

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

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

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

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

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

前後
呼び出し52
読んだ行421221
書いた行11

頭打ちになるのは、読んだ行数です。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 を返したときだけ、一覧を引く形にしました。

確かめたこと

分かったこと

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

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

この話に出てくるもの

遊ぶ作品ページへ

ほかの記録

コメント

感想や、記事の間違いの指摘は、ここへ。書くには、GitHub のアカウントが要ります。

押すと、giscus(giscus.app)と GitHub に接続します。押さなければ、接続しません。詳しくはあつかいに書いています。