一度だけ生まれた誤字が、店ごとに増えていった:「30th SEREBRATION」の件
トレカダッシュ 開発の記録 / 2026年10月
iOS アプリ「トレカダッシュ」で、利用者から、「この記事、別の記事と重複しているよ。それに、商品名がおかしい」という報告が来ました。調べると、一度だけ生まれた誤字の商品が、店ごとの記事が来るたびに、再利用されて増えていたことが分かりました。原因と、直し方と、直し方の限界まで、コミットの記録で書きます。
このサイトには、トレカダッシュの作品ページはまだありません。ここに書くのは、開発の記録です。
報告されたもの
ポケモンカードの「30th CELEBRATION」という商品の記事が、「30th SEREBRATION」という商品名(CELEBRATION の綴りの間違い)で、複数の店に出ていました。しかも、同じ商品の、正しい名前の記事と重複していました。
根本原因:短い見出しが、公式名と一致しなかった
まとめサイトの要約の投稿には、「『30th CELEBRATION』」のような、短い見出しが出てきます。一方、アプリの公式カタログの正式名は、「拡張パック『30th CELEBRATION』」です。短い見出しのほうが、公式名より短いので、「記事のタイトルが公式名を含むか」という、一方向の判定では、一致しませんでした。
一致しないと、AI による照合に回されます。その過程で、一度だけ、「30th SEREBRATION」という誤字の商品が作られました。コミットの推測では、カタログにある別の表記「30th セレブレーション」を、ローマ字に変換するときに間違えたもの、とのことです。
本当に困ったのは、その次です。誤字の商品は、いったん作られると、「既存の商品」として、繰り返し再利用されます。店ごとの新しい記事が来るたびに、同じ誤字、同じ重複が、量産されていきました。
まず、データを直す
全店舗を調べました。ビックカメラ、三洋堂書店、ゲームプラザなどの 3 店舗では、正しい名前の記事と重複していたので、片方を非表示にしました。ほかの 10 記事は、商品を付け替えるだけで済みました。合わせて 13 記事です。誤字の商品は、削除しました。
ここで、一つ、わざと手を付けなかったところがあります。商品を統合する既存の道具は、「SEREBRATION」と「CELEBRATION」を、別の商品と判定して、弾きました。この関門は、意図的に厳しく作ってあるので、緩めませんでした。手作業で、個別に直しています。
本命の予防:「完全一致」で、短い見出しを拾う
データを直しただけでは、また起きます。そこで、公式カタログとの照合を直しました。公式名の先頭にある汎用的な形態語(「拡張パック」など)を一つ取り除いて、残りが記事のタイトルと完全に一致するときだけ、同じ商品とみなします。
「含む」ではなく「完全一致」にしたのは、「30th CELEBRATION カードセット○○」のような、より具体的な別の商品まで、拾ってしまわないためです。これで、最初から公式カタログと正しく一致するようになり、誤字が生まれた AI 照合の経路に、そもそも届かなくなります。確かめた結果は、こうです。
- 「30th CELEBRATION」は、公式の商品に、正しく一致する。
- 誤字の「30th SEREBRATION」は、一致しない(誤って公式扱いにしない)。
- 既存の完全一致、別のジャンル、無関係な弾名で、以前と動きが変わらない。
保険:編集距離のチェック、そして、その限界
念のため、商品を作る前の合流点に、「公式カタログとの編集距離が近い候補は、誤字の疑いが強いので、却下する」というチェックも入れました。ところが、このチェックだけでは、「30th SEREBRATION」と、「拡張パック『30th CELEBRATION』」を、捕まえられません。文字数の差が大きすぎて、編集距離が遠くなるからです(確かめて、そう分かっています)。
つまり、今回の件には、保険は効きません。効くのは、上の本命の修正です。保険は、同じ長さの帯で起きる別の誤字(たとえば、ヴァイスシュヴァルツの「/」が抜けるもの)を捕まえるために、残してあります。さらに、誤字の疑いのあるカタログを見つける読み取り専用の監査も作りました。コミットの時点では、同じ形の疑いが 21 件、見つかっています。
分かったこと
一度だけ生まれた間違いは、「既存のもの」になって、増える。
- 間違ったデータは、自分で増える。作られたものが、次からは、再利用される側になります。データを直すだけでは足りず、生まれる経路を直す必要があります。
- 「含む」より、「完全一致」。広く拾うと、別の商品まで巻き込みます。
- 保険の限界は、確かめて、書いておく。「このチェックで防げる」と思い込まずに、今回の誤字には効かないことを、先に確かめました。
- 厳しい関門は、緩めない。統合の道具が弾いたのは、正しい動きでした。
この記事は、コミット(2026年9月28日)の記録から書きました。誤字が生まれた経緯は、コミットの推測によります。
この話に出てくるもの
- 「9種セット」の正体は御三家9商品だった — 同じアプリの、商品名の突き合わせの記録
- 「減るはず」が、二度外れた — 同じアプリの、AI 照合の記録
ほかの記録
- 「しょうがない」を測り直したら、取得の費用は8分の1だった — 「イオンとあみあみは費用が重くて縮められない」は、古い単価に基づく思い込みだった。3つの取得設定で同じページを比べて、描画が丸ごと無駄だと分かった記録。
- App Store 審査で「Guideline 2.1 Information Needed」が届いた:求められた6つ — 初めての審査で届いたのは、不合格ではなく Guideline 2.1「Information Needed」だった。求められた六つ(実機の画面収録、目的、外部サービスの一覧など)と、前に直したこととのつながり。
- App Store の審査で止まった四つ:iPad のスクショ、ITMS-91064、アカウント削除、投稿の通報 — iPad スクリーンショットの要求、自動検査の ITMS-91064(NSPrivacyTrackingDomains が空)、アカウント削除(5.1.1(v))、投稿の通報(1.2)。審査に出す手前で止まった四つと、その直し方。
コメント
感想や、記事の間違いの指摘は、ここへ。書くには、GitHub のアカウントが要ります。
押すと、giscus(giscus.app)と GitHub に接続します。押さなければ、接続しません。詳しくはあつかいに書いています。