Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
20260529_第34回KyotoLT_競馬ライフをもっと快適に~紙馬券を読み取るアプリを作...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Minaho Chiyoda
June 01, 2026
57
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
20260529_第34回KyotoLT_競馬ライフをもっと快適に~紙馬券を読み取るアプリを作った話~
Minaho Chiyoda
June 01, 2026
More Decks by Minaho Chiyoda
See All by Minaho Chiyoda
20260527_たまり場ないと_MyPhotographyLife
chiyoda
0
7
Featured
See All Featured
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
820
Building Adaptive Systems
keathley
44
3.2k
Embracing the Ebb and Flow
colly
88
5.2k
The agentic SEO stack - context over prompts
schlessera
0
910
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
470
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
430
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
510
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Visualization
eitanlees
152
17k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
930
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Transcript
競馬ライフをもっと快適に 紙馬券を読み取るアプリを作った話 株式会社シーズ 千代田 美奈歩
自己紹介 / Profile 株式会社シーズ システム開発事業部 千代⽥ 美奈歩 2023年入社 • PHPやTypescriptでの開発がメイン •
工業高校(情報科)→大学(情報科学部)→現在 趣味は競馬(歴5年。ウマ娘きっかけでハマりました。最近は推し活 メインです。)他にはカメラやボドゲなど
個人開発したい 🤔
自分の趣味に関連したものなら モチベ続きそう 💡
アプリ作った 🐎keiba-record というアプリ • 購入した馬券の買い方や結果を保存して一覧を見 るだけのアプリ • 一点買いはもちろん、複数選んだ買い方にも対応 • AWS
AmplifyでホスティングしてNext.jsで開発 結構満足のいく出来にはなった https://main.d37b2og1mnqk6y.amplifyapp.com/
(点数が増えると) 入力が面倒くさい !
なぜ面倒か 理由その1 入力が必要な項目が多い • 日付 • レース情報(開催場・レース番号) • 式別(単勝・3連複など) •
1〜18までの馬番 理由その2 外れた馬券をわざわざ見返したくない
解決策 ⾺券の写真を読み込んで⾃動⼊⼒
アイデア その①:OCRで全部読む ❌精度が不安 ❌実装コスト高 →採用 その②:QRコードを読む ⭕購入情報が入っている ⭕実装がシンプル
JRA公式「馬券メモリアル」 JRAが提供している馬券データ保存サービス スマートフォンで、思い出として⾺券のデジタル画像を 残す機能。 購⼊した内容をデータではなく画像に 作りたい機能との差別化
実機デモ
仕組み①:QRコード • 馬券に(必ず)印刷されているQRコードに購入データが載っている ◦ これを読み取って各入力フォームに自動的に入力していく • QRコードの数列を解析されている方がいたのでそれを参考に ◦ https://ys223.blogspot.com/2019/07/jra.html
仕組み②:OCRの利用 • QRコードには含まれていない情報がある → 開催月日 • Amazon Textractを利用 ◦ テキストなどをあらゆるドキュメントから自動的に抽出するサービス
• 特定のパターンにマッチした場合に読めた文字列を月日として判定 ◦ {数字1~2桁}{文字}{数字1~2桁}{文字} WINS A 1A29B 3232002281748 「1A29B」の部分がマッチするので 1月29日として入力
課題①:全ての馬券に対応できていない 未対応の式別‧買い⽅ • ながし ◦ ⾺連‧ワイド‧枠連‧3連複軸2頭 など... • フォーメーション ◦
3連単以外の全て • ボックス さらにQRコードの解析を進める
課題②:QRコードの問題 • 読み取りに失敗し、うまく解析できない場合がある • そもそもQRコードが映っていない・汚れている場合 は読み取りできない QRが読めないケースへの対応として Textract活⽤の幅を広げたい
開発した感想 • ほぼバイブコーディングで対応したおかげで短期間での開発ができた ◦ アプリ開発は実質5日くらい • 自分が欲しいシステムは開発のモチベになる • 入力へのハードルがとても下がった •
検証用の紙馬券を集めるのが大変 ◦ 今回の開発の中で一番大変だった ◦ 普段買わない買い方もあるので検証にお金がかかる
良き競馬ライフを ! Fin.
構成図
QRコードの形式 QR: 1 08 000 26 03 02 07 0
<メタ情報27文字> 1 5 08 12 00005 <パディング> 位置: 0 1-2 3-5 6-7 8-9 10-11 12-13 14 15-41 42 43-44 45-46 47-51 | 位置 (0-indexed) | 内容 | 例 | | --- | --- | --- | | 0 | 先頭の 1 桁(用途不明、可変) | `1` | | 1〜2 | 開催場コード | `08`=京都 | | 3〜5 | フィラー `000`(代替競馬は `002`) | `000` | | 6〜7 | 年(西暦下2桁) | `26`=2026年 | | 8〜9 | 開催回 | `03` | | 10〜11 | 開催日 | `02` | | 12〜13 | レース番号 | `07`=7R | | 14 | 券種 | `0`=通常 | | 15〜41 | 通番・発券所・機械番号などのメタ情報( 27文字) | 略 | | 42 | 式別コード | `5`=馬連 | | 43〜 | 式別ごとの投票内容(馬番・金額など) | `0812 00005` |
Amazon Textractの料金 • 今回利用したAPIはDetect Document Text API ◦ 最初の100万ページまでUSD 1.50
• 無料利用枠あり ◦ 1000ページ/月 まで ◦ 個人利用ならほぼ無料
Q&A • なぜ月日データが含まれていないのか ◦ (その場での回答)年月日を指定して開催が決まっているわけではなく、何月の何 週の土日にやるのかしか決まっていないので、開催日を含められない ◦ (理由)レース条件や重賞(G1など)の配置は「⚪月⚪日」ではなく「⚪回⚪場⚪ 日目」で組まれている。これは天候や災害、その他の理由で開催日が変更になっ ても管理しやすくなる。