通知は取り消せない:直近 72 時間の通知の 19% が誤通知で、関門が通知の「後」に効いていた

English version

トレカダッシュ 開発の記録 / 2026年9月

iOS アプリ「トレカダッシュ」は、トレカの抽選販売の情報を集めて、新しい情報が見つかると、利用者のスマートフォンに通知します。集めた記事には、「本当に応募できる抽選か」を確かめる関門(フィルター)があります。当選者の発表、買取の告知、カード以外の商品、などを出さないための仕組みです。

ところが、2026 年 9 月 20 日の点検で、通知した記事の約 5 件に 1 件が、関門を通るべきではない記事だったと分かりました。関門はあったのに、通知は止まっていませんでした。

この記事は、2026 年 9 月 20 日の再点検の記録から書いています。

直近 72 時間の通知を、全部数えた

点検の方法は、単純です。直近 72 時間に通知した記事を全部取り出して、1 件ずつ「通知してよかったか」を判定し直しました。

通知した件数誤通知割合
644 件122 件19%

誤通知の内訳は、次のとおりです。

誤通知の理由件数
当選者向けの案内(応募できない)30
古い投稿(何日も前の投稿が、新着のように通知された)27
期限切れ11
応募する手段が無い14
カード以外の商品10
参加条件のある抽選8
そのほか22

関門は、「出すか」を後から決めていた

記事の関門は、あとから記事を「非表示」に下げる形でも働いていました。ところが、通知は、記事を保存した約 0.6 秒後に飛びます。関門が後から記事を下げても、通知は、もう送られています。

実際に、関門が後から非表示にした記事 30 件のうち、25 件は、すでにプッシュ通知が届いた後でした。画面からは消えても、スマートフォンに届いた通知は、取り消せません。

もう 1 つの原因:取り戻しで、古い投稿が新着になった

X の監視が止まっていた期間がありました。9 月 19 日 12:44 から、その分を取り戻す処理が動きました。このとき、9 月 13 日から 18 日の投稿が、新着として 367 件まとめて通知されました。

止まっていた間の投稿を取り込むのは正しいことです。しかし、「いつ見つけたか」ではなく、投稿の日付で見ないと、何日も前の投稿が、いま出たばかりの情報に見えてしまいます。

直し方:通知を送る側で、同じ関門を通す

直し方は、「保存のときに効く関門」を増やすだけでは足りない、という点にありました。通知は取り消せないので、通知を送る関数の入口に、記事の関門と同じ判定を通すようにしました。

分かったこと

取り消せないものは、出す前に止める。

この話に出てくるもの

ほかの記録

コメント

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

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