バーコードの仕組み:UPC・EANと隠れたチェックデジット

あの平行に並んだ黒い線は一見でたらめに見えるが、実は公開された標準規格にもとづいて、検証可能な特定の数字をコード化している。

バーコードがコード化しているのは、実は数字だけ

バー自体は商品名や価格を持っているわけではない。バーコードがコード化しているのは数字コードであり、店舗のシステムがそれを自社のデータベースで照合することで、実際の価格や商品説明が表示される仕組みだ。

UPCとEANの違いは、主に地域による違い

UPC-A(12桁)は歴史的に米国とカナダで標準として使われてきた一方、EAN-13(13桁)は世界のそれ以外の大半の地域で使われている。今のスキャナーはほとんど両方に対応しており、UPCコードの先頭にゼロを1桁足せばEANコードとして読み取ることもできる。

番号は自由に選べるものではなく、GS1が割り当てている

メーカーは国際標準化団体であるGS1に申請して企業プレフィックスを取得し、残りの桁を自社の各商品に割り振っていく。これにより、世界中の店舗の棚で番号が重複することがない仕組みになっている。

最後の1桁は組み込みのチェックデジット

この数字は他の桁から決まった計算式によって算出され、コードの末尾に付け加えられる。これにより、スキャナー(あるいは手入力するレジ係)が1桁の読み取りミスや入力ミスに気づくことができ、まったく違う商品として登録されてしまう事態を防いでいる。

QRコードとは別物

従来型の1次元バーコードは、比較的短い1つの数字をコード化するだけで、バーに沿って一方向にスキャンする必要がある。一方、2次元のQRコードははるかに多くのデータを保存でき、どの角度からでも読み取れる。だからこそQRコードはリンクやより大きな情報の受け渡しに使われている。

スキャナーは画像ではなく、反射した光を読み取っている

スキャナーはバーコードに光を当て、どれだけの光が跳ね返ってくるかを測定する。バーと隙間の幅の違いによって光の反射の仕方が変わり、それをもとにスキャナーがコード化された数字を電子的に復元している。

バーコードは価格を保存していない

バーコードは識別用の数字をコード化しているだけなので、実際に請求される価格はバーコード自体ではなく、スキャンした瞬間に店舗のPOSシステムから取得される。棚のプライスカードとレジで表示される価格がまれに食い違うのは、システムの更新が追いついていない場合があるからだ。

チェックデジットが見た目以上に重要な理由

にじんだり印刷が乱れたりしたバーが1本あるだけで、スキャナーが1桁を読み違えることがある。チェックデジットがなければ、このミスはまったく別の商品として気づかれずにレジを通ってしまいかねない。チェックデジットがあれば、計算が単純に合わなくなり、スキャナーは推測せずに読み取りを拒否する。

よくある質問

2つの異なる商品が同じバーコードを共有することはあり得るのか

原則としてはあり得ない。GS1のプレフィックスは各企業のコードを一意に保つためのものだからだ。ただし実際には、特に非常に小規模な商品や自主出版の商品などで、重複したコードや使い回されたコードがまれに見つかることがある。だからこそ大手小売店は、カタログに追加する前に商品を確認しているのだ。

なぜ同じバーコードでもパッケージによって大きさが違って見えるのか

重要なのは印刷サイズではなく、バーがコード化しているパターンそのものだ。そのため、バーコードは対応する範囲内で拡大・縮小されて異なるパッケージに合わせられることが多いが、それでも表しているのはまったく同じ数字である。