# Facade API

> アプリケーションに Facade API を追加して、Web SDK の複雑なアーキテクチャを簡潔に扱う方法を紹介します。

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

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

- Requested language: `ja-JP`

- Content language: `ja-JP`

- Documentation version: `1.1.0`

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

---

複雑な要求に対応するため、Univer のアーキテクチャはやや複雑です。そのため、より簡単に使えるパネル API（Facade API）を提供しています。

本節ではアプリケーションに Facade API を追加する方法を説明します。以降の「機能」セクションでは各機能の主要な Facade API を紹介します。すべての Facade API を確認したい場合は、各プラグインの API ドキュメントを参照してください。

> [!WARNING: 注意事項]
> 一部の Facade API は非同期です。特にデータを変更する API は Promise を返すことが多いため、変更直後に値を取得したい場合は `await` や `.then()` を使ってください。Promise を返す API の詳細は各 API 参照を確認してください。

## プラグインモードで Facade API を使う

### インストール

プラグインモードの場合、Facade API の実装は各プラグインに分散され、グローバルな Facade API ルートに登録されます。Facade API を提供しているプラグインについては、必要に応じて対応する Facade 実装を読み込みます。

```typescript
import { FUniver } from '@univerjs/core/facade'

import '@univerjs/ui/facade'
import '@univerjs/docs/facade'
import '@univerjs/docs-ui/facade'
```

> [!WARNING: 注意事項]
> すべてのプラグインに facade パッケージがあるわけではありません。各機能のドキュメントで案内しています。

### 使い方

Facade API は Univer インスタンスのラッパーなので、Univer インスタンスを作成した後に `FUniver` で包みます。

```typescript
import { FUniver } from '@univerjs/core/facade'

const univerAPI = FUniver.newAPI(univer)
```

### 注意事項

すべての Facade API を即時に呼び出せるわけではありません。特定のライフサイクル段階でのみ利用できる API もあります。即時実行して反映されない場合は、適切なライフサイクルで実行してください。

```typescript
const disposable = univerAPI.addEvent(univerAPI.Event.LifeCycleChanged, ({ stage }) => {
  if (stage === univerAPI.Enum.LifecycleStages.Rendered) {
    // ライフサイクルが Rendered のときに実行
  }
  if (stage === univerAPI.Enum.LifecycleStages.Steady) {
    // ライフサイクルが Steady のときに実行
  }
})
```

## プリセットモードで Facade API を使う

プリセットモードで Univer を導入すると、含まれる機能の Facade API が自動的に読み込まれます。Univer インスタンス作成時に `univerAPI` が返るので、そのまま使用できます。
