sunasunablog

sunasunablog

パソコン初心者のお話

バーコードの仕組み

僕は普段、支払いを忘れない様にするために公共料金の振り込み用紙を玄関にマグネットで貼り付けています。僕のその振り込み用紙にはバーコードがついているのですが、この前仕事に行く時にその振り込み用紙が目に入り、バーコードってどう言う風に原理で動作してるんだろうって疑問に感じたことがありました。なので今回は、バーコードが動作する仕組みについてまとめてみました!

世界のバーコード

日本のあらゆる商品についているバーコードですが、バーコードは日本以外に色んな国でも採用されています。大きく分けると2種類のバーコードが存在します。

  • UPC(Universal Product Code)
  • EAN(European Article Number)

UPCは北米で使われている規格で、対してEANはヨーロッパ使われている規格になります。ちなにみ日本のバーコードは「JAN(Japan Article Number)」と呼ばれていて、EANの中の1つです。(JANは日本国内だけでの呼び方らしいです。)

バーコードの中身

日本のバーコード(及びEANのバーコード)は標準なタイプだと13桁でコードが構成されています。

f:id:sunasunablog:20200425123344p:plain
バーコードのサンプル画像

最初の7桁は企業コードと言い、名前通り最初の7桁でどのメーカーの商品か識別します。ちなみにJANに登録されている日本の商品は、どれも最初の2桁は49か45に指定されています。(こちらは国コードと呼ばれ、日本を表しています。)

最初の2桁の意味

企業コードの最初の2か3桁を国コードと言い、EANを採用している各国を表しています。日本は本来49のみでしたが、1995年に45が追加されました。フランスは30~37、スウェーデンは73など、番号に対応した国が識別されています。

次の5桁は商品アイテムコードと言い、こちらも名前の通りその企業のどの商品かを識別するのに用いられています。

つまり最初の12桁でどの企業のどの商品であるかを一気に判別することができます。

13桁あるうちの最後の1桁はチェックデジットと呼ばれます。何をチェックするかと言うと、読み込んだ最初の12桁で特定した商品が正しい商品なのかを確認できます。このチェックデジットはモジュラス10/3ウェイトという方法を用いています。以下にその確認方法を紹介します。

チェックデジット

バーコードの13桁の数字を桁数によって分けて考えます。

  1. 桁が奇数の値と偶数の値をそれぞれ加算する(チェックデジットのみ除く)。
  2. 桁が偶数の合計値のみ更に3倍する。
  3. 奇数桁の和と3倍した偶数桁の和を加算する。
  4. 合計した値の1桁目の数字を10から引く。
  5. チェックデジットと等しくなる。
上記の例で言うと、、、

f:id:sunasunablog:20200425123344p:plain

上記に載せたのと同じバーコードを用意しました。この4902430752152の数値を以下の様に処理します。

13 12 11 10 9 8 7 6 5 4 3 2 1
4 9 0 2 4 3 0 7 5 2 1 5 2

チェックデジットを除いた奇数桁の数字の和を求める。

4 + 0 + 4 + 0 + 5 + 1 = 14


偶数桁の数字の和を求める。

9 + 2 + 3 + 7 + 2 + 5 = 28


偶数桁のみ3倍する。

28 * 3 = 84


これらの値を足す。

14 + 84 = 98


足した数字の1桁目を10から引く。

10 - 8 = 2


この様にしてチェックデジットと等しい結果を得ることができます。

読み取る仕組み

バーコードリーダーがバーコードにレーザーを当てて、反射した光を受光します。その光は白だと受光量が多く、黒だと受光量が少ないので、受光量の多さで波形ができます。その波形を変換して、バーコードの白と黒の線を読み取り、線の太さや間隔から先ほどの商品の数値を特定し、商品を識別しています。

このスキャンの時に、読み取りミスがあると最後にチェックデジットと数字が合わなくなるので、確認が取れると言う仕組みですね。

おしまい

今日は内容が急に理系チックになってしまいました。マークダウンでの図やグラフの書き方が勉強できたので、大変良かったです!ちなみに日本で最初に商品をバーコードで管理するシステムを本格採用したのはセブンイレブンらしいよ。むしろ、それまでのコンビニは全部手打ちだったのかな。なんだか時代に感じるねっ!ばいばい~。