全国オンライン対応受付 平日 9:00-18:00
お問い合わせ

開発記録 / まちのスタンプラリー制作記 / Vol.58 紙の提案に、動くものを添える

記事 04

疑わしきを、自動では止めない——点数ではなく、理由を残す

札の写真が共有されうる、という残ってしまうリスクをそのまま抱えたまま、次に考えたのは見つけ方だった。完全には防げないのなら、起きたときに気づけて、気づいたあとに手を打てる形にしておくしかない…

2026-09-16 公開

札の写真が共有されうる、という残ってしまうリスクをそのまま抱えたまま、次に考えたのは見つけ方だった。完全には防げないのなら、起きたときに気づけて、気づいたあとに手を打てる形にしておくしかない。ここで一つ、最初に決めたことがある。仕組みが自動で人を締め出す作りにはしない、ということだった。

三つの角度から、点をつける

印が入るたびに、三つの見方で点をつけるようにした。

一つめは速さ。直前に別の店で印を取ってから、基準の秒数より短い間隔で次の店の印が入ったかどうか。歩いて移動できない速さで店が変わるのは、素直に読めば同じ札を続けて読んでいる。

二つめは端末。同じ端末とみなせる手がかりから、一定の時間内に基準の数を超えるアカウントで印が入っていないか。一台の端末で名義だけ変えて回る形が、これで浮く。

三つめは順番。自分がこれまでに回った店の並びと、まったく同じ並びで進んでいる参加者が他にいないか。人が自然に歩けば、順番はばらける。同じ並びが何人も重なるのは、誰かの経路をそのままなぞっているということだ。

点数ではなく、日本語を残す

点をつけるところまでは機械の仕事だが、そこから先を機械に渡さなかった。閾値を超えた場合にするのは、保留にすることだけだ。そして必ず、なぜ点がついたのかを日本語の理由として一緒に残す。前の店から何秒で別の店を取った、基準は何秒、同じ端末から何分以内に何アカウント、基準は何——という具合に、数字を添えて書く。

理由が「点数が高い」だけだと、あとから誰も判断できない。運営の人が画面を見て、これは家族が同じ端末を使っているだけだと分かれば解除するし、明らかにおかしいと判断すれば取り消す。判断するのは人で、仕組みは材料をそろえるところまで、と線を引いた。参加者を疑って外すという行為は、地域の催しでは特に重い。重い決定を自動化しない、というのは技術的な判断というより運用の判断だった。

一律の上限は、善意の人に当たる

もう一つ、あえて入れなかったものがある。一日に取れる印の数の上限だ。上限は一見すると効きそうに見えるが、実際に先に当たるのは、休日に一日でたくさんの店を回ってくれる熱心な人のほうだ。不正をする側は上限を知れば日をまたぐだけで避けられる。効きにくい相手にほとんど効かず、いちばん大事にしたい参加者を止める。だから一律の制限は置かず、点と理由で個別に見る形にした。

消さずに、状態を変える

取り消しの実装も決めておいた。印も応募も、行を消さない。状態を変えて、いつ誰がなぜ変えたかを記録に足す。行が消える作りにすると、あとで「本当に不正だったのか」を検証できなくなるし、間違って取り消したときに戻せない。追記していく形にしておけば、判断そのものを後から見直せる。

店ごとの平常を、店ごとに測る

参加者側だけでなく、店の側にも目を配った。ある店で直近一時間に入った印の数と、それ以前の時間帯の一時間あたりの平均を比べ、一定の件数を超えたうえで平常の数倍になっていたら印をつける。絶対値で線を引かなかったのは、店によって平常がまるで違うからだ。人通りの多い店の十件は普通で、静かな店の十件は異常かもしれない。比べる相手は、他の店ではなくその店自身のいつもだった。

なお、期間や必要な店の数や、ここで使った基準値はコードに埋めず、設定として持たせてある。開催中に手が入る可能性がある値を、書き換えられない場所に置いてはいけない。

次の回は、これらを本当に確かめられたのかという、検査そのものの話を書く。