# コメント

- Human documentation: [https://docs.univer.ai/ja-JP/guides/bases/features/thread-comment](https://docs.univer.ai/ja-JP/guides/bases/features/thread-comment)

- Agent Markdown: [https://docs.univer.ai/ja-JP/guides/bases/features/thread-comment.md](https://docs.univer.ai/ja-JP/guides/bases/features/thread-comment.md)

- Requested language: `ja-JP`

- Content language: `ja-JP`

- Documentation version: `1.1.0`

- Source: [bases/features/thread-comment.ja-JP.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/bases/features/thread-comment.ja-JP.mdx)

---

#### Package metadata

```json
{
  "preset": [],
  "plugins": [
    {
      "client": "@univerjs/thread-comment",
      "facade": "@univerjs/thread-comment/facade"
    },
    {
      "client": "@univerjs/thread-comment-ui",
      "locale": "@univerjs/thread-comment-ui/locale/ja-JP",
      "style": "@univerjs/thread-comment-ui/lib/index.css"
    },
    {
      "client": "@univerjs-pro/bases-thread-comment",
      "facade": "@univerjs-pro/bases-thread-comment/facade"
    },
    {
      "client": "@univerjs-pro/bases-thread-comment-ui",
      "locale": "@univerjs-pro/bases-thread-comment-ui/locale/ja-JP",
      "style": "@univerjs-pro/bases-thread-comment-ui/lib/index.css"
    }
  ],
  "license": true,
  "server": "optional"
}
```

タスク、注文などのレコードについて議論できます。グリッド、カンバン、ギャラリー、カレンダー、ガントのどのビューでも、コメントは同じレコードに紐づきます。ビューを切り替えても別のスレッドは作成されません。

## プラグインの登録

Bases のコアおよび UI プラグインの後に追加します。

#### npm

```bash
npm install @univerjs-pro/bases-thread-comment @univerjs-pro/bases-thread-comment-ui
```

#### pnpm

```bash
pnpm add @univerjs-pro/bases-thread-comment @univerjs-pro/bases-thread-comment-ui
```

#### yarn

```bash
yarn add @univerjs-pro/bases-thread-comment @univerjs-pro/bases-thread-comment-ui
```

#### bun

```bash
bun add @univerjs-pro/bases-thread-comment @univerjs-pro/bases-thread-comment-ui
```

```ts
import { UniverBasesThreadCommentPlugin } from '@univerjs-pro/bases-thread-comment'
import { UniverBasesThreadCommentUIPlugin } from '@univerjs-pro/bases-thread-comment-ui'

import '@univerjs-pro/bases-thread-comment/facade'
import '@univerjs/thread-comment/facade'
import '@univerjs-pro/bases-thread-comment-ui/lib/index.css'

univer.registerPlugin(UniverBasesThreadCommentPlugin)
univer.registerPlugin(UniverBasesThreadCommentUIPlugin)
```

コメントパッケージの言語リソースをマージし、アプリケーションの現在のユーザーを設定します。UI プラグインはレコードへのコメント操作を追加し、データプラグインはコメントとレコードを関連付けます。

## コメントの追加と読み取り

```ts
const record = univerAPI.getActiveBase()?.getTables()[0]?.getRecords()[0]
if (!record) throw new Error('Create a record first')

await record.createCommentAsync('Please confirm the delivery date.')
const comments = record.getComments()
console.log(comments.map(({ root }) => root.id))
```

`getComments()` はローカルに読み込まれたコメントを読み取ります。リモートデータソースを使う場合、`await record.listCommentsAsync()` は既知のスレッドを同期してから返します。返信、更新、削除は[コメント Facade](https://docs.univer.ai/ja-JP/reference/facade/thread-comment.md) を参照してください。

## 保存と共有の議論

ローカルのコメントは `base.save()` で Base リソースとして保存できます。スナップショットを復元する前にコメントプラグインを登録してください。

議論の共有には、コメントサービス、データソース、権限も必要です。ドキュメントの共同編集だけではコメント機能は接続されません。[Office 拡張モジュール](https://docs.univer.ai/ja-JP/server/collaboration/extensions.md)に従い、2 つのアカウントで作成、読み取り、権限、再オープンをテストしてください。

## 共通のコメント操作

共通のコメント Facade と製品 Facade を両方インポートします。製品のメソッドは安定したアンカーを作成し、共通 API は返信・更新・解決・削除を扱います。`getComments()` はローカル状態を読み取ります。`listCommentsAsync()` は設定済みデータソースを通じて既知のスレッドを同期し、サーバー上の全スレッドを検索するものではありません。

```ts
import '@univerjs/thread-comment/facade'

const [thread] = univerAPI.getComments({ resolved: false })
if (thread) {
  await univerAPI.replyCommentAsync({
    unitId: thread.unitId,
    subUnitId: thread.subUnitId,
    threadId: thread.threadId,
    content: 'Reviewed.',
  })
}
```

## 共有ディスカッション

[Server SDK](https://docs.univer.ai/ja-JP/server/collaboration/extensions.md) で Comment Service と Endpoint を統合し、共同編集とライセンスの設定後に `@univerjs-pro/thread-comment-datasource` の `UniverThreadCommentDataSourcePlugin` を登録します。付属のデータソースは `/universer-api/comment/unit/{unitId}/...` と `/universer-api/user/list` を使います。アプリからこれらのルートを公開してください。サーバーは文書の編集権限とは別に、コメントの読み書きを認可する必要があります。
