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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
arashigaoka
May 11, 2021
Programming
0
93
棋譜管理アプリとデータモデリング
将棋の棋譜を管理するアプリ
https://kifoo.app
arashigaoka
May 11, 2021
Tweet
Share
Other Decks in Programming
See All in Programming
CSC307 Lecture 08
javiergs
PRO
0
660
Data-Centric Kaggle
isax1015
2
760
Grafana:建立系統全知視角的捷徑
blueswen
0
320
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
CSC307 Lecture 02
javiergs
PRO
1
770
CSC307 Lecture 05
javiergs
PRO
0
490
Vibe codingでおすすめの言語と開発手法
uyuki234
0
220
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.3k
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
510
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.3k
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
670
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
120
Featured
See All Featured
Designing for Performance
lara
610
70k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
New Earth Scene 8
popppiees
1
1.5k
What does AI have to do with Human Rights?
axbom
PRO
0
2k
HDC tutorial
michielstock
1
340
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
120
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
First, design no harm
axbom
PRO
2
1.1k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
89
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
54
Embracing the Ebb and Flow
colly
88
5k
Transcript
将棋の棋譜管理アプリを作る yuta.okumura
棋譜って何? 囲碁・将棋・チェスなどのボードゲームにおいて、互いの対局者が⾏ った⼿を順番に記⼊した記録を指す。by wikipedia 次ページに具体例
#KIF version=2.0 encoding=Shift_JIS #---- Kifu for iPhone V4.10 ---- 開始⽇時:2020/08/23
21:30:22 終了⽇時:2020/08/23 21:35:51 ⼿合割:平⼿ 先⼿:⽵下 後⼿:奥村 ⼿数---- 指⼿--------- 消費時間-- 1 7六歩(77) ( 0:02/00:00:02) 2 8四歩(83) ( 0:00/00:00:00) 3 7⼋⾶(28) ( 0:00/00:00:02) 4 8五歩(84) ( 0:00/00:00:00) ...
モチベーション リアルの⼤会で指した棋譜を⼊⼒したい ネットで指した棋譜を⼊⼒したい -> 複数端末で同期( スマホで⼊⼒して、PC で⾒る) 過去の対局を検索したい -> 局⾯検索
作ったもの https://kifoo.app
None
局⾯検索とは? ⾃分が特定の囲いや戦法を⽤いた棋譜の⼀覧を取得したい
None
データモデリングどうするかが難問
案 1. 1 局⾯を 1 ⽂字列で表す
None
None
メリット データの持ち⽅がシンプル デメリット 正規表現で検索するため、スケールするか⼼配( 多い⼈だと、インタ ーネットで対局したものだけで数万棋譜 * 100 とかある)
案 2. 1 局⾯を 1 テーブルで表す
None
None
メリット クエリがシンプルに書ける デメリット 冗⻑(1 回の指し⼿に対して 1 つの駒しか動かないので、ほとんど 同じ情報を重複して持たなくてはならない) ⾒た⽬がださい
案 3. 1 指し⼿を 1 テーブルで表す
None
None
メリット 保持すべきデータ量が少ない デメリット クエリを書くのが難しい パフォーマンスの⾼いクエリを書くのが難しい
結果 僕は SQL をシンプルに保つことを重視したため、案 2 を採⽤しまし た。 ただデータの持ち⽅が冗⻑な懸念が残っているので、 他の案が良い、またはこんな⽅法があるみたいなアイデアがあればぜ ひ教えていただきたいです!
twitter: https://twitter.com/showkittie