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
実践CRDT
Search
tamadeveloper
April 14, 2026
Programming
610
0
Share
実践CRDT
Core DataとCloudKitによるリッチテキスト同期モデルの構築
tamadeveloper
April 14, 2026
Other Decks in Programming
See All in Programming
2026年のソフトウェア開発を考える(2026/05版) / Software Engineering Scrum Fest Niigata 2026 Edition
twada
PRO
18
6.2k
ソフトウェア設計の結合バランス #phperkaigi
kajitack
0
160
リセットCSSを1行消したらアクセシビリティが向上した話
pvcresin
2
280
決定論 vs 確率論:Gemini 3 FlashとTF-IDFを組み合わせた「法規判定エンジン」の構築
shukob
0
140
書籍「ユーザーストーリーマッピング」が私のバイブル
asumikam
4
450
The Less-Told Story of Socket Timeouts
coe401_
3
820
Running Swift without an OS
kishikawakatsumi
0
870
(Re)make Regexp in Ruby: Democratizing internals for the JIT
makenowjust
3
910
Spec Driven Development | AI Summit Vilnius
danielsogl
PRO
1
120
🦞OpenClaw works with AWS
licux
1
310
The Monolith Strikes Back: Why AI Agents ❤️ Rails Monoliths
serradura
0
370
Firefoxにコントリビューションして得られた学び
ken7253
1
130
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
The Cult of Friendly URLs
andyhume
79
6.9k
We Have a Design System, Now What?
morganepeng
55
8.1k
Bash Introduction
62gerente
615
210k
My Coaching Mixtape
mlcsv
0
110
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
500
The World Runs on Bad Software
bkeepers
PRO
72
12k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Docker and Python
trallard
47
3.8k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Side Projects
sachag
455
43k
Transcript
Practical CRDT Building a Rich-Text Sync Model with Core Data
and CloudKit
Kazushi Oenoki FirstSeed Inc.
None
None
None
id content ... 12 Project Alpha Kicko ff ... ...
Note
Merging is hard
CRDT Con fl ict-free Replicated Data Types
None
None
None
CRDT 101 Don't store strings. Store identities, relationships &
states.
Hello H ❌ ✅ e l l o
Hello H ❌ ✅ e l l o ID: 1
2 3 4 5
Hello H ❌ ✅ e l l o ID: 1
2 3 4 5 prevID: nil 1 2 3 4
Hello H ❌ ✅ e l l o ID: 1
2 3 4 5 prevID: nil 1 2 3 4 timestamp: ... ... ... ... ...
ABC ABC
A1BC AB2C
A 1 B C A1BC AB2C
A B 2 C A1BC AB2C
A 1 B C A1B2C A1B2C 2
A 1 🪦 C A12C A12C 2
None
Core Data First party Highly scalable High Performance Concurrent writes
Crash-safe persistent
CloudKit First party Privacy No sign-in / sign-up No server
management Shareable Free
CRDTEntity id: Int64 prevEntityID: Int64 content: String timestamp: Date isErased:
Bool note: Note Note id: UUID ... entities: [CRDTEntity]
CRDTImage url: String width: CGFloat height: CGFloat CRDTEntity id: Int64
prevEntityID: Int64 content: String timestamp: Date isErased: Bool
CRDTChar style: Int32 CRDTEntity id: Int64 prevEntityID: Int64 content: String
timestamp: Date isErased: Bool
CRDTList indentLevel: Int32 CRDTEntity id: Int64 prevEntityID: Int64 CRDTCheckBox isChecked:
Bool CRDTOrderedList marker: String CRDTUnorderedList style: Int32
CRDTHeader style: Int32 CRDTCodeBlock CRDTEntity id: Int64 prevEntityID: Int64 content:
String timestamp: Date isErased: Bool CRDTBlockQuote
None
None
None
None
None
None
CRDTEntity id: Int64 prevEntityID: Int64 content: String timestamp: Date isErased:
Bool note: Note Note id: UUID ... entities: [CRDTEntity]
None
CRDTEntity id: Int64 prevEntityID: Int64 content: String timestamp: Date isErased:
Bool note: Note Note id: UUID ... entities: [CRDTEntity]
CRDTEntity id: Int64 prevEntityID: Int64 content: String timestamp: Date isErased:
Bool noteID: UUID segment: Int32 Note id: UUID ...
NoteData id: UUID assetData: Data segment: Int32 ... note: Note
Note id: UUID ... data: [NoteData]
None
None
CRDT Powerful concept Beyond text Adaptable model Deep theory
Thank you Enjoy your stay in Japan!