# リアルタイム共同編集

> OT、HTTP、WebSocket、永続化を組み合わせて同じ内容を共同編集します。

- Human documentation: [https://docs.univer.ai/ja-JP/overview/features/shared/collaboration](https://docs.univer.ai/ja-JP/overview/features/shared/collaboration)

- Agent Markdown: [https://docs.univer.ai/ja-JP/overview/features/shared/collaboration.md](https://docs.univer.ai/ja-JP/overview/features/shared/collaboration.md)

- Requested language: `ja-JP`

- Content language: `ja-JP`

- Documentation version: `1.3.0`

- Source: [features/shared/collaboration.ja-JP.mdx](https://github.com/dream-num/documentation/blob/dev/content/docs/features/shared/collaboration.ja-JP.mdx)

---

ユーザーと接続済み Agent が同じ文書を操作します。編集はローカルへ即時反映され、サーバーが順序を確定して配信し、応答性と最終的な一貫性を両立します。

## 同時編集と競合

Univer は OT（操作変換）を使います。クライアントは変更を changeset にまとめ、サーバーは確定 revision に基づき変換・送信します。Alice が `C2` を編集中に Bob が B 列前へ列を追加すると、対象セルは `D2` へ移ります。元に戻す・やり直しも遠隔操作に合わせますが、業務上の競合をすべて解消するわけではありません。

変換・適用できない場合は競合状態になり、対象文書の編集を停止します。`CollaborationConflict` は原因と未確認のローカル変更を渡します。再読み込み前にデータを保存してください。[競合復旧](https://docs.univer.ai/ja-JP/server/collaboration/browser-integration.md#conflict-recovery)と [OT 設計](/blog/ot)を参照してください。

## 通信と再接続

| 経路 | 役割 |
| --- | --- |
| HTTP | スナップショット・差分取得、Session Ticket 取得、changeset 送信。 |
| WebSocket | Session・Room 維持、ACK、遠隔変更、Presence 受信。 |

一度限りの Ticket で接続し、文書 Room に参加します。Presence はメンバー、カーソル、選択を共有します。**接続中や HTTP 成功だけでは保存確認になりません。** ACK、共同編集状態、未確認変更から保存状態を示します。

切断時は未確認変更を保持し、再接続後に不足 revision を取得して再送します。サーバーは送信 ID で重複を除きます。[同期状態](https://docs.univer.ai/ja-JP/server/collaboration/browser-integration.md#sync-status)と [Presence](https://docs.univer.ai/ja-JP/server/collaboration/presence.md)を参照してください。

## 永続化とスナップショット

確定 changeset と revision を保存し、方針に従ってスナップショットを生成します。読み込みはスナップショットと以降の変更から復元し、毎回の編集で生成する必要はありません。計算は [Headless とサーバー計算](https://docs.univer.ai/ja-JP/overview/features/shared/server-calculation.md)、履歴・コメント・Worktree は[拡張](https://docs.univer.ai/ja-JP/server/collaboration/extensions.md)を参照してください。

## 配置構成

```mermaid
flowchart LR
    A["クライアント A"]
    B["クライアント B / Agent"]
    S["アプリ共同編集サービス<br/>OT · 確定・配信"]
    D["アプリ DB"]
    A <-->|"HTTP / WebSocket"| S
    B <-->|"HTTP / WebSocket"| S
    S --> D
```

- **単一ノード**：Node.js に Transport、Endpoint、Service、DB Adapter を組み込みます。Memory は一時検証、SQLite はローカルや小規模向けです。他 DB は独自アダプターを用意します。
- **拡張**：共有永続化だけでなく、ノード間配信、Presence、Ticket 検証、保存の一貫性も必要です。プロセス追加だけでは実現しません。使用版の配置設計に従います。
- **重い処理の分離**：変換など CPU 負荷の高い処理を別配置します。

[モジュール](https://docs.univer.ai/ja-JP/server/collaboration/modules.md)、[配置](https://docs.univer.ai/ja-JP/server/deployment.md)、[複数ノード例](https://docs.univer.ai/ja-JP/server/collaboration/examples.md#multi-node)を参照してください。

## 性能と容量

**現行版のベンチマークと容量データは未掲載です。** 文書サイズ、編集頻度、人数、環境に依存します。ACK 時間、遠隔表示遅延、毎秒 changeset、配信量、使用メモリーを測定してください。

## 導入と対象

[概要](https://docs.univer.ai/ja-JP/server/collaboration/overview.md)と[二つのブラウザーの例](https://docs.univer.ai/ja-JP/server/collaboration/quick-start.md)から開始します。Middleware で認証・認可し、永続 [DB Adapter](https://docs.univer.ai/ja-JP/server/collaboration/database-adapters.md) を選んで再起動後も内容が残ることを確認します。

コアは Sheet、Doc、Slide、Canvases、Relational Table を対象とし、PDF は含みません。認証、認可、ファイル管理、保存方針はアプリケーションが提供します。

[機能一覧に戻る](https://docs.univer.ai/ja-JP/overview/features.md)
