世界を動かす技術を、日本語で。

Automerge 3.0

概要

  • Automerge 3.0 がリリースされ、 メモリ使用量 が大幅に削減
  • ドキュメント履歴管理による オフライン協調作業 の最適化
  • API整理 やテキスト処理の改善
  • 旧バージョンからの 高い互換性 と簡単な移行
  • パフォーマンスと信頼性 が大幅に向上

Automerge 3.0の主なアップデート

  • Automerge 3.0 は、ローカルファーストな データ同期エンジン
  • 共同編集アプリ開発を 容易化
  • 最大の特徴は メモリ使用量10倍以上削減
  • ドキュメント履歴管理による バージョン管理オフライン作業 サポート
  • 従来は長い履歴で ギガバイト級メモリ消費 が発生
  • Automerge 3.0 では、同じ操作で 1.3MB まで削減(例:Moby Dick貼り付け時)
  • クライアントのみならず サーバー運用の安定性 にも寄与
  • 履歴の多いドキュメントの 読み込み速度改善 (例:17時間→9秒)

メモリ使用量の改善

  • すべての変更履歴を 圧縮カラム形式 で保存
  • 編集時も 圧縮形式 を維持し、展開せずに効率的に扱う設計
  • クライアントデバイス での高メモリ消費を回避
  • 多くの大規模ドキュメント を同時に扱うサーバーにも好適

APIの整理とテキスト処理

  • テキスト管理APIの 冗長性を解消
  • Collaborative string (共同編集可)と Non-collaborative string (編集競合不可)を明確に区別
  • Automerge 1.0 :通常の文字列とTextクラスで区別
  • Automerge 2.0 :collaborative textがデフォルト、RawStringクラスで非協調テキストを扱う
  • Automerge 3.0 :Text APIを廃止し、next APIを標準化
    • RawStringは ImmutableString に名称変更

移行と利用方法

  • @automerge/automerge-repo@automerge/react の最新版で Automerge 3.0 がデフォルト
  • 新規利用者は チュートリアル 参照推奨
  • 既存コードベースは マイグレーションガイド を確認
  • npm update @automerge/automerge でバージョンアップ可能
  • 問題発生時は Issue作成Discord参加 でサポート受付

まとめ

  • Automerge 3.0 は、 パフォーマンスメモリ効率APIの使いやすさ が大幅向上
  • 共同編集アプリローカルファースト開発 に最適
  • 旧バージョンからの移行も 容易、今こそ導入・アップデートの好機

Hackerたちの意見

yjsのベンチマークが必要だね。

パフォーマンスを重視するなら、jsonjoyを見てみて。

いくつか質問があるんだけど、1. ReactとProsemirrorの例があるけど、Tiptapと使う場合のギャップは何?(TiptapはProsemirrorの上にある抽象化で、エディタを作る作業を簡素化することを目指してるんだよね。)2. ドキュメント内で特定のユーザーが見たり編集したりできないコンテンツのブロックをサポートするためのデザインの余地はあるのかな?

  1. TipTapと一緒に使えるよ:既存のスキーマをautomerge属性でラップするだけ。UndoとRedoも入れ替わるよ。

この投稿に対するコメントが少ないのに驚いた、これはすごい改善だよね。Electric SQLを使ってたけど、Automerge 3.0はローカルファーストのアプローチを取り入れたCRDTの聖杯みたいだね。Electric SQLをやめてこれに切り替えた方がいいのかな。どんなハードウェアが必要か、Automergeの同期サーバーを運用するのに何人のユーザーが読み書きできるのか、ちょっと不安なんだ。Electric SQLも結構良いけど、まだ完璧じゃなくて、ローカルファーストを実装するとロールバックに関する機能が使いづらくなるんだよね。全体的にまだまだ初心者だけど、10倍のメモリブーストはありがたい。大きなドキュメントだとラグが目立ってたから。

パフォーマンスの改善はすごいね。 > Automerge 3.0では、ライブラリを再設計して、ランタイムでも圧縮された表現を使うようにしたんだ。これで大きなメモリ節約が実現したよ。例えば、Moby DickをAutomerge 2のドキュメントに貼り付けると700MBのメモリを消費するけど、Automerge 3では1.3MBしか使わないんだ! > さらに、大きな履歴を持つドキュメントの場合、読み込み時間がかなり短くなることもあるよ(最近、17時間かかっても読み込まなかったドキュメントが9秒で読み込まれた例があった!)。

使い方次第だね。リッチテキストドキュメントでみんながコラボするなら、Automergeかyjsがいいと思うよ。サーバーが権威となるローカルファーストアプリのデータが必要なら、ElectricSQLが一番合うかも。とはいえ、今はいろんなアプローチがあって、どれも期待できるけど、ちょっと難しいところもあるね。

今、ツリーの移動操作は実装されてるの?

確か、Kleppmannがプロトタイプを作ったけど、まだAutomergeには含まれてないよね。

これってJavaScriptだけなの?

Rustで書かれてるけど、JavaScriptが主なインターフェースだよ。 https://github.com/automerge/automerge

関連情報。他にも? Show HN: Pg_CRDT – PostgresでのCRDTを使ったAutomerge - https://news.ycombinator.com/item?id=43655920 - 2025年4月 (4件のコメント) Automerge: コラボアプリを作るためのデータ構造ライブラリ - https://news.ycombinator.com/item?id=40976731 - 2024年7月 (58件のコメント) Automerge-Repo: ローカルファーストアプリ用の「バッテリー同梱」ツールキット - https://news.ycombinator.com/item?id=38193640 - 2023年11月 (43件のコメント) Automerge 2.0 - https://news.ycombinator.com/item?id=34586433 - 2023年1月 (89件のコメント) Automerge CRDT – ローカルファーストソフトウェアを作る - https://news.ycombinator.com/item?id=30881016 - 2022年4月 (8件のコメント) Automerge: 同時に変更できるJSONライクなデータ構造(CRDT) - https://news.ycombinator.com/item?id=30412550 - 2022年2月 (69件のコメント) Automerge: コラボレーションソフトウェアの新しい基盤 [動画] - https://news.ycombinator.com/item?id=29501465 - 2021年12月 (29件のコメント) Automerge: JavaScriptでコラボアプリを作るためのライブラリ [..] - https://news.ycombinator.com/item?id=24791713 - 2020年10月 (1件のコメント) Automerge: コラボアプリを作るためのJSONライクなデータ構造 - https://news.ycombinator.com/item?id=16309533 - 2018年2月 (98件のコメント)

どんなアプリケーションに使われるの?私はテクニカルライターで、チームがドキュメントのセクションのバージョン管理に苦労してるんだけど、これが役立つか気になってる。

どんなバージョン管理の問題に直面してるのか、詳しく教えてくれる?