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
Hoshi
September 27, 2025
Technology
0
37
ローカルファーストに入門した(い)
Niigata5分Tech #22 の発表資料です!
Hoshi
September 27, 2025
Tweet
Share
Other Decks in Technology
See All in Technology
Bref でサービスを運用している話
sgash708
0
210
俺の/私の最強アーキテクチャ決定戦開催 ― チームで新しいアーキテクチャに適合していくために / 20260322 Naoki Takahashi
shift_evolve
PRO
1
480
GitHub Copilot CLI で Azure Portal to Bicep
tsubakimoto_s
0
300
ブラックボックス化したMLシステムのVertex AI移行 / mlops_community_62
visional_engineering_and_design
1
240
Network Firewall Proxyで 自前プロキシを消し去ることができるのか
gusandayo
0
130
AI時代のIssue駆動開発のススメ
moongift
PRO
0
300
OPENLOGI Company Profile for engineer
hr01
1
61k
20260326_AIDD事例紹介_ULSC.pdf
findy_eventslides
0
200
How to install a gem
indirect
0
2k
Blue/Green Deployment を用いた PostgreSQL のメジャーバージョンアップ
kkato1
0
170
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
5
1.3k
Zephyr(RTOS)でARMとRISC-Vのコア間通信をしてみた
iotengineer22
0
110
Featured
See All Featured
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.8k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
150
Practical Orchestrator
shlominoach
191
11k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.1k
A better future with KSS
kneath
240
18k
From π to Pie charts
rasagy
0
160
Optimising Largest Contentful Paint
csswizardry
37
3.6k
Claude Code のすすめ
schroneko
67
220k
Unsuck your backbone
ammeep
672
58k
Transcript
ローカルファーストに 入門した(い) ほし (@starjamjelly)
自己紹介! ・ほし (X/Github/Qiita/shizu.me: @starjamjelly) ・新潟ではたらくSaasサービス開発者 ・実務ではAngularとDjangoを書いています ・最近PCを買い換えました → US配列と格闘中(現状敗北)
ローカルファーストの概要 • データの所有権は「自分である」という思想に根付いた考え方のこと • そんなの当たり前では? ←本当にそうか? ◦ クラウドファースト ▪ 「クラウドなんて存在しない。それは誰かのコンピューターだ。」
▪ 果たしてそのデータの所有者は「自分」なのか? ▪ な、なるほど… 参考論文:https://www.inkandswitch.com/essay/local-first/ (多分一番有名)
ローカルファーストソフトウェアの7つの理想 1. 高速(スピナー不要) 2. マルチデバイス(仕事は、1つのデバイスに閉じ込められない) 3. オフライン動作(ネットワークはオプションです) 4. コラボレーション(同僚とのシームレスなコラボレーション) 5.
長期保存(ソフトウェア提供者が倒産しても、データは私のもの) 6. セキュリティとプライバシーをデフォルトで確保 7. ユーザーコントロール(最終的な所有権と管理権はあなた) なんだか素敵…!
オフラインファーストとの違い • ローカルファーストとオフラインファーストは 一緒に解釈されがち。 • ここまでの資料にあるとおり、大切にしている考え方が違う ◦ ローカルファースト :データの所有権・アクセスに比重 ◦ オフラインファースト:オフライン動作することに比重
▪ 本来並列なものではない?
Why born ‘ローカルファースト’ • 大きく分けて、生まれた理由は2つ ◦ 他人のコンピュータ(クラウド)にデータを保存する違和感 ◦ クラウドファーストで損なわれるUX ▪
「そのデータ、本当にクラウドへの保存が必要…?」 ▪ 「えっ、私のSaas遅すぎ…?」
相反する思想 • 私が思うに、当たり前のようにあった「Single source of Truth」に相反する 思想だと思う ◦ クラウドファースト ▪
プライマリ:サーバー/オプション:ローカル ◦ ローカルファースト ▪ プライマリ:ローカル/オプション:サーバー • 一貫性(Consistency)に期待しない・担保がない • 「Single source of Truth」である必要があるのか、要件を見極める
マルチデバイスへの対応 • CRDT(Conflict-free Replicated Data)と呼ばれる同期方針が有名 ◦ 難しすぎて今日のLTで説明できるに至りませんでした。。。 ◦ 要するに、「各ノードでの操作をどうやってマージするか?」についての アルゴリズム」
◦ CRDTの中でもいくつか種類がある ▪ CmRDT:データに対するイベントを送りあってマージ ▪ CvRDT:各ノードのレプリカ自体を送り合い、取り決めた判断基準 (和集合なのか、最大値なのかなど)を元にマージ 参考記事:https://qiita.com/everpeace/items/bb73ec64d3e682279d26 → とってもわかりやすい気がします
CRDTの課題 • 難しい
そんなあなたに「Turso」 • ざっと概要 ◦ SQLiteをフォークした新しいDBMS ◦ Turso Cloudから利用可能 ◦ Embedded
ReplicaやBranchingといった機能も使える ◦ SQLiteベースなのに同時書き込みが可能
Tursoの同期戦略 import { createClient } from "@libsql/client"; // 同期しないローカルデータ createClient({
url: 'file:ui.db' }); // 同期対象のデータ createClient({ url: 'file:users.db', syncUrl: `turso://user-${userId}.turso.io`, authToken: userToken, syncInterval: 60 }); DBを分けることで、同期する データとしないデータを分けるこ とが可能。
ローカルファーストのコミュニティ • 海外にて毎年3日間にわたり開催されている 公式:https://www.localfirstconf.com/ • YouTubeに発表のプレイリストがある!すごい! https://www.youtube.com/playlist?list=PL4isNRKAwz2MabH6AMhUz1 yS3j1DqGdtT
なんだかちょっとわかった気がする!
ご清聴ありがとうございました!