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

99b72ba4c7dd4da957edb3e619a6d71f?s=47 MakKi
October 05, 2018

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

99b72ba4c7dd4da957edb3e619a6d71f?s=128

MakKi

October 05, 2018
Tweet

Transcript

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

  2. 自己紹介 牧内大輔 Twitter: @makki_d GitHub: makiuchi-d 学生時代: 動画編集関連のフリーソフト 就職してから: ブラウザゲームの開発(モバゲー・GREE)

    EMLauncher(デバッグアプリ配布ツール) 同期対戦通信基盤(Unity・Websocket・Go)
  3. 最近の趣味 ZXingをGo言語に移植 • ZXing (zebra crossing) ◦ https://github.com/zxing/zxing ◦ マルチフォーマットバーコードリーダー

    ▪ QRコードのような2次元コードもサポート ◦ Java製 ◦ AndroidのQRコードリーダーとして広く利用されている • gozxing ◦ https://gitub.com/makiuchi-d/gozxing ◦ Pure-Go実装
  4. QRコードに詳しくなった Before↓ After→

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

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

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

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

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

  10. バーコードの規格について 世の中にはたくさんの規格がある • 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
  11. EAN-13の構造 • シンボルキャラクタ ◦ バー7本分の幅 ◦ 1個1桁の数値 ◦ 12個 •

    ガードパターン ◦ 固定パターン ◦ 長いやつ ▪ 長くなってないこともある
  12. シンボルキャラクタ表 • 30種類のパターン ◦ AとBは左半分用 ◦ Cは右半分用 数値 セットA セットB

    セットC 0 1 2 3 4 5 6 7 8 9
  13. シンボルキャラクタ表 • 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
  14. さっそく 読んでみよう

  15. 読んでみよう A9 数値 セットA セットB セットC 0 1 2 3

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

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

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

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

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

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

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

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

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

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

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

    4 5 6 7 8 9
  27. 先頭の1桁は? 左半分にはAとBが混ざっていました A9B0B1A2A3B4-123457

  28. 先頭の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
  29. 先頭の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
  30. これであなたもバーコードリーダー! 5-901234-123457

  31. 今日お話した内容は…… • KLab Tech Book Vol.3 に掲載 • 技術書典5にて頒布 ◦

    10/8 ◦ 池袋サンシャインシティ • 電子版も無料配布予定 KLabGames Tech Blogをチェック! http://klabgames.tech.blog.jp.klab.com/