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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Hoshi
September 27, 2025
Technology
0
37
ローカルファーストに入門した(い)
Niigata5分Tech #22 の発表資料です!
Hoshi
September 27, 2025
Tweet
Share
Other Decks in Technology
See All in Technology
OPENLOGI Company Profile for engineer
hr01
1
61k
AI時代のオンプレ-クラウドキャリアチェンジ考
yuu0w0yuu
0
640
Microsoft Fabricで考える非構造データのAI活用
ryomaru0825
0
510
AI時代のIssue駆動開発のススメ
moongift
PRO
0
300
OCI技術資料 : 証明書サービス概要
ocise
1
7.1k
ThetaOS - A Mythical Machine comes Alive
aslander
0
220
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
5
1.2k
「通るまでRe-run」から卒業!落ちないテストを書く勘所
asumikam
3
860
スケーリングを封じられたEC2を救いたい
senseofunity129
0
120
SSoT(Single Source of Truth)で「壊して再生」する設計
kawauso
2
400
RGBに陥らないために -プロダクトの価値を届けるまで-
righttouch
PRO
0
130
AIエージェント勉強会第3回 エージェンティックAIの時代がやってきた
ymiya55
0
170
Featured
See All Featured
Utilizing Notion as your number one productivity tool
mfonobong
4
280
The Cult of Friendly URLs
andyhume
79
6.8k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
340
Exploring anti-patterns in Rails
aemeredith
2
300
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
510
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
GitHub's CSS Performance
jonrohan
1032
470k
Site-Speed That Sticks
csswizardry
13
1.1k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
YesSQL, Process and Tooling at Scale
rocio
174
15k
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
なんだかちょっとわかった気がする!
ご清聴ありがとうございました!