「重複は実質ゼロ」と数えたのに、監査は112組を出していた

English version

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

iOS アプリ「トレカダッシュ」には、同じ商品が複数の商品として登録されてしまう「重複」を、毎晩、統合する処理があります。ある日、自分で数えて、「重複は実質ゼロ」と記録しました。ところが、リポジトリの監査は、112 組を出していました。自分の測り方が、間違っていたのです。コミットの記録で、経緯を書きます。

このサイトには、トレカダッシュの作品ページはまだありません。ここに書くのは、開発の記録です。

「ゼロ」と数えて、112 組が出た

112 組の実体を見ると、たとえば、ヴァイスシュヴァルツの「ブースターパック ラブライブ!サンシャイン!!」が、7 件に割れて登録されていました。統合の処理が、毎晩動いているはずなのに、です。

原因:毎晩、途中で時間切れになっていた

統合の処理は、全ジャンルを通すと、約 15 分かかります。ところが、毎晩の定期実行に与えている持ち時間は、480 秒(8 分)でした。順番は、毎回、同じジャンル(ポケモン)から始まります。つまり、毎晩、ポケモンの途中で時間切れになり、後ろのジャンルには、永久に届かなかったのです。

数えたときに「ゼロ」だったのは、見ていた範囲(先頭のジャンル)だけが、きれいだったからでした。

直し方

その前に分かっていたこと:1 回では終わらない

この 2 日前(9 月 5 日)にも、統合について、わかったことがありました。A を B に統合すると、B の名前が、別の C と同じになることがあります。すると、1 回では終わりません。実データでは、こうでした。

回統合した件数その結果
1 回目138新たに 53 組の同名が発生
2 回目54同名の重複は 0 組

商品は 2,935 件から 2,713 件になりました。そこで、毎日の枠では、統合が 0 件になるまで繰り返す(上限 3 回)ようにしました。今回の「時間切れ」は、この繰り返しの、さらに手前の問題でした。

同じ日に、ほかにも三つ

分かったこと

「ゼロ」と数えたら、まず、何を数えたかを疑う。

この記事は、コミット(2026年9月5日、9月7日)の記録から書きました。

この話に出てくるもの

ほかの記録

コメント

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

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