# 基本概念

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

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

- Requested language: `ja-JP`

- Content language: `ja-JP`

- Documentation version: `1.1.0`

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

---

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

## 基本概念

Univer の深い理解を得るために、まずはこのドキュメントを読んで、Univer の基本概念を理解してください。これにより、Univer をよりスムーズに使用できるようになります。

基本概念には以下が含まれます。

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

### プラグイン

Univer のすべての機能はプラグインによって提供されており、プラグインは Univer の基本的な構成要素です。複数のプラグインを組み合わせることで、Univer アプリケーションが形成されます。

プラグインの責任には以下が含まれます。

1. 機能の実装、例えば `@univerjs/sheets-filter` はフィルタリング機能を提供します。
2. 基本的な機能の提供、例えば `@univerjs/engine-render` はレンダリング機能を提供します。

Univer のプラグインを組み合わせて、要件に合った Univer アプリケーションをカスタマイズし、不要なコードの読み込みを回避できます。また、プラグインを作成して Univer の機能を拡張し、個別のニーズに対応することもできます。

#### 関連リンク

1. [CSV インポートプラグインの作成](/blog/csv-import-plugin) プラグインの作成方法を学ぶ
2. [Univer アーキテクチャ](/blog/univer) Univer のアーキテクチャ設計について詳しく学ぶ

### スナップショット

Univer でドキュメントを読み込むには、スナップショットを読み込む必要があります。各種のドキュメントはそれぞれ独自のスナップショット形式を提供します。形式要件を満たすスナップショットの書き方については、上記の API ドキュメントを参照してください。

1. スプレッドシートのスナップショット形式は [`IWorkbookData`](https://docs.univer.ai/ja-JP/guides/sheets/model/workbook-data.md#iworkbookdata) です。
2. ドキュメントのスナップショット形式は [`IDocumentData`](https://docs.univer.ai/ja-JP/reference/types/document-data.md) です。

機能プラグインは、`resources` フィールドを通じて画像などのリソースを保存できます。詳細については、[プラグインカスタムモデル](/blog/custom-model)を参照してください。

> [!WARNING: 注意事項]
> 注意! Univer
> のスナップショットはデータを保存するためだけに使用されます。実行時の最新のドキュメント状態を反映するものではありません!
> ドキュメントの状態をスナップショットとして保存したい場合は、Facade API
> でスナップショットを保存するメソッドを使用してください。

### コマンド

Univer では、すべてのデータ変更はコマンドを通じて実行する必要があります。コマンドベースのアプローチは、値の変更をより適切に追跡し、元に戻す、やり直す、共同編集などの機能を実装し、関数間の複雑な関連ロジックを処理することができます。

もしコマンドを通じてドキュメントデータを変更したい場合は、[コマンド ID の見つけ方](/blog/find-the-command-id)を参照してください。Facade API を通じてドキュメントデータを変更する場合、Facade API は実際にパラメータを準備し、背後でコマンドを実行します。

> [!WARNING: 注意事項]
> **スナップショットを直接変更しないでください!** これは効果がなく、ビューや UI
> の更新をトリガーしません。データはコマンドまたはFacade API を通じて変更してください。

### Facade API

オフィスアプリケーションの複雑さにより、Univer のアーキテクチャも非常に複雑です。開発者が Univer をより簡単に使用できるようにするために、Facade API を提供しています。これは Univer の第一党プラグインのラッパーであり、開発者が Univer をより簡単に使用できるようにするシンプルなインターフェースを提供します。

Facade API は積極的に改善されています。質問や要件がある場合は、GitHub で issue を提出してください。

Facade API は高レベルの API であり、基礎となる詳細を抽象化しています。一般的なタスクは簡素化されますが、複雑な機能を実装するには、Univer のアーキテクチャを理解し、低レベルの API を直接使用する必要がある場合があります。

#### 関連リンク

1. [Facade API の使用](https://docs.univer.ai/ja-JP/guides/sheets/getting-started/facade.md)
2. [一般 API](https://docs.univer.ai/ja-JP/guides/sheets/features/core/general-api.md)
3. [Univer Sheets API](https://docs.univer.ai/ja-JP/guides/sheets/features/core/sheets-api.md)

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

Univer は、開発者に電子文書アプリケーション向けの柔軟で拡張可能なフレームワークを提供することを目的として、プラグインベースの設計思想を採用しています。このプラグインベースの設計により、Univer は様々な機能モジュールを簡単に統合して、異なるユーザーのニーズに対応できます。しかし、プラグインベースの設計はアプリケーションの複雑さを増し、特に Univer に慣れていない開発者にとっては難しくなります。

このため、Univer は迅速に統合・使用できるよう2つの方法を提供しています：**プラグインモード**と**プリセットモード**です。いわゆる**プリセット**は実際には事前設定されたプラグインの組み合わせであり、複雑な拡張を行わない限り、両方のモードが提供する機能は同じです。

> [!WARNING: 注意事項]
> * **依存関係のバージョンの一致**:
>   プリセットモードとプラグインモードのどちらを使用する場合でも、すべての依存関係のバージョン番号が一致していることを確認する必要があります。
> * **プラグインとプリセットの混在に注意**:
>   プラグインがすでにプリセットに含まれている場合、プリセットを使用する際にそのプラグインを別途インポートする必要はありません。そうしないと、プラグインの競合や機能異常を招く可能性があります。

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

| プラグインモード                          | プリセットモード                     |
| --------------------------------- | ---------------------------- |
| 対応する facade パッケージを手動でインポートする必要がある | facade パッケージを手動でインポートする必要はない |
| 同一機能を持つプラグインの登録順序に注意する必要がある       | プリセットに含まれる機能の登録順序に注意する必要はない  |
| オンデマンド遅延読み込みをサポート                 | 設定したプリセットは初期化時に同期的に読み込まれる    |
