# パッケージ概要

> Core、History、Thread Comment、Worktree、Office Exchange の公開パッケージを説明します。

- Human documentation: [https://docs.univer.ai/ja-JP/server/collaboration/packages](https://docs.univer.ai/ja-JP/server/collaboration/packages)

- Agent Markdown: [https://docs.univer.ai/ja-JP/server/collaboration/packages.md](https://docs.univer.ai/ja-JP/server/collaboration/packages.md)

- Requested language: `ja-JP`

- Content language: `ja-JP`

- Documentation version: `1.1.0`

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

---

まず Core Collaboration を構成し、製品に必要な拡張を加えてください。このページは選択の手引きで、すべてのパッケージの導入は不要です。

## Core Collaboration

Core Collaboration はブラウザー共同編集、サーバープロトコル、OT、リビジョン、永続化の主経路を提供します。

| 実行環境       | パッケージ                                                                                                                        | 主な責任                                                        |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| ブラウザー      | [**@univerjs-pro/collaboration**](https://www.npmjs.com/package/@univerjs-pro/collaboration)                                 | ブラウザー共同編集の基本機能を登録                                           |
| ブラウザー      | [**@univerjs-pro/collaboration-client**](https://www.npmjs.com/package/@univerjs-pro/collaboration-client)                   | Unit 読み込み、変更送信、リアルタイム同期                                     |
| ブラウザー      | [**@univerjs-pro/collaboration-client-ui**](https://www.npmjs.com/package/@univerjs-pro/collaboration-client-ui)             | 共同編集状態の UI とスタイルを提供                                         |
| Server     | [**@univerjs-pro/collaboration-transport-node**](https://www.npmjs.com/package/@univerjs-pro/collaboration-transport-node)   | Node.js の HTTP と WebSocket を受信                              |
| Server     | [**@univerjs-pro/collaboration-endpoint**](https://www.npmjs.com/package/@univerjs-pro/collaboration-endpoint)               | Client プロトコル、Sessions、Rooms、Presence を実装                    |
| Server     | [**@univerjs-pro/collaboration-service**](https://www.npmjs.com/package/@univerjs-pro/collaboration-service)                 | Unit、OT、リビジョン、コア API を管理                                    |
| データベース     | [**@univerjs-pro/collaboration-database-memory**](https://www.npmjs.com/package/@univerjs-pro/collaboration-database-memory) | テスト、例、一時開発用のプロセス内保存                                         |
| データベース     | [**@univerjs-pro/collaboration-database-sqlite**](https://www.npmjs.com/package/@univerjs-pro/collaboration-database-sqlite) | 開発、テスト、ローカル、小規模向け SQLite 永続化                                |
| Multi-node | [**@univerjs-pro/collaboration-cluster-redis**](https://www.npmjs.com/package/@univerjs-pro/collaboration-cluster-redis)     | 複数ノードへのデプロイ向けの Redis ベースの pub/sub アダプターと Session Ticket ストア |

Core Server は Transport、Endpoint、Service、1 つの Database Adapter が必要です。Memory と SQLite は同じ契約を実装し、通常どちらかを選びます。複数ノードへデプロイする場合は、pub/sub アダプターと共有の Session Ticket ストアも必要です。両方の契約（`IPubSubAdapter`、`ISessionTicketStore`）は Endpoint が定義し、SDK が Redis 実装を提供します。

## History

History は Core の Unit 作成と変更コミットのイベントから履歴索引を構築します。

| 実行環境   | パッケージ                                                                                                                                        | 主な責任                      |
| ------ | -------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |
| ブラウザー  | Core Client/UI を再利用                                                                                                                          | 履歴項目を表示・取得                |
| Server | [**@univerjs-pro/collaboration-history-service**](https://www.npmjs.com/package/@univerjs-pro/collaboration-history-service)                 | 履歴索引を構築・検索                |
| Server | [**@univerjs-pro/collaboration-history-endpoint**](https://www.npmjs.com/package/@univerjs-pro/collaboration-history-endpoint)               | Client に History プロトコルを提供 |
| データベース | [**@univerjs-pro/collaboration-history-database-sqlite**](https://www.npmjs.com/package/@univerjs-pro/collaboration-history-database-sqlite) | 派生 History 索引を保存          |

履歴は再構築可能な派生索引であり、Unit 内容の正本は Core の変更セットです。

## Thread Comment

Thread Comment は Sheets と Docs のコメント本文、返信、解決状態を管理します。

| 実行環境   | パッケージ                                                                                                                                        | 主な責任                           |
| ------ | -------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ |
| ブラウザー  | Core Collaboration パッケージを再利用                                                                                                                 | Comment Client と UI を利用        |
| Server | [**@univerjs-pro/collaboration-comment-service**](https://www.npmjs.com/package/@univerjs-pro/collaboration-comment-service)                 | コメント操作と `commentCommitted` を管理 |
| Server | [**@univerjs-pro/collaboration-comment-endpoint**](https://www.npmjs.com/package/@univerjs-pro/collaboration-comment-endpoint)               | コメントプロトコルと Unit Rooms 経由の更新配信  |
| データベース | [**@univerjs-pro/collaboration-comment-database-memory**](https://www.npmjs.com/package/@univerjs-pro/collaboration-comment-database-memory) | プロセス内コメント保存                    |
| データベース | [**@univerjs-pro/collaboration-comment-database-sqlite**](https://www.npmjs.com/package/@univerjs-pro/collaboration-comment-database-sqlite) | SQLite コメント永続化                 |

Comment Adapter はコメントデータを保存します。内容と動くアンカーは Core のスナップショットと変更セットに残ります。

## Worktree

Worktree は隔離下書き、状態遷移、Unit ごとのマージを提供します。

| 実行環境   | パッケージ                                                                                                                                          | 主な責任                      |
| ------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |
| ブラウザー  | [**@univerjs-pro/collaboration-worktree-client**](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-client)                   | Worktree の下書き・状態・マージを接続   |
| Server | [**@univerjs-pro/collaboration-worktree-service**](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-service)                 | 下書き変更セット、状態、マージを管理        |
| Server | [**@univerjs-pro/collaboration-worktree-endpoint**](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-endpoint)               | Worktree Client にプロトコルを提供 |
| データベース | [**@univerjs-pro/collaboration-worktree-database-memory**](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-database-memory) | プロセス内 Worktree 保存         |
| データベース | [**@univerjs-pro/collaboration-worktree-database-sqlite**](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-database-sqlite) | SQLite Worktree 永続化       |

Worktree Service は Core Service を介して trunk にマージするため、両 Service の境界に Middleware が必要です。

## Office Exchange

Office Exchange は変換と Collaboration Service を組み合わせるアプリケーションフローです。独立した協同 Database Adapter はありません。

| 実行環境   | パッケージ                                                                                                          | 主な責任                             |
| ------ | -------------------------------------------------------------------------------------------------------------- | -------------------------------- |
| ブラウザー  | [**@univerjs-pro/exchange-client**](https://www.npmjs.com/package/@univerjs-pro/exchange-client)               | ブラウザーの基本ファイル交換を提供                |
| ブラウザー  | [**@univerjs-pro/sheets-exchange-client**](https://www.npmjs.com/package/@univerjs-pro/sheets-exchange-client) | Sheet ファイルの入出力                   |
| Server | [**@univerjs-pro/exchange-node**](https://www.npmjs.com/package/@univerjs-pro/exchange-node)                   | Node.js で Office と Univer データを変換 |

インポートは変換データを `createUnitFromSnapshot()` に渡し、エクスポートは Core Service から確定リビジョンを読みます。ファイル、タスク、業務 API はアプリケーションが管理します。

## 選択の原則

1. [クイックスタート](https://docs.univer.ai/ja-JP/server/collaboration/quick-start.md)の Core パッケージから始めます。
2. Memory、SQLite、独自実装から Core Database Adapter を 1 つ選びます。
3. 複数ノードへデプロイする場合は、Redis の pub/sub アダプターと Session Ticket ストアを追加します。
4. 製品で使う拡張だけを導入します。
5. SQLite ファイルを共有しても各モジュールに独立 Adapter を作ります。

関係は[共同編集拡張](https://docs.univer.ai/ja-JP/server/collaboration/extensions.md)、実行例は[サンプル一覧](https://docs.univer.ai/ja-JP/server/collaboration/examples.md)を参照してください。
