# プレゼンテーションデータ構造

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

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

- Requested language: `ja-JP`

- Content language: `ja-JP`

- Documentation version: `1.1.0`

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

---

## ISlideData

`ISlideData` は、1 つの Univer Slides プレゼンテーションを永続化するスナップショットです。プレゼンテーションのメタデータ、順序付きのスライドコレクション、任意のマスターおよびレイアウト層、画面切り替え、テーマ、リソースを保存します。

### 必須プロパティ

| プロパティ             | 型                            | 説明                          |
| ----------------- | ---------------------------- | --------------------------- |
| `id`              | `string`                     | プレゼンテーション unit の一意な ID。     |
| `name`            | `string`                     | プレゼンテーションの表示名。              |
| `defaultPageSize` | `ISlidePageSize`             | ページ固有のサイズがない場合に使用する既定の幅と高さ。 |
| `slideOrder`      | `string[]`                   | プレゼンテーション順に並んだスライドの ID。     |
| `slides`          | `Record<string, ISlidePage>` | スライド ID をキーとする通常スライド。       |

### 任意プロパティ

| プロパティ                     | 型                                         | 説明                            |
| ------------------------- | ----------------------------------------- | ----------------------------- |
| `rev?`                    | `number`                                  | スナップショットのリビジョン。               |
| `appVersion?`             | `string`                                  | スナップショットを生成した Univer のバージョン。  |
| `locale?`                 | `LocaleType`                              | プレゼンテーションのロケール。               |
| `masterPageOrder?`        | `string[]`                                | 保存順に並んだマスターページ ID。            |
| `masterPages?`            | `Record<string, ISlideMasterPage>`        | ID をキーとするマスターページ。             |
| `layoutPageOrder?`        | `string[]`                                | 保存順に並んだレイアウトページ ID。           |
| `layoutPages?`            | `Record<string, ISlideLayoutPage>`        | ID をキーとするレイアウトページ。            |
| `handoutMasterPageOrder?` | `string[]`                                | 保存順に並んだ配布資料マスター ID。           |
| `handoutMasterPages?`     | `Record<string, ISlideHandoutMasterPage>` | ID をキーとする配布資料マスター。            |
| `notesMasterPageOrder?`   | `string[]`                                | 保存順に並んだノートマスター ID。            |
| `notesMasterPages?`       | `Record<string, ISlideNotesMasterPage>`   | ID をキーとするノートマスター。             |
| `activeSlideId?`          | `string`                                  | アクティブなスライドの ID。               |
| `transitionRecords?`      | `Record<string, ISlideTransition>`        | 画面切り替え ID をキーとする再利用可能な画面切り替え。 |
| `slideTransitionRefs?`    | `Record<string, string>`                  | スライド ID から画面切り替え ID への対応。     |
| `theme?`                  | `ISlideThemeData`                         | プレゼンテーションの既定テーマ。              |
| `themes?`                 | `Record<string, ISlideThemeData>`         | テーマ ID をキーとする追加テーマ。           |
| `zoomRatio?`              | `number`                                  | 永続化されるプレゼンテーションのズーム率。         |
| `resources?`              | `IResources`                              | Slides と機能プラグインが提供するリソース。     |
| `custom?`                 | `SlideCustomData`                         | アプリケーション定義のプレゼンテーションメタデータ。    |

### 順序付きページレコード

`slideOrder` の各 ID は `slides` のエントリに対応している必要があります。任意のマスター、レイアウト、配布資料マスター、ノートマスター層も、順序配列と ID をキーとするレコードの同じ組み合わせを使用します。`activeSlideId` を指定する場合は、`slides` のエントリに対応させてください。

```typescript
import type { ISlideData } from '@univerjs-pro/slides'
import { PageTypeEnum } from '@univerjs-pro/slides'

const slideData: ISlideData = {
  id: 'deck-1',
  name: '製品ロードマップ',
  defaultPageSize: { width: 960, height: 540 },
  slideOrder: ['slide-1'],
  slides: {
    'slide-1': {
      id: 'slide-1',
      name: 'オープニング',
      pageType: PageTypeEnum.Slide,
      elementOrder: [],
      elements: {},
    },
  },
  activeSlideId: 'slide-1',
}
```

### 使用方法

`univerAPI.createPresentation(slideData)` にスナップショットを渡すと、プレゼンテーションを復元できます。現在の `ISlideData` を永続化、エクスポート、印刷、サーバー側処理に使用する場合は、`presentation.save()` で取得します。

> [!WARNING: 注意]
> スナップショットは永続化用データであり、実行中の `SlideModel` ではありません。プレゼンテーションの開始後は、スナップショットオブジェクトを直接変更せず、Slides の Facade メソッドまたは登録済みコマンドを使用してください。
