![]() |
![]() |
![]() |
![]() |
![]() |
平沢博物苑からのご指名 先日、平沢界隈の調べ物をしていたら、調べていた内容とは全く関係ないのですが 「平沢博物苑」から「ひ組」へ、ご指名をいただいているブログを発見しました。 博物苑顛末録 「棒の暗号 − 改訂復刻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 |