kikuta@dev:~$cat ./notes/local-first-tools.md
ローカルファーストの道具を作るときに考えていること
常用ツールで、ネットワーク依存・待ち時間・データの置き場所を減らすための設計原則。
常用ツールは起動の摩擦が支配的になる
毎日使う小さなツールでは、一つの高度な機能より、開くまでの時間や入力から結果までの待ち時間が体験を左右します。ネットワーク接続が必須になると、サーバーの状態や認証も操作の一部になります。
ローカルで完結できる処理は端末内へ置くことで、使える状態までの依存を減らせます。特に履歴、ログ、個人の作業データのように端末との距離が近い情報は、ローカル保存と相性がよい領域です。
ローカルファーストは同期しないという意味ではない
端末内を基準にしても、複数端末やバックアップのために同期が必要になることはあります。重要なのは、同期が止まった瞬間にアプリ全体が使えなくならないことです。
ローカルの状態を正とし、同期を追加機能として設計すると、通信エラー時の挙動を単純にできます。その代わり、競合や削除の扱いを後から考える必要があるため、データモデルは早い段階で永続化を前提にしておきます。
プライバシーを機能として扱う
端末内で処理することは、単にセキュリティ説明を簡単にするためではありません。『このデータは外へ送らなくても使える』という性質自体が、利用者にとって機能になります。
必要になったときだけ外部サービスを使い、その境界をUIとドキュメントの両方で説明できる設計にしておくと、機能が増えてもデータの流れを追いやすくなります。