商品のジャンルを、公式カタログで直した:下見を 3 回やって、13 件から 4 件に絞った
トレカダッシュ 開発の記録 / 2026年9月
iOS アプリ「トレカダッシュ」には、「この商品が、ポケモンカード扱いなのが、そもそも間違い」という報告が来ました。商品の名前は「勝敵!逆転おこせ鬼の∞ディスペクター!!」。これは、デュエル・マスターズの商品なのに、ポケモンカードの商品として登録され、ポケモンカードのフィードに出ていました。
直し方は、「公式のカタログを、ジャンルの正解にする」でした。ただ、それを一括で当てる前に、下見を 3 回やって、はじめて安全になりました。この記事は、その過程の記録です。
数字は、2026 年 9 月 11 日の作業の記録から書いています。
なぜ、デュエル・マスターズの商品が、ポケモンカードになったか
お店の X アカウントは、「ポケモンカード担当」として監視しています。そのため、記事のジャンルが、そのまま商品のジャンルになります。この商品の名前には、ゲームの呼び名も、型番も入っていません。ジャンルを推定する、既存の 2 つの判定(名前の言葉から推定する、型番から推定する)は、どちらも答えられませんでした。
公式のカタログには、「DM26-RP3 デュエル・マスターズ TCG 逆札篇 第 3 弾 勝敵!逆転おこせ鬼の∞ディスペクター!!」として載っています。商品の名前、画像、定価と同じく、ジャンルも、公式が正です。そこで、「公式のカタログから、ジャンルを決める」判定を足しました。入口(商品を作るとき)と、当て直し(すでにある商品を直す処理)の両方に、同じ判定を入れました。
1 回目の下見:正しい商品が、9 件も別のゲームになるところだった
最初の判定は、「名前が、1 つのジャンルの弾の名前に、丸ごと含まれるなら、そのジャンル」でした。書き込まずに結果だけを見る下見をすると、直す対象は 13 件。中身を見ると、ヴァイスシュヴァルツの正しい商品が 9 件、ユニオンアリーナに変えられるところでした。
| 回 | 判定 | 直す対象 | 中身 |
|---|---|---|---|
| 1 | 名前が、1 つのジャンルの弾に丸ごと含まれる | 13 件 | ヴァイスの正しい商品が 9 件、ユニオンアリーナへ |
| 2 | +形態の語を外した、作品名でも、曖昧さを見る | 9 件 | まだ、ヴァイス 5 件が誤爆 |
| 3 | +公式の弾名が、自分でゲーム名か型番を名乗っているときだけ | 4 件 | 誤爆 0 件 |
真因:公式の一覧は、古い弾まで網羅していない
誤爆の原因は、公式の一覧が、古い弾まで載せていないことでした(ヴァイスシュヴァルツは 64 件で、最近の弾だけ)。さらに、「ブースターパック チェンソーマン」のように、形の語と作品名だけの弾の名前は、ゲームを特定しません。同じ作品のカードが、複数のゲームから出ているからです。
そこで、弾の名前に、「デュエル・マスターズ TCG」「ONE PIECE」のようなゲームの呼び名か、[SB02]、[EVX13]、DM26-RP3 のようなそのジャンルだけの型番が入っているときだけ、信じることにしました。
最後に残った 4 件は、全部、正しい直しでした。
pokemon → onepiece 「Heroines Edition」 (ONE PIECE…【EB-03】)
pokemon → duelmasters 「勝敵!逆転おこせ鬼の∞ディスペクター!!」(報告の件)
yugioh → dragonball 「MANGA BOOSTER 02」 ([SB02])
dragonball → gundam 「プレミアムカードコレクション02」([EVX13])
もう 1 つ:行をまたいで書かれた商品名が、「書いていない」扱いだった
同じ日に、もう 1 つ、自動検知の報告が来ました。「商品名の指紋が一致しない照合を却下」。お店の X の投稿は、商品名を行をまたいで書きます。
【本日発売商品】
〇ユニオンアリーナ
アドバンスドデッキ
∟BLEACH 千年血戦篇
おひとり様1個まで
※ブースターパック『BLEACH 千年血戦篇Vol.3』は
抽選販売商品です。当選者のみ購入いただけます。
商品名の照合には、「選ばれた商品名が、題名に丸ごと入っているなら、何も言わない」という決まりがあります。ところが、行頭の「∟」を落としていなかったので、「丸ごと入っていない」と判定されました。その結果、同じ投稿の中にある別の商品(「ブースターパック BLEACH 千年血戦篇 Vol.3」)を根拠に、正しい照合が却下されていました。
1 つの投稿に、複数の商品が並ぶのは、普通のことです。直し方は、比較専用の整形処理に、続きを表す印(∟ └ ┗ ├ ┣ ⇒ → ▶ >)を足すことでした。この処理は 6 か所から呼ばれているので、1 か所直せば、全部に効きます。実データで、却下が採用に変わることを確かめました。
分かったこと
下見は、1 回では足りない。
- 公式の一覧は、完全ではない。載っていないものがあるから、「載っていれば信じる」で止めず、「自分で名乗っているときだけ」に絞る。
- 書き込む前に、下見する。1 回目は 13 件、3 回目は 4 件で、誤爆は 0 件でした。
- 同じ判定を、入口と当て直しの両方に。片方だけだと、すり抜けます。
- 書き方の揺れは、比較の前に整える。行頭の「∟」1 文字で、正しい照合が落ちました。
この話に出てくるもの
- トレカダッシュ — トレカの抽選・予約・先着の情報を集める iPhone アプリ
- 一括処理が「全記事」に当たった — 一括処理の事故。動かす前に数える話
- 本物の抽選を、静かに捨てていた 4 つの実例 — 下見で 129 件を止めた話
- 一度だけ生まれた誤字が、店ごとに増えていった — 商品名の取り違えの、別の経路
ほかの記録
- 監査 61 本を総点検して見つけた 4 つ:朝 4 時に 51 本が固まり、鍵の期限は 55 秒で、定価の補完は「入れない」と決めた — 1 日 1 回の処理が 4 時に 27 本・5 時に 24 本集まって枠を塞いでいた。楽天の巡回は 1 回 181〜480 秒で、鍵の期限は 55 秒しかなかった。数えても直せない異常を数えるのをやめ、定価を 1 店で埋める案は、測ったうえで入れなかった。
- 公式の一覧から、「作品名だけの商品」が 393 件できていた:商品名の欄に、商品の形は入っていなかった — 公式サイトの一覧を取り込むと、この日だけで商品が 502 件できた(ふだんは 1〜10 件)。商品名の欄は作品名だけで、形はカテゴリ側にあった。393 件を掃除し、328 件を正しい名前で入れ直すと、別表記のぶつかりが 0 組から 250 組になった。
- 「同じ応募ページ」なら「同じ店」と決めつけていた:店名が別の店になった記事 52 件 — 同じ応募ページの記事の店名を書き揃える処理が、仙台駅前店を「新宿南口店」にしていた。応募ページは 15 の別々の店が共有していた。「確かめられたときだけ揃える」に直し、52 件を、触っていない項目から復元した記録。
コメント
感想や、記事の間違いの指摘は、ここへ。書くには、GitHub のアカウントが要ります。
押すと、giscus(giscus.app)と GitHub に接続します。押さなければ、接続しません。詳しくはあつかいに書いています。