バーコードの解析、ふたたび。

  平沢博物苑からのご指名

先日、平沢界隈の調べ物をしていたら、調べていた内容とは全く関係ないのですが 「平沢博物苑」から「ひ組」へ、ご指名をいただいているブログを発見しました。

博物苑顛末録 「棒の暗号 − 改訂復刻DIGITAL版 音楽産業廃棄物のバーコードには何が隠されているのか」

要約すると、「改訂復刻DIGITAL版 音楽産業廃棄物」のDVDケース添付シールにバーコードがあるが、 途中まで解読したので、あとはよろしく頼む、ということらしいのです。



あの、そういうのは、SNSでDMなりメンションなりで連絡ください。私が気づくのに10数年かかりますw


  平沢博物苑のおさらい

平沢博物苑でジフさんが解析した内容をまとめると、
・日本企業のJANコードではない
・チェックデジットが正しくない不正なコード
ということらしい。

そして最後は、
「ひ組」のマヒトさんに今回の記事を捧げます。
となっており、要は「この後の解析しろ」ということかとw

あの、言っておきますけど、私はバーコードの専門家でもないんでもないんですよ。

ただ、ジフさんが調べていた10数年前に比べると、ネットにバーコードの情報がふんだんにあるので、 バーコードに明るくない私でも、ちょっと調べたら少しは前に進んだ… というか、私が見た限り「行き止まり」に見えるので、そのことを解説しようと思います。


  これはJANコードなんだろうけど



まず、一次元バーコードには様々なフォーマットがあります。このバーコードはどのフォーマットかというと、 JANコード(の源流であるEANコード)のフォーマットとみて間違いないでしょう。
13桁であることと、先頭、中央、末尾に細い2本線があり、ご丁寧にその2本線だけが下にはみ出すように少し長く描かれているからです。

JANコードだとするならば、最初の2文字は国コードで、ジフさんのブログでも
日本を示す「49」「45」ではない
ことが指摘されています。では、この「02」はどこの国のコードなのかというと、これは国ではなく「インストアコード」と呼ばれるものなのです。

例えば菓子メーカーがチョコレートを発売する際、「49」または「45」で始まるJANコードに、そのチョコレートを登録します。
おそらく、このデータは日本中のスーパーやコンビニのレジ(のPOSシステム)で共有され、 スーパーでいちいち製品を登録しなくても、レジでバーコードをピッと読めば、件のチョコレートだとわかるようになっています。

ところが、スーパーにはそういう全国共通の既製品ではない商品もあります。 例えばスーパーが独自に作っている「スタミナ弁当」であったり「豚ひき肉100g」だったり。
そういった商品も同じレジのバーコードリーダーで読み込むのためのルールが「インストアコード」なのです。
先頭の「02」及び「20〜29」は国コードには割り当てられておらず、この数字から始まる場合は、店舗やグループ企業で (JANコードとして登録しなくても)好きに番号を振っていいコードなのです。

試しにスーパーに行ってみてください。肉、魚、野菜、お惣菜などはこのインストアコードが振られていることが多いのです。
また、コンビニでも、サンドイッチなどの一部商品はインストアコードになっている場合があります。

ということで、インストアコードである以上、その後ろのコードを調べても一意な情報にはならないのです。
同じバーコードでも、ある店ではシャケの切り身だったり、ある店ではピーマン5個セットだったりするのです。


  チェックデジットが正しくない

チェックデジットの算出に関しては、元ブログで詳しく語られているのでここでは割愛しますが、 バーコードの最後の1桁は、それまでの12桁から計算で求められる値が入っています。 それによってバーコードが正しいかどうか、エラーチェックすることができるのです。

「0 230331 90230」に続く最後の値は「0」ではなく「2」でなくてはならないのです。


これはバーコードリーダーで読み取れない。


最後を2にすると読み取れる。

この2つのバーコードは、バーコード作成サイトに数字を打ち込んで作ったものですが、これを作ったことであることに気づきます。

元ブログにも
バーコード本体と、その下に付記されてる数字は、 同じ内容をスキャナ用と目視用に重複表記してるのです。
と書いてありますし、普通はそうなんです。

でも、問題のバーコード、実はバーコード本体と下の数字が一致していないのです。


上が件のオリジナル。
下が数字から作ったバーコード。
前半はほぼ同じ、後半は一致していない。

では、このバーコード、本当はどんな数字なのか、その数字と0230331902300との差分に、何か意味があるのでは? と思い、このバーコードの数値化を試みました。

そもそも、チェックデジットが壊れているので、スマホなどのバーコードリーダーでは読みだせないのです。
ここは手作業で数値化…ところが…


  おぬし、バーコードですらないのか

まず、先頭、中央、末尾に細い2本線の他に、26本の棒があり、2本で1つの数字を表しています。
特に後半の一致しない部分は数字に直すと何なのか…と思ったら数字に直せないのです。



JANコードの数字には2本で1つの数字を表すと書きましたが、細い2本線は、先頭、中央、末尾にしか使われないのです。 しかし、後半は細い線が連続しています。
また、最後の2本線の前に広い空白ができることはないのです。
つまり、このバーコードらしきものは、チェックデジットだけでなく、データ部分もバーコードの体をなしていないのです。

インストアコードの場合、「02」は生鮮食料品に当てれらるそうです。 また、チェックデジットを除く最後の数文字は(絶対的な決まりではないのですが)商品の金額が入ることが多いそうです。 「0230」つまり230円は、生鮮食料品に振られる金額として妥当な値に思えます。

このことから、私が考えるに、230円の生鮮食料品のバーコードを元にしたけど、ちょっと数字やバーコードを壊して、 元の製品が分からなかったり、バーコードリーダーで読み取れないようにしよう、としたとしか思えないのです。

普通に考えて、TESLAKITEのアンチバーコードならまだしも、1つの商品のデザインとして作られたバーコードを解析しようなんて、 おそらくこの世で2人ぐらいしかいないのに、わざわざそこに謎を埋め込むことはないと思うのです。

ねぇ、ジフさん。どう思います?w


  後日談

という記事を書き上げて、ジフさんへご連絡差し上げたのですが、実はジフさんが当時ブログを書いた後に、 高橋かしこさんご本人にお尋ねしたそうで、あのバーコードはイナガキさんが作られたダミーとのこと。

ということで、この件は一件落着(していた)。…ということなのですが、そのジフさんと私のやり取りが、かしこさんに見つかってしまい、引用リツイートまでされてしまうことに…w

ところで、自分で書いていて何なのですが、こういう記事って(ジフさんや私以外は)読んでて面白いのだろうか…。
是非興味を持った方は、スーパーのバーコードでインストアコードを探して、値段とバーコードを見比べたり、割引品と定価のバーコードを見比べたりしてください。(そっち?)
そして、一緒に買い物しているパートナーに「なに?肉食べたいの?」と誤解されてくださいw




Copyright © 2025 higumi.com
Powered by Ruby 2.6.10