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
arashigaoka
May 11, 2021
Programming
96
0
Share
棋譜管理アプリとデータモデリング
将棋の棋譜を管理するアプリ
https://kifoo.app
arashigaoka
May 11, 2021
Other Decks in Programming
See All in Programming
AI-DLC Deep Dive
yuukiyo
9
4.8k
TiDBのアーキテクチャから学ぶ分散システム入門 〜MySQL互換のNewSQLは何を解決するのか〜 / tidb-architecture-study
dznbk
1
190
煩雑なSkills管理をSoC(関心の分離)により解決する――関心を分離し、プロンプトを部品として育てるためのOSSを作った話 / Solving Complex Skills Management Through SoC (Separation of Concerns)
nrslib
4
1k
tRPCの概要と少しだけパフォーマンス
misoton665
2
240
Swift Concurrency Type System
inamiy
1
550
Surviving Black Friday: 329 billion requests with Falcon!
ioquatix
0
830
レガシーPHP転生 〜父がドメインエキスパートだったのでDDD+Claude Codeでチート開発します〜
panda_program
0
1.1k
How We Benchmarked Quarkus: Patterns and anti-patterns
hollycummins
1
160
GoogleCloudとterraform完全に理解した
terisuke
1
160
PicoRuby for IoT: Connecting to the Cloud with MQTT
yuuu
2
660
Back to the roots of date
jinroq
0
450
ハーネスエンジニアリングにどう向き合うか 〜ルールファイルを超えて開発プロセスを設計する〜 / How to approach harness engineering
rkaga
24
14k
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.4k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.4k
A Tale of Four Properties
chriscoyier
163
24k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.2k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
210
Navigating Weather and Climate Data
rabernat
0
170
Designing for Performance
lara
611
70k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.3k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Building Applications with DynamoDB
mza
96
7k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.1k
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