# ボードのデータ構造

- Human documentation: [https://docs.univer.ai/ja-JP/guides/boards/model/board-data](https://docs.univer.ai/ja-JP/guides/boards/model/board-data)

- Agent Markdown: [https://docs.univer.ai/ja-JP/guides/boards/model/board-data.md](https://docs.univer.ai/ja-JP/guides/boards/model/board-data.md)

- Requested language: `ja-JP`

- Content language: `ja-JP`

- Documentation version: `1.2.0`

- Source: [boards/model/board-data.ja-JP.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/boards/model/board-data.ja-JP.mdx)

---

## IBoardData

`IBoardData` は Univer Boards で使用されるスナップショット形式です。ページの順序、ページデータ、リソース、テーマ、アクティブなページ、ズーム倍率、ボード単位の設定など、1つのボードユニットを表します。

### プロパティ

| プロパティ           | 型                                   | 説明                                    |                   |
| --------------- | ----------------------------------- | ------------------------------------- | ----------------- |
| id              | `string`                            | ボードユニットの一意な ID。                       |                   |
| rev?            | `number`                            | 永続化レイヤーまたは共同編集レイヤーで使用される、省略可能なリビジョン値。 |                   |
| name            | `string`                            | ボード名。                                 |                   |
| appVersion      | `string`                            | スナップショットを作成したパッケージのバージョン。             |                   |
| locale?         | `string`                            | ボードのロケール。                             |                   |
| defaultPageSize | `IBoardPageSize`                    | ボードページのデフォルトサイズ。                      |                   |
| pageOrder       | `string[]`                          | ボードページ ID の順序付きリスト。                   |                   |
| pages           | `Record\<string, IBoardPage\>`      | ページ ID をキーとするページのスナップショット。            |                   |
| activePageId?   | `string`                            | アクティブなページの ID。                        |                   |
| theme?          | `IBoardThemeData`                   | 現在のボードテーマ。                            |                   |
| themes?         | `Record\<string, IBoardThemeData\>` | 名前が付けられた追加のテーマ。                       |                   |
| zoomRatio?      | `number`                            | 現在のズーム倍率。                             |                   |
| resources?      | `IResources`                        | 画像、リッチテキスト、テーブルなどの要素で使用される外部リソース。     |                   |
| custom?         | \`Record\<string, unknown>          | null\`                                | アプリケーション定義のメタデータ。 |
| boardSettings?  | `IBoardSettings`                    | ボード単位の UI および操作設定。                    |                   |

### ページデータ

`IBoardPage` は要素を ID ごとに格納し、`elementOrder` でレンダリング順を定義します。スナップショットを自分で構築する場合は、両方の構造の整合性を保ってください。

```ts
const boardData = {
  id: 'board-1',
  name: 'Planning board',
  appVersion: '1.0.0',
  defaultPageSize: { width: 1920, height: 1080 },
  pageOrder: ['page-1'],
  pages: {
    'page-1': {
      id: 'page-1',
      pageType: 'page',
      name: 'Page 1',
      elementOrder: ['text-1'],
      elements: {
        'text-1': {
          id: 'text-1',
          type: 'text',
          transform: { left: 120, top: 96, width: 240, height: 80 },
          text: 'Kickoff',
        },
      },
    },
  },
  activePageId: 'page-1',
}
```

## 用途

`IBoardData` は主に次の用途で使用します。

1. `UniverInstanceType.UNIVER_BOARD` ユニットを作成する。
2. ボードドキュメントを永続化および復元する。
3. インポート、エクスポート、またはサーバー側処理用のデータを準備する。
4. レンダリング前に、ボードへページ、要素、設定の初期データを投入する。

> [!WARNING]
> スナップショットオブジェクトは永続化用のデータです。ボードの起動後は、スナップショットオブジェクトを直接変更せず、Facade API を使用することを推奨します。
