# 基本概念

- Human documentation: [https://docs.univer.ai/ja-JP/guides/docs/getting-started/quickstart](https://docs.univer.ai/ja-JP/guides/docs/getting-started/quickstart)

- Agent Markdown: [https://docs.univer.ai/ja-JP/guides/docs/getting-started/quickstart.md](https://docs.univer.ai/ja-JP/guides/docs/getting-started/quickstart.md)

- Requested language: `ja-JP`

- Content language: `ja-JP`

- Documentation version: `1.1.0`

- Source: [docs/getting-started/quickstart.ja-JP.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/docs/getting-started/quickstart.ja-JP.mdx)

---

Univer Docs のプラグイン、スナップショット、コマンド、Facade API を理解します。エディタの作成手順は[インストールと基本的な使い方](https://docs.univer.ai/ja-JP/guides/docs/getting-started/installation.md)を参照してください。

## 基本概念

Univer をさらに理解する前に、基本概念を把握しておくとスムーズに進められます。

基本概念は次のとおりです。

* プラグイン Plugin
* スナップショット Snapshot
* コマンド Command
* Facade API

### プラグイン

Univer の機能はすべてプラグインで提供されます。プラグインは Univer の基本構成要素で、複数のプラグインを組み合わせて Univer アプリを構成します。

プラグインの役割は次のとおりです。

1. 機能の実装（例：`@univerjs/docs-hyper-link` は Univer Docs のハイパーリンクモデルとコマンドを提供）
2. 基盤機能の提供（例：`@univerjs/engine-render` は描画機能を提供）

必要なプラグインだけを組み合わせてアプリを構成できるため、不要なコードを避けられます。独自プラグインを作成して機能を拡張することも可能です。

#### 関連リンク

1. [ハイパーリンク](https://docs.univer.ai/ja-JP/guides/docs/features/hyper-link.md)（preset モードまたは plugin モードで Docs の機能を追加する方法）
2. [Univer アーキテクチャ](/blog/univer)

### スナップショット

Univer Docs のスナップショット形式は [`IDocumentData`](https://docs.univer.ai/ja-JP/guides/docs/model/document-data.md#idocumentdata) です。本文、文書レベルのスタイル、ヘッダーとフッター、描画、リスト、表、プラグインリソースを記述します。

任意の `resources` フィールドには、プラグインが定義したデータを保存します。

> [!WARNING: 注意事項]
> **注意**：Univer
> のスナップショットはデータ保存専用で、実行時の最新状態は反映されません。最新状態を保存したい場合は、Facade API
> のスナップショット保存メソッドを使用してください。

### コマンド

Univer Docs では、文書の内容や書式の変更はコマンド経由で実行されます。これにより、変更履歴の追跡、Undo/Redo、共同編集、関連機能の連携が可能になります。

Facade API は内部でパラメーターを準備し、対応する Docs コマンドを実行します。

> [!WARNING: 注意事項]
> **スナップショットを直接変更しないでください。** 反映されず、ビューや UI の更新も行われません。コマンドまたは Facade
> API を使用してください。

### Facade API

オフィスアプリは複雑なため、Univer のアーキテクチャも複雑です。そこで Facade API を提供し、第一級プラグインをラップしたシンプルなインターフェースで利用できるようにしています。

Facade API は現在も継続的に改善中です。要望や提案があれば GitHub で issue を立ててください。

Facade API は低レベルの詳細を抽象化しています。一般的なタスクは簡素化されますが、複雑な機能を実装するには、Univer のアーキテクチャを理解した上で、より低レベルのコマンドやモジュールの API を利用する必要がある場合があります。

#### 関連リンク

1. [Facade API の紹介](https://docs.univer.ai/ja-JP/guides/docs/getting-started/facade.md)
2. [Facade API の主要メソッド](https://docs.univer.ai/ja-JP/guides/docs/features/core/general-api.md)
3. [Univer Docs API の主要メソッド](https://docs.univer.ai/ja-JP/guides/docs/features/core/docs-api.md)

## プリセットモードとプラグインモード

Univer はプラグイン志向の設計で、柔軟で拡張可能なドキュメントアプリ基盤を提供します。プラグイン構成により機能モジュールを容易に統合できますが、初めて触れる開発者にとっては複雑に感じることがあります。

そのため Univer では **プラグインモード** と **プリセットモード** の 2 つを用意し、素早く導入できるようにしています。**プリセット**は事前に構成されたプラグインの組み合わせで、複雑な拡張をしない限り両者の機能は同等です。

> [!WARNING: 注意事項]
> * **依存バージョンの一致**：プリセット/プラグインどちらの方法でも、依存関係のバージョンは揃える必要があります。
> * **プリセットとプラグインの併用に注意**：プリセットに含まれるプラグインを重複して読み込むと、衝突や不具合の原因になります。

プリセットモードとプラグインモードの違い：

| プラグインモード                       | プリセットモード                  |
| ------------------------------ | ------------------------- |
| 対応する facade パッケージを手動で読み込む必要がある | facade パッケージの手動読み込みは不要    |
| 同種の機能プラグインの登録順に注意が必要           | プリセット内の機能は登録順を気にしなくてよい    |
| 必要に応じた遅延読み込みが可能                | 設定したプリセットは初期化時に同期的に読み込まれる |
