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
280
バーコードリーダーになろう!
MakKi
October 05, 2018
Tweet
Share
More Decks by MakKi
See All by MakKi
SQLだけでマイグレーションしたい!
makki_d
0
1.2k
Recap: An Operating System in Go
makki_d
1
110
XSLTで作るBrainfuck処理系
makki_d
0
290
眼鏡と視力についての誤解を解く
makki_d
0
150
標準ライブラリの動向とイテレータのパフォーマンス
makki_d
3
740
range over funcのエラー処理
makki_d
1
1.8k
GoとテストとインプロセスDB
makki_d
3
660
君は古の言語M4を知っているか (LT)
makki_d
0
500
型パラメータが使えるようになったのでLINQを実装してみた
makki_d
2
1.5k
Other Decks in Technology
See All in Technology
AR Guitar: Expanding Guitar Performance from a Live House to Urban Space
ekito_station
0
250
小さく、早く、可能性を多産する。生成AIプロジェクト / prAIrie-dog
visional_engineering_and_design
0
110
AWSの新機能をフル活用した「re:Inventエージェント」開発秘話
minorun365
2
470
AI時代のワークフロー設計〜Durable Functions / Step Functions / Strands Agents を添えて〜
yakumo
3
2.3k
普段使ってるClaude Skillsの紹介(by Notebooklm)
zerebom
8
2.3k
Snowflake導入から1年、LayerXのデータ活用の現在 / One Year into Snowflake: How LayerX Uses Data Today
civitaspo
0
2.5k
Cloud WAN MCP Serverから考える新しいネットワーク運用 / 20251228 Masaki Okuda
shift_evolve
PRO
0
110
[Data & AI Summit '25 Fall] AIでデータ活用を進化させる!Google Cloudで作るデータ活用の未来
kirimaru
0
4k
半年で、AIゼロ知識から AI中心開発組織の変革担当に至るまで
rfdnxbro
0
150
Claude Skillsの テスト業務での活用事例
moritamasami
1
110
"人"が頑張るAI駆動開発
yokomachi
1
620
[2025-12-12]あの日僕が見た胡蝶の夢 〜人の夢は終わらねェ AIによるパフォーマンスチューニングのすゝめ〜
tosite
0
190
Featured
See All Featured
Leo the Paperboy
mayatellez
0
1.3k
Rails Girls Zürich Keynote
gr2m
95
14k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
82
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Tell your own story through comics
letsgokoyo
0
770
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
32
My Coaching Mixtape
mlcsv
0
13
Designing for Timeless Needs
cassininazir
0
96
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.3k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
31
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
0
31
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/