Automerge が『ローカルファーストの本命』として注目
ローカルファーストアプリ(Local-first Apps)は、クラウド依存を減らしオフライン対応・ユーザーデータ所有を実現する設計思想です。Automergeは Ink & Switch(Local-first運動の本拠地)が開発するCRDTライブラリで、Yjsと並ぶ主要選択肢として2024〜2026年で注目を集めています。純粋関数型API・JSON互換・型安全性で、複雑なローカルファーストアプリ構築の本命です。
採用すべき5つのシグナル
- ローカルファーストアプリを構築したい
- オフライン対応必須のアプリ
- Yjsの命令型APIに違和感
- JSON互換のデータ構造
- TypeScript型安全性重視
Yjs/Automerge比較
Yjs: 高速・命令型API・WebRTC統合・実績豊富・Liveblocks基盤。
Automerge: 純粋関数型API・JSON互換・型安全・Local-first志向。
使い分け: パフォーマンス・実績重視Yjs・関数型API・JSON親和性Automerge。
主要機能
- Pure Functional API: 不変データ・関数型操作
- JSON互換: 通常のJSONとして扱える
- Type Safety: TypeScript型定義
- Sync Protocol: クライアント間の差分同期
- History: 全変更履歴の保持
- Binary Format: 効率的なバイナリ形式
実装パターン
(1) Document作成: const doc = Automerge.init<DocType>()
(2) 変更: const newDoc = Automerge.change(doc, d => { d.title = 'X' })
(3) 同期: SyncMessageで差分交換
(4) 履歴: Automerge.getHistory(doc)
(5) Repository: Automerge Repoでマルチドキュメント管理
本番採用の判断基準
- 本番実績: Trellisys・各種ローカルファーストアプリ
- パフォーマンス: 大規模ドキュメントで一定オーバーヘッド
- SDK安定性: 2024〜2026年で安定化
- 多言語: TypeScript・Rust・WASM
- 移行コスト: Yjsからの移行はAPI再設計
採用しない方が良いケース
- パフォーマンス最重視(Yjs向き)
- Liveblocks等の既存統合活用
- 単純なリアルタイム同期で十分
- 命令型APIに慣れている
実装で詰まる3つの落とし穴
- 関数型変換: Yjs経験者の命令型脳からの転換
- 同期プロトコル: クライアント間の状態管理
- ストレージ: バイナリ形式の永続化設計
30日学習プラン
- 1週目: Automerge基礎・Document・Change
- 2週目: 同期プロトコル・Repository
- 3週目: ローカルファーストアプリ構築
- 4週目: 本番デプロイ・性能チューニング
関連リンク
Yjs統合は Liveblocks深掘り、CRDTは CRDT実装、PartyKitは PartyKit深掘り を参照してください。