Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
バーコードリーダーになろう!
MakKi
October 05, 2018
Technology
0
81
バーコードリーダーになろう!
MakKi
October 05, 2018
Tweet
Share
More Decks by MakKi
See All by MakKi
君は古の言語M4を知っているか (LT)
makki_d
0
80
型パラメータが使えるようになったのでLINQを実装してみた
makki_d
2
740
mallocしただけでメモリが確保できるって本当ですか?
makki_d
0
66
ホットリロードツールの作り方
makki_d
0
520
JavaプログラムをGoに移植するためのテクニック――継承と例外
makki_d
1
1.2k
JavaプログラムをGoに移植するためのテクニック――継承と例外
makki_d
4
3.1k
mallocしただけでメモリが確保できるって本当ですか?
makki_d
4
510
パッケージ外から非公開フィールドを変更する方法.pdf
makki_d
0
210
とあるライブラリをGoに移植した結果……
makki_d
1
3.8k
Other Decks in Technology
See All in Technology
証明書って何だっけ? 〜AWSの中間CA移行に備える〜
minorun365
3
1.9k
propsのバケツリレー対策でGlobal_Stateを使うその前に
taro28
8
1.7k
ROS_Japan_UG_#49_LT
maeharakeisuke
0
190
CEXやDEXに依存しないブロックチェーン取引について考える
sbtechnight
0
310
デイリースクラムの”守破離”(日々をより楽しく有意義にするヒント)
m3hiro3
3
4.3k
20230121_データ分析系コミュニティ_サテライト企画
doradora09
0
340
Lyssa Adkins : Agilists Superpower and Challenge
kawaguti
PRO
1
160
成長が鈍化したチームを変えるためにやったこと / #RSGT2023
mongolyy
2
2.8k
plotlyで動くグラフを作る
kosshi
0
570
Pentesting Password Reset Functionality
anugrahsr
0
180
なぜ変化を起こすのが難しいのか? - 数年以上にわたって難しさに向き合い・考え取り組んできたこと / The reason why changing organization is so hard - What I thought and faced for more than several years
iwashi86
26
17k
2022年に起きたフロントエンドの変化
sakito
27
16k
Featured
See All Featured
Infographics Made Easy
chrislema
235
17k
Designing the Hi-DPI Web
ddemaree
273
32k
Atom: Resistance is Futile
akmur
256
24k
Documentation Writing (for coders)
carmenintech
51
2.9k
Agile that works and the tools we love
rasmusluckow
320
20k
How GitHub Uses GitHub to Build GitHub
holman
465
280k
The Language of Interfaces
destraynor
149
21k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
32
6.7k
The Brand Is Dead. Long Live the Brand.
mthomps
48
2.9k
Making Projects Easy
brettharned
102
4.8k
5 minutes of I Can Smell Your CMS
philhawksworth
198
18k
Support Driven Design
roundedbygravity
88
8.9k
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/