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
0
91
棋譜管理アプリとデータモデリング
将棋の棋譜を管理するアプリ
https://kifoo.app
arashigaoka
May 11, 2021
Tweet
Share
Other Decks in Programming
See All in Programming
Flutter로 Gemini와 MCP를 활용한 Agentic App 만들기 - 박제창 2025 I/O Extended Seoul
itsmedreamwalker
0
150
Honoアップデート 2025年夏
yusukebe
1
870
UbieのAIパートナーを支えるコンテキストエンジニアリング実践
syucream
2
750
あのころの iPod を どうにか再生させたい
orumin
2
2.5k
Claude Codeで実装以外の開発フロー、どこまで自動化できるか?失敗と成功
ndadayo
2
1.6k
TDD 実践ミニトーク
contour_gara
1
210
TanStack DB ~状態管理の新しい考え方~
bmthd
2
350
自作OSでDOOMを動かしてみた
zakki0925224
1
1.4k
コーディングは技術者(エンジニア)の嗜みでして / Learning the System Development Mindset from Rock Lady
mackey0225
2
600
Portapad紹介プレゼンテーション
gotoumakakeru
1
130
Nuances on Kubernetes - RubyConf Taiwan 2025
envek
0
200
【第4回】関東Kaggler会「Kaggleは執筆に役立つ」
mipypf
0
910
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
223
9.9k
Building an army of robots
kneath
306
46k
GraphQLとの向き合い方2022年版
quramy
49
14k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Designing for Performance
lara
610
69k
A Modern Web Designer's Workflow
chriscoyier
695
190k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
What's in a price? How to price your products and services
michaelherold
246
12k
Building Applications with DynamoDB
mza
96
6.6k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
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