What's New
- 2007/1/1 から書籍のバーコードが ISBN-13 (GS1) に以降 (2005/5/31の日記 教育は参考資料)
- 2004 年の 8/30、 9/4、 11/8、 11/13、 11/14、 11/17 の日記から作成。
1. バーコードリーダー
秋葉原の若松通商でフリーテックの USB 接続 バーコードリーダー FT-005USB を購入(税込み価格 15,540 円)。 このバーコードリーダーは PS/2 接続版(10,290円) が基本で、 USB 版はコードの中腹に PS/2 → USB 変換器が入っている。 (PS/2 接続版) + (安い PS/2→USB 変換器) の方がお安くてお得かもしれないが、 コードがごちゃごちゃするのが嫌なので USB 版を選択。
バーコードリーダーは基本的には USB 接続されたキーボードとして認識され、 バーコードを読み込むと一連のキーボード入力に変換される。 設定の変更は附属のマニュアルに書かれた特殊なバーコードを読み込むことで可能になる。
- EAN(JAN)、UPC、CODE39、CODE128 など 1次元バーコードのほとんどが読める(と思われる)。 読み込み可能なバーコード体系は個別に ON / OFF できる(ようだ)。
- バーコードの最後のセパレーターを選択可能。 デフォルトは「Enterキー」だが、「SPACEキー」、「TABキー」、「なし」等が選択できる。
- 起動音、読み込み成功音を出すかどうかを選択できる。 音のピッチも選択できる。
ちなみに FT-005USB の EAN-13 は 91020010060930
。
バーコードリーダーを売っているオンラインショップ
2. バーコードの読み方
EAN-13/JAN-13
国内に流通するほとんどの商品に貼られているバーコードは EAN (European Article Number) と呼ばれる (日本では JAN (Japan Article Number) と呼ばれる)。 バーコードの下に 13 桁の数字が書いてあり、 49 か 45 で始まっていれば JAN-13 だと思ってよい (参考)。
EAN の基本は 2 桁の国コード、5桁のメーカーコード、5桁のアイテムコード、1桁のチェックデジットからなる。 各国に Article Number のメーカーコードを発効してくれる組織があり、 会社(組織) 毎にメーカーコードを取得する。 アイテムコードは組織内で自由に付けてもかまわない。 日本に割り振られた国コードは 49 と 45 となっている (代表的な国コード)。 EAN のチェックデジットは EAN コードが正しく読み取れているかどうかを確認するために存在する。 チェックデジットを除く 12 桁に対して、 以下のような計算を行うことで求めることができる。
- まず 12桁を奇数桁と偶数桁に分ける(最も右側にある桁は奇数桁と想定している)
- 奇数桁の和を求め、それを A とする。
- 偶数桁の和を求め、それを B とする。
(A * 3 + B) % 10
を求め、それを C とする (%
は剰余演算)(10 - C) % 10
を計算する。これがチェックデジットとなる。
例えば 451915700189?
という
最後のチェックデジットが分からない EAN コードがあった場合、
以下のように計算して 2 が得られる。
5 9 5 0 1 9 ← 奇数桁(和は29) 451915700189 → (29 * 3 + 21) % 10 = 8 → (10 - 8) % 10 = 2 4 1 1 7 0 8 ← 偶数桁(和は21)
P.S.
2005 年からは北米も 8桁の UPC から 13桁の EAN と同仕様に切り替わる。
それに伴い EAN の名称が GS1 に変更になるそうだ。
JAN は GS1 Japan ということになる。
書籍の EAN コード
書籍には ISBN コードと呼ばれる 10 桁のコード体系が、
EAN が制定される前から存在していた。
そこで EAN-13 では書籍だけを特別扱いし、
先頭が 978
で始まる EAN-13 コードの中に ISBN コードをほうり込んでいる。
先頭が 978
で始まる EAN-13 は、
続く 9 桁の数字が ISBN 部で、
最後の1桁がチェックデジットになる。
チェックデジットの計算方法は上と同じ。
ISBN は 10 桁なのでこのままでは1桁足らないのだが、
ISBN の最後の1桁はチェックサムなので、
他の9桁から再計算することができる。
ISBN をあらわす EAN-13 では ISBN 側のチェックサムは省略して記録する。
今、
ISBN 部の 9桁が
N1N2N3N4N5N6N7N8N9
だとすると、10桁目のチェックサムは以下の計算式によって求まる。
(N1 * 1 + N2 * 2 + N3 * 3 + N4 * 4 + N5 * 5 + N6 * 6 + N7 * 7 + N8 * 8 + N9 * 9) % 11
ただし、上の値が 10 になった場合は "X"
と読み替える。
EAN-13 から ISBN の変換を Perl で書くと、 以下のような関数になる。
sub tran_jan13_into_isbn { my ($code) = @_; my ($isbn) = ($code =~ /^978(\d{9})\d$/); if ($isbn) { my ($n1,$n2,$n3,$n4,$n5,$n6,$n7,$n8,$n9) = ($isbn =~/(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)/); my $sum = 1*$n1+2*$n2+3*$n3+4*$n4+5*$n5+6*$n6+7*$n7+8*$n8+9*$n9; my $rem = $sum % 11; if ($rem == 10) { return sprintf('%9dX', $isbn); } else { return sprintf('%9d%1d', $isbn, $rem); } } return 0; }
P.S.
2007年から書籍の 10桁の ISBN-10 は廃止になり、
GS1 (旧 EAN-13) の中に ISBN を閉じ込めた ISBN-13 が開始される。
上に述べたように計算方法は EAN-13 と同じで、
978
が先頭に来て
続く 9桁が書籍コードになる。
3. AWS 3.0 / ECS 4.0 を使った商品検索
(ここはぼちぼち書いていきます)
(結果が返ってきません)
お手数ですが、ご確認頂ければ幸甚です。
近日中に修正します。
恐れ入りますが、ここ1か月ほど、うまく動作していないようです。(以前と同様、結果が返ってきません。。。)
お手数ですが、ご確認頂ければ幸甚です。
やはり、ここ1か月ほど、うまく動作していないようです。
厚かまいお願いで恐れ入りますが、またご確認頂ければ幸甚です。