「気づくだけでなく、そもそも起こさない」:報告だけの監視を、見つけてその場で埋める形に作り替えた
トレカダッシュ 開発の記録 / 2026年8月
iOS アプリ「トレカダッシュ」の目標は、抽選の情報を、もれなく出すことです。ユーザーからの指示は、「気づくだけじゃなくて、そもそも取りこぼしが起きないようにして」でした。
この記事は、2026 年 8 月 27 日に、監視を、「見つけて報告する」から、「見つけて、その場で埋める」に作り替えた記録です。
数字は、2026 年 8 月 27 日の作業の記録から書いています。
報告だけの監視は、人が気づくまで埋まらない
それまでの、取りこぼしの監視(reportCoverageGap)は、報告するだけでした。人が気づいて、手で流すまで、穴は埋まりません。見つけたその場で、記事を作る(埋める)ようにして、1 日 3 回(取り込みの後)に走らせました。
- 記事を作る経路は、すでにあるものを使います。重複は、既存の判定(
hasExistingCoverageForStore)が防ぎます。 - 取り込み側が、正しく動いていれば、ここは 0 件で終わります。ここで記事が作られるのは、取り込み側に、まだ穴があるという意味です。件数は、「残っている穴の大きさ」として読みます。
黙って捨てる分岐に、ログを入れた
ある関数(touchLastSeenIfExists)の早期の return が、何も言わずに次へ行く、唯一の分岐でした。ほかの分岐は、全部ログを出すのに、ここだけが無言でした。そのせいで、「24 店が、同じ記事 ID になる」という、別の穴が、長く見つかりませんでした。無言で捨てる分岐は、見つからない穴の、住処です。
リンクが無い記事でも、「どう応募するか」は出す
応募リンクが分からない 32 件のうち、17 件は、相手の表にも、URL が無いものでした(店のアプリや、店頭の QR など)。ただ、相手は、「応募方法」や「応募条件」を、文章で書いています。それを取り込んで、応募方法を判定する処理に渡しました。「応募先が分かりません」と出すより、「アプリで応募」や「店頭の QR コードから応募」と出すほうが、役に立ちます。
修復の対象から、漏れていた記事
「応募リンクが分からない」という印が付いた記事でも、アプリ限定の店でも、行き先がまとめでもない場合は、修復の対象に、一度も入りませんでした。34 件のうち、対象は 15 件だけでした。印そのものを、対象の条件にしました。
最終の数字
| 前 | 後 | |
|---|---|---|
| 取りこぼしのカバー率(相手 1 サイト・24 件に対して) | 92% | 100%(途中 96%) |
| 表示中の記事 | 1,444 件 | 1,488 件(+44 件) |
| 応募リンクがある記事 | 97.4% | 97.8% |
ただし、100% は、1 つのサイトに対しての数字です。X のまとめの取りこぼしの調査では、3 店舗が出ましたが、保存された本文が 500 文字で切られていたので、これは下限です。X の監視が再開したあとで、測り直すことにしました。
分かったこと
気づく仕組みは、埋める仕組みまで、つなげる。
- 報告だけの監視は、人が気づくまで埋まらない。見つけたその場で、埋めます。
- 埋める件数は、「残っている穴の大きさ」。0 になるのが、本来の姿です。
- 黙って捨てる分岐に、ログを入れる。1 か所の無言が、穴を長く隠します。
- 応募リンクが無くても、応募方法は出せる。「分からない」より、「アプリで応募」。
- 修復の対象は、印そのもので決める。条件の組み合わせでは、漏れます。
- 100% は、測った範囲での数字。下限と書きます。
この話に出てくるもの
- トレカダッシュ — トレカの抽選・予約・先着の情報を集める iPhone アプリ
- 競合サイトと突き合わせて、取りこぼしを数えた — 取りこぼしを数えた話
- 本物の抽選を、静かに捨てていた 4 つの実例 — 黙って捨てる話
- X 監視の漏れ 4 つ — 監視の穴の別の話
ほかの記録
- 同じ報告が 3 回目:SwiftUI のボタンが「文字の上でしか」反応しなかった。過去 2 回の「修正」は効いていなかった — 「当選」「落選」ボタンが文字の上しか反応しない報告は 3 回目。過去 2 回は修飾子の順序を直しても効かず、ButtonStyle の中で見た目を組み立てて、6 か所を差し替えた。同じ日の「郵送なのに位置情報」も同じ根っこだった。
- 「ヤマダ電機」と「ヤマダデンキ」:表記ゆれと重複の原因は 3 つ重なっていた(包含だけの比較・59 秒の差・手動専用のジョブ) — 店名を「含んでいるか」だけで比べ、締切を 59 秒の差で別と判定し、重複整理が手動専用だった。言い換えの表は作らず一般則で直し、1 時間おきの定期実行にした。表記ゆれ 2 件、重複 7 組が 0 に。
- あいまいな店名で地図を引くと、日本の真ん中の静岡が返る:チェーン名を並べず、Google 自身の答えで判定した — 店名を Google の地図検索に渡すと、あいまいな名前では日本全体の矩形の真ん中(静岡・愛知)が返った。ヤマダデンキが浜松、サンエーが掛川の工場に。チェーン名の一覧は作らず、答え自身で信用できるかを 4 つの規則で判定した。
コメント
感想や、記事の間違いの指摘は、ここへ。書くには、GitHub のアカウントが要ります。
押すと、giscus(giscus.app)と GitHub に接続します。押さなければ、接続しません。詳しくはあつかいに書いています。