yoi/docs/research/zed-deltadb.md
2026-06-01 18:49:23 +09:00

9.0 KiB
Raw Blame History

DeltaDB 調査メモZed Industries

調査日: 2026-05-01 出典: Zed 公式ブログ「Sequoia Backs Zed's Vision for Collaborative Coding」を中心に、二次情報・関連記事を補強。

1. 何か

DeltaDB は Zed Industries が開発中の operation-based version control system / synchronization engine である。Zed エディタの Series BSequoia Capital 主導、$32Mと同時に発表された、同社の次フェーズの中核プロダクト。

ひとことで言うと「Git の commit ベースを置き換えるのではなく、コミット間の "あらゆる編集操作" を粒度として保持する VCS」。CRDT を用いてリアルタイムに変更を記録・同期し、Git と相互運用可能な設計を採る。

"DeltaDB ... uses CRDTs to incrementally record and synchronize changes as they happen ... designed to interoperate with Git" — Zed Blog

2. 動機(解こうとしている問題)

LLMAI エージェント時代のコーディングで、Git の粒度が粗すぎることが課題と捉えられている。

  • 会話/意図がコードから剥がれる: PR コメントやチャットでのやり取り、AI への指示・修正・pivot は、コードが変わると参照先を失い、文脈ごと失われる。
  • スナップショットでは追えない: Git は commit という離散点しか持たない。エージェントとの "continuous dialogue" や、commit 未満の編集ステップを履歴として扱えない。
  • 同時編集の衝突: 複数の AI エージェント+人間がリアルタイムに編集する時、従来の merge conflict モデルは機能しにくい。
  • コード位置の永続参照: コードがリファクタや改名で移動するたび、URL 形式のパーマリンクや議論の固定ピンが切れる。

これらは OpenAI の Sean Grove が指摘した「進化する仕様・プロンプトをどう track するか」という課題感とも重なるとされている。

3. 技術的な構成要素

3.1 Operation-based designvs. snapshot-based

  • Git の commit = snapshot に対し、DeltaDB は operation = 編集 1 個 を一次データとして保持する。
  • 「every operation, not just commits」を track する。
  • スナップショットは operation log から導出可能な派生物として位置付けられるVCS 系では "operational" / "patch theory" 系の系譜Pijul, Fossil, darcs と同じ家系の発想)。

3.2 CRDT による同期

  • 並行編集の整合性を CRDTConflict-free Replicated Data Typesで取る。
  • これは Zed エディタの multiplayer editing で既に実戦投入されている技術の延長:
    • Logical location: 編集をオフセットではなく (insertion id, offset) のアンカーで表現し、操作を可換にする。
    • Replica ID + sequence number: 中央が replica id を一度割り当てれば、以降は各 replica が独立に一意 ID を生成可能。
    • Tombstone: 削除はテキストを物理削除せず墓標として残し、論理位置解決を保つ。
    • Lamport timestamp / vector timestamp: 因果順序を尊重し、並行挿入の可視性を制御。
    • Per-user undo map: 単一スタックではなく操作 ID → カウントの map で、ユーザーごとに独立 undo を実現。
  • DeltaDB はこの editor 内 CRDT を、ファイル横断・リポジトリ規模・永続化にスケールさせるレイヤと読み解ける。
  • 「あらゆるコード変換を生き延びる文字単位のパーマリンク」を提供する。
  • スナップショット時刻のファイル行番号ではなく、CRDT のアンカーinsertion id ベース)に対して URL 的な参照を発行できるため、リネーム・リフォーマット・移動でも切れない。
  • ユースケース: 議論レビューAI への指示/設計メモを、特定の文字位置に永続的に固定する。

3.4 Git との相互運用

  • リプレースではなく interop 前提。
  • 既存 Git リポジトリを保ったまま段階導入できる戦略で、エンタープライズ採用のハードルを下げる狙い。
  • 推測: operation log → Git commit へのフラット化/ Git commit → operation log への lift が可能な層を持つはず(公式の実装仕様は未公開)。

4. Zed エディタとの関係

  • DeltaDB は Zed の中で「人間 × 人間」「人間 × AI エージェント」「AI × AI」の協働基盤になる。
  • Zed が既に持つ multiplayer editingCRDTを、editor session の寿命を超えて永続化・分散同期する位置づけ。
  • 「terminal interface、local IDE、web-based agent tool」の 3 系統の良さを束ねた統合 GUI を作る、という Zed の方針の中核。
  • 「コードベースを生きた、辿れる履歴a living, navigable historyとして扱う」というビジョンの実装手段。

5. ビジネス/ライセンス

  • Zed 本体と同様に オープンソース+ optional paid managed service モデル。
  • Series B$32M、Sequoia 主導)の調達は DeltaDB 開発を主目的の一つとしている。報道では累計 $42M 規模との表記もある。
  • 競合として GitHub と比較する論調も出てきている(例: Hypeburner が "GitHub Competitor" と表現。ただし公式は「Git と interop」を強調しており、置換戦略ではなく上位レイヤ戦略。

6. 既知の不明点(現時点で公開されていない情報)

  • 具体的なデータモデルストレージフォーマットlog の物理表現、圧縮、GC、tombstone 回収など)。
  • Git ↔ DeltaDB ブリッジの双方向変換の詳細(特に rebase、cherry-pick、shallow clone との整合)。
  • ブランチ・マージのモデルpatch theory ライクな順序非依存マージか、Git ライクなブランチ概念を載せるか)。
  • スケーラビリティ特性(モノレポ、巨大履歴、多数 replica
  • アクセス制御・権限モデルCRDT の特性上、後付けが難しい領域)。
  • リリース時期、API 仕様、SDK の有無。

これらは公開ロードマップが出るまで判断保留。

7. 関連技術/系譜

  • Operation-based / patch-based VCS: darcs, Pijul, Fossil。理論的には patch theorycategory-theoretic merge。
  • CRDT 系コラボエディタ: Google Docs, Figma, Zed multiplayer。Yjs / Automerge は CRDT ライブラリの代表。
  • 永続的位置参照: Tree-sitter ベースの semantic anchor、Sourcegraph の SCIP、git-blame の line tracking。DeltaDB は CRDT identity を使うため理論的にこれらより堅牢な anchor を提供できる。
  • AI エージェント協働基盤: OpenAI の "evolving spec" 議論、Anthropic の Computer Use 系、各社の MCP。DeltaDB は「エージェント↔コード↔人間の対話」を VCS 層で受ける狙い。

8. 自プロジェクトyoiへの含意メモ

参考材料として残す(採用の可否ではない)。

  • LLM エージェントのインタラクション履歴をコードに永続的に紐付けたい場面(例: 「この修正はどの会話・どのプロンプトから来たか」で、character-level permalink の発想は流用余地がある。
  • ScopedFs を将来スクリプティング言語に公開する計画memory: project_scopedfs_scriptingと組み合わせる際、エージェントの編集系列を operation log として残すかどうかは設計判断ポイント。
  • 短期的には DeltaDB そのものを依存に取り込む選択肢はないが、「commit 未満の粒度をどう持つか」という設計議論の参照点として有用。

9. 参考リンク