Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
バーコードリーダーになろう!
Search
MakKi
October 05, 2018
Technology
0
200
バーコードリーダーになろう!
MakKi
October 05, 2018
Tweet
Share
More Decks by MakKi
See All by MakKi
標準ライブラリの動向とイテレータのパフォーマンス
makki_d
3
520
range over funcのエラー処理
makki_d
1
1.3k
GoとテストとインプロセスDB
makki_d
3
490
君は古の言語M4を知っているか (LT)
makki_d
0
320
型パラメータが使えるようになったのでLINQを実装してみた
makki_d
2
1.3k
mallocしただけでメモリが確保できるって本当ですか?
makki_d
0
190
ホットリロードツールの作り方
makki_d
0
1k
JavaプログラムをGoに移植するためのテクニック――継承と例外
makki_d
1
1.6k
JavaプログラムをGoに移植するためのテクニック――継承と例外
makki_d
4
4k
Other Decks in Technology
See All in Technology
AWS Lambdaと歩んだ“サーバーレス”と今後 #lambda_10years
yoshidashingo
1
170
スクラムチームを立ち上げる〜チーム開発で得られたもの・得られなかったもの〜
ohnoeight
2
350
Can We Measure Developer Productivity?
ewolff
1
150
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
380
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
0
110
障害対応指揮の意思決定と情報共有における価値観 / Waroom Meetup #2
arthur1
5
470
スクラム成熟度セルフチェックツールを作って得た学びとその活用法
coincheck_recruit
1
140
適材適所の技術選定 〜GraphQL・REST API・tRPC〜 / Optimal Technology Selection
kakehashi
1
170
[CV勉強会@関東 ECCV2024 読み会] オンラインマッピング x トラッキング MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping (Chen+, ECCV24)
abemii
0
220
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
12k
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
160
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
33
2.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
We Have a Design System, Now What?
morganepeng
50
7.2k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
For a Future-Friendly Web
brad_frost
175
9.4k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
Side Projects
sachag
452
42k
Building an army of robots
kneath
302
43k
Designing for humans not robots
tammielis
250
25k
Writing Fast Ruby
sferik
627
61k
How to Think Like a Performance Engineer
csswizardry
20
1.1k
Transcript
バーコードリーダーに なろう! KLab株式会社 EM部 牧内大輔
自己紹介 牧内大輔 Twitter: @makki_d GitHub: makiuchi-d 学生時代: 動画編集関連のフリーソフト 就職してから: ブラウザゲームの開発(モバゲー・GREE)
EMLauncher(デバッグアプリ配布ツール) 同期対戦通信基盤(Unity・Websocket・Go)
最近の趣味 ZXingをGo言語に移植 • ZXing (zebra crossing) ◦ https://github.com/zxing/zxing ◦ マルチフォーマットバーコードリーダー
▪ QRコードのような2次元コードもサポート ◦ Java製 ◦ AndroidのQRコードリーダーとして広く利用されている • gozxing ◦ https://gitub.com/makiuchi-d/gozxing ◦ Pure-Go実装
QRコードに詳しくなった Before↓ After→
せっかくだから みんなにも 詳しくなってほしい
でもQRコードは 覚えることが多くて さすがに難しい
バーコードくらいなら 単純でわかりやすい
今日はバーコードを 読めるようになって もらおう
バーコードリーダーに なろう!
バーコードの規格について 世の中にはたくさんの規格がある • 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
EAN-13の構造 • シンボルキャラクタ ◦ バー7本分の幅 ◦ 1個1桁の数値 ◦ 12個 •
ガードパターン ◦ 固定パターン ◦ 長いやつ ▪ 長くなってないこともある
シンボルキャラクタ表 • 30種類のパターン ◦ AとBは左半分用 ◦ Cは右半分用 数値 セットA セットB
セットC 0 1 2 3 4 5 6 7 8 9
シンボルキャラクタ表 • 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
さっそく 読んでみよう
読んでみよう A9 数値 セットA セットB セットC 0 1 2 3
4 5 6 7 8 9
読んでみよう A9B0 数値 セットA セットB セットC 0 1 2 3
4 5 6 7 8 9
読んでみよう A9B0B1 数値 セットA セットB セットC 0 1 2 3
4 5 6 7 8 9
読んでみよう A9B0B1A2 数値 セットA セットB セットC 0 1 2 3
4 5 6 7 8 9
読んでみよう A9B0B1A2A3 数値 セットA セットB セットC 0 1 2 3
4 5 6 7 8 9
読んでみよう A9B0B1A2A3B4 数値 セットA セットB セットC 0 1 2 3
4 5 6 7 8 9
読んでみよう A9B0B1A2A3B4-1 数値 セットA セットB セットC 0 1 2 3
4 5 6 7 8 9
読んでみよう A9B0B1A2A3B4-12 数値 セットA セットB セットC 0 1 2 3
4 5 6 7 8 9
読んでみよう A9B0B1A2A3B4-123 数値 セットA セットB セットC 0 1 2 3
4 5 6 7 8 9
読んでみよう A9B0B1A2A3B4-1234 数値 セットA セットB セットC 0 1 2 3
4 5 6 7 8 9
読んでみよう A9B0B1A2A3B4-12345 数値 セットA セットB セットC 0 1 2 3
4 5 6 7 8 9
読んでみよう A9B0B1A2A3B4-123457 数値 セットA セットB セットC 0 1 2 3
4 5 6 7 8 9
先頭の1桁は? 左半分にはAとBが混ざっていました A9B0B1A2A3B4-123457
先頭の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
先頭の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
これであなたもバーコードリーダー! 5-901234-123457
今日お話した内容は…… • KLab Tech Book Vol.3 に掲載 • 技術書典5にて頒布 ◦
10/8 ◦ 池袋サンシャインシティ • 電子版も無料配布予定 KLabGames Tech Blogをチェック! http://klabgames.tech.blog.jp.klab.com/