見出し画像

旧デジカ自由研究〜バーコードについて〜

ごきげんよう、黒川です。
数年ぶりの旧デジカ記事です。
旧デジモンカードの仕様違い周りについてはおおむね書いたかな〜と思っていたんですが、カードリスト兼自身の所持リストを整備していて、
『ここまで旧デジカのバーコードのこと考えてる人いないんじゃね?』
とふと思ったので、せっかくだし記事にします。
ちょうど夏休みの季節だし(もう終わったよ)自由研究ですね。
今回のは狂ったディープな人向けというか物好きな人向けというか、あまりデジモン的な面白みはないと思います……。


旧デジカのバーコードってなに?

旧デジカのバーコードといえば知っている人もいるかと思いますが、
ブースター12(パック版)とスターター7からカード右下に印刷されるようになったアレです。
線のみで数字は印字されていないため、線が示す数値はわかりません。
中には同じカードNo.でもバーコードが複数種類あるカードもあります。
もう少し細かく知りたい人は前回までの記事を読んでください。

旧デジカに印刷されているバーコードは、ぱっと見た感じ私たちが日常的に触れているバーコードと似た見た目をしています。
しかしながら、これはアプリストアなんかで配信されている一般的なバーコードリーダーアプリなどで読み込もうとしてもどうにも読み取りが上手くいきません。
バーコードバトラーでも読み取れません(試した)。
読み取りができるのはディースキャナだけです。
(1.0と2.0は持っているのですが3.0を持っていないので欲しい……と長いこと思い続けている、高い……)

前述のカードリストを作りながら
・バーコード違いカードの情報をまとめるぞい
→カードのスキャン画像じゃちょっと比較が大変だな……
→バーコードなら
画像生成できるしそれでいこう!
→バーコードリーダーアプリでバーコードが読み取れないよお……
→チクショー!もう自力で読み解いたるわ!
となったのがきっかけです、この時点で正気を失いかけている。
バーコード違い許すまじ。
そんなこんなで気になっているのはこんなところ。

疑問

  • 旧デジカのバーコードはなぜディースキャナ以外で読めないのか

  • ディースキャナはなぜ旧デジカのバーコードが読めるのか

また、前回の記事でコメントいただいていたのですが、一部カードのバーコード違いについてはスタッフの遊び心だったとかなんとか……(情報ありがとうございます!)
ネーモンとボコモンは配布場所の違いと言われていたりするようですが、どうやらそうでもない(関東にしか出場していないのに2パターン所持していた)話を聞いたこともあるので、なんもわからん……と思っております。

バーコードそのものについて調べる

手始めとして、バーコードのつくりから調べることにしました。
規格や読み方についてはここここにお世話になりました。
すべてこの解説のおかげです。

日本で一般的に用いられているのはJANコード(EANコード)です。
前述の通り、旧デジカに使われているバーコードとよく似ています。
JANコードというものは、ざっくりこういう仕様らしいです。

  • 0〜9の数字で構成され、13桁(12桁+チェックデジット1桁)という内訳

  • チェックデジットは読み取り時の誤認識を避けるためのもので、前12桁から算出される

  • 算出結果と13桁目の数字が一致していないと読み取りができない

なるほど、わからん。
「まあディースキャナでJAN読めるんだし同じ読み方でいけるやろ(適当)」と考え、バーコードをどうにか自力で解読しました。

ゑ?

いや12桁しかねェ!!JANコードじゃないってこと!?
ところが12桁のバーコードはUPC-Aという規格があるらしい。
こちらは主にアメリカやカナダで使用されているんだとか。
(JANコードの元になった規格でもあるらしい)
桁数は違うものの、JANコードと同じで最後の桁はチェックデジット。
つまり【11桁+チェックデジット1桁】です。

完全に独学ですが、こういう手順で解読してます

しかしUPC-Aとして考えてみても、12桁目のチェックデジットが計算と合いません。
つまり、一般的なバーコードリーダーで旧デジカのバーコードが読み取れないのは、このチェックデジットが一致していないからなのでは?
逆にディースキャナはチェックデジットを無視している可能性があります。
そして旧デジカのバーコードが12桁なら、JANコードの1桁目or13桁目はディースキャナ的に必要ないのでは?との推測に至ります。

実は例外として、旧デジカでもアプリで読み取れるカードが一部あるのですが、これはたまたまチェックデジットが計算と一致しているからだと思われます。
そんなことある?
(読み取れたバーコードはすべてチェックデジットが一致していました)

どんどん深掘り

JANとUPC-Aについてさらに調べていると、

  • JANで書かれているバー自体は12桁しか表せない

  • 1桁目の数字は2〜7桁目まで(=センターバーより左)の表現パターンの組み合わせ方で決まる

  • JANのセンターバーより左側の表現パターンは数字ごとに2種類ずつある(奇数パリティと偶数パリティ)

  • JANの1桁目を『0』(=センターバー左がすべて奇数パリティ)にするとUPC-Aになる
    (UPC-Aのセンターバーより左の表現パターンはすべて奇数パリティで表現されている)

ということがわかりました。
バーで表せるのが12桁ということであれば、UPC-Aと同じです。
実は最初に旧デジカのバーコードを解読したとき、JANコードのつもりで解読してたのにセンターバーより左がすべて奇数パリティの表現パターンだったので、なーんかおかしいと思ったんだよなァ!

さらにJANの1桁目はバーとして表現されていないとなれば、やっぱりディースキャナでのスキャンにJANの1桁目は必要ないのでは?
しかしながら、1桁目を削除すると当然13桁目のチェックデジットの計算が合わなくなります。
ということはディースキャナはチェックデジットを計算していないのでは?という疑問が浮かんできました。
バーコードは身の回りに溢れていますし、ここはひとつ実験をしてみることにしました。

使用するもの

  • 家の中に転がっていたディースキャナ2.0(ボロい方、黒)

  • コアラのマーチ(たまたま家にあったアップルパイ味)
    JANコードは13桁で【4903333210213】です。

  • コアラのマーチのバーコードを元に12桁に改変して生成したバーコードを印刷したもの(桁数が変わるのでUPC-Aで作成)

ボロボロだけど現役のディースキャナ2.0

実験パターン

  1. 正しい向きでスキャン

  2. バーコードを上下逆にしてスキャン

  3. JANの1桁目を削除してUPC-Aとして生成したバーコードをスキャン

  4. JANの13桁目を削除してUPC-Aとして生成したバーコードをスキャン

桁数が変わるのでバーパターンが変わりますが、
推測が正しければ実験1と実験3のスキャン結果は同じになるはずです。
また、ついでに行う実験2ですが、逆向きでスキャンするとやたらスカモンが出てくるので実験2の結果はスカモンになりそうな気がします。
試してガッテン!

実験結果

  1. 正しい向きでスキャン
    スキャン結果:アイテム獲得(チェンジDa)

  2. バーコードを上下逆にしてスキャン
    スキャン結果:デジモン獲得(スカモン)

  3. JANの1桁目を削除してUPC-Aとして生成したバーコードをスキャン
    スキャン結果:アイテム獲得(チェンジDa)

  4. JANの13桁目を削除してUPC-Aとして生成したバーコードをスキャン
    スキャン結果:デジモン獲得(グラウモン)

うおー!なんと推測通りの結果になりました!
そして当然のようにすべてのスキャン方法でスキャンが成功しました。
実験3と4で使用したバーコードはチェックデジットが一致していないため、ディースキャナは一般的なバーコードリーダーとは異なる仕様でバーコードを読み取っていることがわかりました。
実験2の結果は案の定スカモンになりましたが、私はあくまで旧デジカのバーコードがJANとどう違うのか、なぜディースキャナでだけスキャンできるのかが知りたいだけなので、ここでは追及しません。

ここまでの結論

  • ディースキャナはJANをスキャンする場合2〜13桁目だけを読んでいる

  • ディースキャナはチェックデジットを計算していない

  • 旧デジカのバーコードはUPC-A(チェックデジット無視)で作られている

ディースキャナという唯一無二

ここまで調べたり実験した結果、旧デジカのバーコードはUPC-Aのチェックデジットガン無視で作られているっぽいことがわかりました。
『チェックデジットが一致しない=一般的なバーコードリーダーで読み取れない』なので、つまり旧デジカに印刷されているバーコードの内容が知りたければ自力で解読するしかないということです。そんなご無体な。
楽して旧デジカのバーコードに書いてある内容が知りたかっただけなのに。
しかしながら、そんなハチャメチャな仕様のバーコードを読み取れるディースキャナはかなり珍しいアイテムなのではないでしょうか。
実際に読み取った数値がなんなのかは見られないのが悲しいところです。
ここまでわかったらアプリ開発とかできませんか?

なお、私がここまでバーコードについて必死で調べたのもバーコード違いがある一部カードをリストにまとめるためなので、バーコード違いがなさそうなカードはまったく解読していません。
もしリスト以外のカードにバーコード違いが発生してたら解読します。

そして旧デジカのバーコードの仕様、そしてディースキャナの読み取りの仕様がわかっても、狙ったアイテムを好きに読み取れるかというとそうではありません。
本題からは少し逸れますが、私が解読したバーコード違いがあるカードを眺めてわかったことといえば、

  • アイテムがゲットできるバーコードは【2〜】から始まる

  • バトルが発生するバーコードは【00009〜】から始まる

  • それ以外のバーコードはデジモンがゲットできる

上記のようなパターンになっていたことくらいでしょうか。
旧デジカに関してだけ言えば、バーコードの形を覚えれば見ただけである程度なにが発生するバーコードなのかは判別がつくようになると思います。
でもこんなパターンを覚えるよりデジ文字が読めるようになった方がまだ有用だと思います。
お前もデジ文字を読み書きできるようにならないか。

バーコードのことがここまでわかったところで、ディースキャナそのものを解析したりはできないので、一般のJANコードは実際に読み取ってみないと読み取り結果がどうなるかはわからないです。
また、私は前述の通りディースキャナ3.0を持っていないので、カードリストで空欄になっているスキャン結果がわかる人は教えていただけると大変ありがたいです……。

さいごに

ここまで読んでくれた人、ありがとうございます。
つらつらと書いてきましたが、この内容は私が2019年頃に試行錯誤していたことを基に少し整理して書いただけのものなので、実際のディースキャナやバーコードの仕様とは異なっていたり間違っていたりする可能性があります。
実は旧デジカ(ディースキャナ)ってこういう感じなんやで〜というのを知っている人がいれば、コメントで教えていただけるとうれしいです。

旧デジカのコレクションはこれからも地道に続けていきますが、ゴールドエッチング系は高額になりすぎて手に入れられる気がしないな〜と思っている今日このごろ。
リストの更新も全然追いついていない状態ですが、ご協力いただける方はぜひよろしくお願いします。
私も地味に所持総数だけは増えています。どうにかしたい。

余談

これだけバーコードのことを調べると、かつてバーコードロード2002で配布された賞品のバーコードも解読できちゃうんですよね!解読しました。
スキャン内容を公開はしませんが、興味がある人はぜひ解読してみてください!

いいなと思ったら応援しよう!