「次回へ」と出続けていた 25 本の点検は、一度も走っていなかった:3 つの時間予算を、同じ開始時刻から数えていた
トレカダッシュ 開発の記録 / 2026年9月
iOS アプリ「トレカダッシュ」の裏側には、記事の「販売の形式」を点検して直す処理があります。この処理の中に、「持ち回りで 25 本の点検を順に走らせる」部分がありました。
2026 年 9 月 11 日に、処理の各段の所要時間を測る計器をつけると、その 25 本は、一度も走っていなかったことが分かりました。ログには、「時間予算のため 18 件を次回へ」と出続けていました。この「18 件」は、一部ではなく、全部という意味でした。
数字は、2026 年 9 月 11 日の作業の記録から書いています。
3 つの予算が、同じ開始時刻から数えられていた
この処理は、3 段構えでした。それぞれに、時間の予算があります。
| 段 | 予算 | 実測 |
|---|---|---|
| ① 本体のループ | 420 秒 | 425 秒を使い切る |
| ② 毎回走る枠 | 780 秒(通算) | 実際に使えるのは 360 秒。861 秒で終了 |
| ③ 持ち回りの 25 本 | 700 秒(通算) | ②が 700 秒を超えるので、毎回 0 本 |
3 つの予算は、同じ開始時刻から数えられていました。①が 420 秒、②は通算で 780 秒、③は通算で 700 秒。一見、段ごとに余裕があるように見えます。しかし、②は「通算 780 秒」のうち、①が 425 秒を使ったあとの 360 秒しか使えません。そして、②が終わった時点(861 秒)で、③の「通算 700 秒」は、とうに過ぎています。③は、毎回、始まる前に、「予算切れ」と判断されて、0 本でした。
ログの「時間予算のため 18 件を次回へ」は、毎回、全部を次回へ回していました。「次回」は、永久に来ません。
直し方:勘で広げず、制限時間から割り付ける
予算の数字を、勘で広げるのは、やめました。代わりに、ジョブそのものの制限時間から、割り付ける形にしました。制限時間は 1 か所(REPAIR_SALE_TYPES_TIMEOUT_SEC)にだけ書き、各段の締め切りは、それに割合を掛けて出します。
| 段 | 締め切り(制限時間に対する割合) |
|---|---|
| ① 本体 | 23% |
| ② 毎回走る枠 | 67% |
| ③ 持ち回り | 93% |
制限時間は、1,800 秒にしました。段の締め切りは、前の段の続きでなく、全体に対する割合なので、前の段が使い切っても、後ろの段の予算は残ります。
計器を足す:どの段が重いか、見えていなかった
もう 1 つの原因は、「12 本のうち、どれが重いのか」が分からないまま、上限だけを広げていたことです。そこで、1 ステップごとの所要秒数を、ログに出すようにしました。実測の、重い順です。
| ステップ | 所要 |
|---|---|
| 通知済みの非表示記事に、代わりの記事を付ける | 119 秒 |
| 告知画像の QR から、応募先を探す | 102 秒 |
| 定価の目安の、単位を直す | 48 秒 |
| 定価の目安を、写す | 46 秒 |
| 応募先も応募方法も無い記事を直す | 41 秒 |
分かったこと
「次回へ」は、次回が来ると決まっているときだけ、意味がある。
- 予算を、同じ開始時刻から数えると、後ろの段が飢える。前の段が使い切れば、後ろは 0 です。
- 「次回へ」のログを数える。毎回、全部が「次回へ」なら、それは「一度も走っていない」です。
- 上限は、勘で広げず、全体の制限時間から割り付ける。
- まず、各段の所要時間を測る。どれが重いか分からないまま、上限だけ広げても、直りません。
この話に出てくるもの
- トレカダッシュ — トレカの抽選・予約・先着の情報を集める iPhone アプリ
- 監査 61 本を総点検して見つけた 4 つ — 同じ「持ち回りに届かない」話
- 関門を直しても、すでにあるデータは直らない — 直す処理に順番が回らない話
- Gemini の費用を削る前に、計器を疑った — 先に計器を直す話
ほかの記録
- 関門を直しても、すでにあるデータは直らない:「もう試した」印・URL の目印・対応表の 3 つの実例 — 判定を直したのに既存の 32 件のうち 12 件が直らなかった(印が 7 日残る)、URL に載せた目印が張り替えで失われて 111 件が再分割された、対応表から外しても書かれた値が残った。同じ形の報告が 5 件だった監査の記録。
- 全部を速く見られないとき、何を速くするか:427 弾のうち人気の 128 弾を速く回し、予算を超えたら自分から譲る — 先着や予約の監視で、全 427 弾の一巡は 4〜24 時間。人気 3 ジャンルの直近 2 年 128 弾を別枠で速く回し、人気商品は 1 分おきに見た。まとめて回すと別の監視が止まる、短い窓で測ると費用を見誤る、などの記録。
- 表示中の記事のリンク先を、実際に開いて確かめた:約 60 件の間違いと、最初の点検が間違えた 3 つのこと — 表示中の記事のリンク先 1,000 件超を開いて、記事と突き合わせた。Amazon の招待リクエストが先着になっていた、休店中・売り切れが表示中、リンク先が別の店・別の商品、応募リンクがサイトのトップへ転送。最初の点検自体も 3 つ間違えていた。
コメント
感想や、記事の間違いの指摘は、ここへ。書くには、GitHub のアカウントが要ります。
押すと、giscus(giscus.app)と GitHub に接続します。押さなければ、接続しません。詳しくはあつかいに書いています。