next up previous contents
Next: 書籍の ISBN コード Up: 身近なコード Previous: 身近なコード

コンビニやスーパーの値札についているバーコード

一口にバーコードといっても, 実はいろいろな形式があるが, ここでは, JAN規格というものを紹介しよう.

JAN規格のバーコードは, お菓子のパッケージや, いろいろな商品のパッケージ に印刷されているので, 日常の生活の中で目にする機会も多いと思うが, このバーコードは, 白黒の縦縞模様と縞模様の下に付いている13桁(あるいは9桁)の数字から成る. 数字は商品のデータを表す12桁(全9桁の場合は8桁)に誤読検出用の1桁を加えて作られたもので, 縞模様はその数字をある決まった方法で黒線と空白の列に変換して機械に読み取れるようにしたものである. したがって, 当然のことながら, バーコードの表すデータの本体は13桁の数字の方なのだが, 数字を認識する機械を造るよりは, 白黒の縞々のパターンを読み取る機械を造る方がうんと簡単なので, このような縞模様に数字を変換して機械に読み取らせているわけである.

ここで, 実際にネピアのティッシュボックスについているバーコードを見てみることにしよう。

13桁の数字の各桁の意味は次のようになっている.

49 01121 11620 4
メーカー 商品 誤り検出用

さて, 誤りチェック用の13桁目は, 12桁目までの数字からあるアルゴリズムによって決まるのだが, 13桁の数字を左から順に, $x_1, x_2, x_3, \dots, , x_{12}, x_{13}$ と文字で表すことにすると, 13桁目の数字x13の計算法は次の式で与えられる.

\begin{displaymath}x_{13}=-(x_1+x_3+\cdots +x_{11})-3(x_2+x_4+\cdots +x_{12}) \mod{10}\end{displaymath}

ここで, 右辺についている$\mod{10}$は, 右辺の式の計算結果を10で割った余りとして左辺を与える, ということを意味する.

上のネピアの例で確かめてみると,

\begin{displaymath}-(4+0+1+1+1+2)-3(9+1+2+1+6+0)=-66\equiv 4 \mod{10}\end{displaymath}

となって, 確かにそうなっている.

ここで, 読み取り機が誤って1桁読み間違えたとしよう. 例えば上のネピアの4桁目を誤って0と読んでしまったとすると,

\begin{displaymath}-(4+0+1+1+1+2)-3(9+0+2+1+6+0)=-63\equiv 7 \mod{10}\end{displaymath}

となって,

\begin{displaymath}x_{13}=-(x_1+x_3+\cdots +x_{11})-3(x_2+x_4+\cdots +x_{12}) \mod{10}\end{displaymath}

を満たさないから, 誤読が起きたことが判明するわけである.

練習 4.1   身近にあるものについているバーコードで確認してみましょう.

参考 4.2   バーコードについてもっと知りたい人は, バーコードホームページ(http://www.barcode.co.jp/)を見てみよう.



Mitsuru Kawazoe
2001-11-14