戻ってきたかもしれない番号
ここのカウンターにはそれぞれ番号があります。埋め込みコードにあり、統計ページのアドレスにあり、運営者が貼ったすべてのページにあります。番号はこう配られます。100 から 9 999 999 999 のあいだの乱数を取り、使われていないか確かめる。
確かめるのは、一つのテーブルです。
もう一つのテーブル
長くアクセスのなかったカウンターはアーカイブテーブルへ移されます。ごく普通の整理です——稼働テーブルを小さく保ち、そこへのクエリを速く保ちます。2026 年 8 月 24 日、アーカイブには 212 771 個の番号があり、そのどれ一つとして、生成器が確かめるテーブルには存在しませんでした。
つまり、そのすべてが再び配られ得たということです。
百億通りの番号に対して、衝突率はおよそ 2 %。新しいカウンター五十個におよそ一個が、かつて誰かのものだった番号を受け取ることになります。しかもそれは抽象的な衝突ではありません。カウンターがアーカイブされるのは、まさにそのページが静かになったからです——けれど静かになったページが削除されたとはかぎりません。古い埋め込みが忘れられたサイドバーにまだ残っていて、そのページに訪問者が来れば、その訪問は見知らぬ他人の統計に、何年もあとに作られたカウンターに入ります。
それがすでに起きたかどうかを確かめる方法はありません。この経路で入った訪問は、ほかのどの訪問とも区別がつきません。
二つの変更
生成器は両方のテーブルを確かめるようになりました。そしてカウンターの削除は——同じ日から運営者が自分で実行できます——墓標を残します。番号だけの行を残し、二度と配られないようにします。削除は一つのトランザクションで二十のテーブルからデータを消し、控えを残しません。それが削除の意味です。番号だけが、焼いたままにしておくべきものです。
なぜ見過ごされていたのか
生成器はテーブルが一つだった時代に書かれました。アーカイブは後から、別の理由で、別の問題を解くために現れ、二つの考えを結ぶものは何もありませんでした。どちらの部分も、単独では正しかったのです。
この種のものはたいていこの形をしています。誰かがある場所で犯した誤りではなく、その帰結が見える位置に誰も立っていなかったという帰結です。唯一の防ぎ方は意図して探しに行くことで、これを見つけた問いはかなり平凡なものでした。削除機能を作る前に——カウンター番号は、ほかにどこに住んでいる?