一度だけ生まれた誤字が、店ごとに増えていった:「30th SEREBRATION」の件

English version

トレカダッシュ 開発の記録 / 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 SEREBRATION」と、「拡張パック『30th CELEBRATION』」を、捕まえられません。文字数の差が大きすぎて、編集距離が遠くなるからです(確かめて、そう分かっています)。

つまり、今回の件には、保険は効きません。効くのは、上の本命の修正です。保険は、同じ長さの帯で起きる別の誤字(たとえば、ヴァイスシュヴァルツの「/」が抜けるもの)を捕まえるために、残してあります。さらに、誤字の疑いのあるカタログを見つける読み取り専用の監査も作りました。コミットの時点では、同じ形の疑いが 21 件、見つかっています。

分かったこと

一度だけ生まれた間違いは、「既存のもの」になって、増える。

この記事は、コミット(2026年9月28日)の記録から書きました。誤字が生まれた経緯は、コミットの推測によります。

この話に出てくるもの

ほかの記録

コメント

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

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