基本概念

Univer Docs のプラグイン、スナップショット、コマンド、Facade API を理解します。エディタの作成手順はインストールと基本的な使い方を参照してください。

基本概念

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

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

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

プラグイン

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

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

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

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

関連リンク

  1. ハイパーリンク(preset モードまたは plugin モードで Docs の機能を追加する方法)
  2. Univer アーキテクチャ

スナップショット

Univer Docs のスナップショット形式は IDocumentData です。本文、文書レベルのスタイル、ヘッダーとフッター、描画、リスト、表、プラグインリソースを記述します。

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

注意事項

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

コマンド

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

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

注意事項

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

Facade API

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

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

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

関連リンク

  1. Facade API の紹介
  2. Facade API の主要メソッド
  3. Univer Docs API の主要メソッド

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

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

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

注意事項

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

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

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

このガイドはいかがですか?

© 2026 DreamNum Co., Ltd.