Slide 1

Slide 1 text

バーコードリーダーに なろう! KLab株式会社 EM部 牧内大輔

Slide 2

Slide 2 text

自己紹介 牧内大輔 Twitter: @makki_d GitHub: makiuchi-d 学生時代: 動画編集関連のフリーソフト 就職してから: ブラウザゲームの開発(モバゲー・GREE) EMLauncher(デバッグアプリ配布ツール) 同期対戦通信基盤(Unity・Websocket・Go)

Slide 3

Slide 3 text

最近の趣味 ZXingをGo言語に移植 ● ZXing (zebra crossing) ○ https://github.com/zxing/zxing ○ マルチフォーマットバーコードリーダー ■ QRコードのような2次元コードもサポート ○ Java製 ○ AndroidのQRコードリーダーとして広く利用されている ● gozxing ○ https://gitub.com/makiuchi-d/gozxing ○ Pure-Go実装

Slide 4

Slide 4 text

QRコードに詳しくなった Before↓ After→

Slide 5

Slide 5 text

せっかくだから みんなにも 詳しくなってほしい

Slide 6

Slide 6 text

でもQRコードは 覚えることが多くて さすがに難しい

Slide 7

Slide 7 text

バーコードくらいなら 単純でわかりやすい

Slide 8

Slide 8 text

今日はバーコードを 読めるようになって もらおう

Slide 9

Slide 9 text

バーコードリーダーに なろう!

Slide 10

Slide 10 text

バーコードの規格について 世の中にはたくさんの規格がある ● EAN-8/13、UPC-A/E、Code-39/93/128、ITF、RSS-14、…… 今日扱うバーコード: EAN-13 ● 商品を表すバーコード ○ レジで読み取るやつ ● 国際規格 ○ ISO/IEC 15420 ○ 日本ではJANとも呼ばれる ■ JIS-X-0507 画像出典: https://en.wikipedia.org/wiki/International_Article_Number

Slide 11

Slide 11 text

EAN-13の構造 ● シンボルキャラクタ ○ バー7本分の幅 ○ 1個1桁の数値 ○ 12個 ● ガードパターン ○ 固定パターン ○ 長いやつ ■ 長くなってないこともある

Slide 12

Slide 12 text

シンボルキャラクタ表 ● 30種類のパターン ○ AとBは左半分用 ○ Cは右半分用 数値 セットA セットB セットC 0 1 2 3 4 5 6 7 8 9

Slide 13

Slide 13 text

シンボルキャラクタ表 ● 30種類のパターン ○ AとBは左半分用 ○ Cは右半分用 実は10種類覚えればOK ● CはAの白黒反転 ● BはCの逆順 ● 比率だと覚えやすい 数値 セットA セットB セットC 0 3:2:1:1 1 2:2:2:1 2 2:1:2:2 3 1:4:1:1 4 1:1:3:2 5 1:2:3:1 6 1:1:1:4 7 1:3:1:2 8 1:2:1:3 9 3:1:1:2

Slide 14

Slide 14 text

さっそく 読んでみよう

Slide 15

Slide 15 text

読んでみよう A9 数値 セットA セットB セットC 0 1 2 3 4 5 6 7 8 9

Slide 16

Slide 16 text

読んでみよう A9B0 数値 セットA セットB セットC 0 1 2 3 4 5 6 7 8 9

Slide 17

Slide 17 text

読んでみよう A9B0B1 数値 セットA セットB セットC 0 1 2 3 4 5 6 7 8 9

Slide 18

Slide 18 text

読んでみよう A9B0B1A2 数値 セットA セットB セットC 0 1 2 3 4 5 6 7 8 9

Slide 19

Slide 19 text

読んでみよう A9B0B1A2A3 数値 セットA セットB セットC 0 1 2 3 4 5 6 7 8 9

Slide 20

Slide 20 text

読んでみよう A9B0B1A2A3B4 数値 セットA セットB セットC 0 1 2 3 4 5 6 7 8 9

Slide 21

Slide 21 text

読んでみよう A9B0B1A2A3B4-1 数値 セットA セットB セットC 0 1 2 3 4 5 6 7 8 9

Slide 22

Slide 22 text

読んでみよう A9B0B1A2A3B4-12 数値 セットA セットB セットC 0 1 2 3 4 5 6 7 8 9

Slide 23

Slide 23 text

読んでみよう A9B0B1A2A3B4-123 数値 セットA セットB セットC 0 1 2 3 4 5 6 7 8 9

Slide 24

Slide 24 text

読んでみよう A9B0B1A2A3B4-1234 数値 セットA セットB セットC 0 1 2 3 4 5 6 7 8 9

Slide 25

Slide 25 text

読んでみよう A9B0B1A2A3B4-12345 数値 セットA セットB セットC 0 1 2 3 4 5 6 7 8 9

Slide 26

Slide 26 text

読んでみよう A9B0B1A2A3B4-123457 数値 セットA セットB セットC 0 1 2 3 4 5 6 7 8 9

Slide 27

Slide 27 text

先頭の1桁は? 左半分にはAとBが混ざっていました A9B0B1A2A3B4-123457

Slide 28

Slide 28 text

先頭の1桁は? 左半分にはAとBが混ざっていました A9B0B1A2A3B4-123457 これを右の表に照らし合わせると ABBAAB → 5 0 A A A A A A 1 A A B A B B 2 A A B B A B 3 A A B B B A 4 A B A A B B 5 A B B A A B 6 A B B B A A 7 A B A B A B 8 A B A B B A 9 A B B A B A

Slide 29

Slide 29 text

先頭の1桁は? 左半分にはAとBが混ざっていました A9B0B1A2A3B4-123457 これを右の表に照らし合わせると ABBAAB → 5 3つに分けてAの位置に注目すると覚えやすい 0 A A A A A A 1 A A B A B B 2 A A B B A B 3 A A B B B A 4 A B A A B B 5 A B B A A B 6 A B B B A A 7 A B A B A B 8 A B A B B A 9 A B B A B A

Slide 30

Slide 30 text

これであなたもバーコードリーダー! 5-901234-123457

Slide 31

Slide 31 text

今日お話した内容は…… ● KLab Tech Book Vol.3 に掲載 ● 技術書典5にて頒布 ○ 10/8 ○ 池袋サンシャインシティ ● 電子版も無料配布予定 KLabGames Tech Blogをチェック! http://klabgames.tech.blog.jp.klab.com/