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
49
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ローカルファーストに入門した(い)
Niigata5分Tech #22 の発表資料です!
Hoshi
September 27, 2025
More Decks by Hoshi
See All by Hoshi
家計簿アプリNotion風_〜香り彩るオープンソース仕立て〜
starjamjelly
0
6
Other Decks in Technology
See All in Technology
ラジオの科学
frievea
0
350
LanceDB入門
mocobeta
9
600
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
280
Goでデータパイプラインを作ろう
sansantech
PRO
1
510
AIに狂うスタートアップが、あえて「人との協働」に全振りした新卒エンジニア研修 / New Graduate Engineer Training at a Startup Accelerating AI Adoption
ohnoeight
0
100
トヨタ⽣産⽅式(TPS)⼊⾨
recruitengineers
PRO
3
1.1k
SO-101×VLAによる3色キューブのピック&プレース
abeja
0
220
つくって納得、つかって実感! 大規模言語モデルことはじめ ver2.0
recruitengineers
PRO
5
2k
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.2k
エンドユーザー視点で見る SansanのMeraki活用と内製自動化
sansantech
PRO
0
120
AI-DLC実践録_フルサイクル開発への挑戦
miyuc
0
280
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
1
840
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
370
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Between Models and Reality
mayunak
4
400
Practical Orchestrator
shlominoach
191
12k
Product Roadmaps are Hard
iamctodd
55
12k
Thoughts on Productivity
jonyablonski
76
5.3k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
480
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
390
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Designing Powerful Visuals for Engaging Learning
tmiket
1
500
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
なんだかちょっとわかった気がする!
ご清聴ありがとうございました!