Files
univer/docs/readme/ja-JP.md
T

26 KiB
Raw Blame History

Univer

スプレッドシート、ドキュメント、プレゼンテーションを構築するためのフルスタックでアイソモーフィックなオフィス SDK。

Univer は、プラグインアーキテクチャ、Canvas ベースのレンダリング、 数式エンジン、ブラウザと Node.js の両方で使える Facade API により、 組み込み型の生産性体験を構築できます。

English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Español

📖 ドキュメント | ショーケース | 📘 API Reference | 📝 ブログ

Release License Build CodeFactor Codecov

Stars Contributors Issues Last Commit

Discord Twitter Open Collective

Trendshift

Univer とは?

Univer は、自分のプロダクト内にオフィスアプリケーションを作るためのオープンソース SDK です。スプレッドシート、ドキュメント、プレゼンテーション体験に必要な構成要素を提供しつつ、ホスト型アプリや固定 UI を強制しません。

Univer は次のような場面に適しています。

  • SaaS、社内ツール、BI ワークフロー、AI アプリケーションにスプレッドシートやドキュメント編集を組み込む。
  • ブラウザと同じアーキテクチャで、サーバー上のワークブック/ドキュメント処理を実行する。
  • 必要な機能だけをプラグインで組み合わせる、または presets で素早く始める。
  • カスタムプラグイン、コマンド、サービス、UI コンポーネント、Facade API で振る舞いを拡張する。

Univer は単なるスプレッドシートファイルビューアではありません。独自の生産性インターフェースを構築するためのフレームワークです。

🌟 Highlights


大規模な編集面に対応
Canvas ベースのレンダリングと専用の数式エンジンにより、複雑なワークブックでも応答性を保ちます。
🧩
プラグイン前提の設計
必要な機能を組み合わせ、置換、遅延読み込み、拡張できます。
🤖
Headless AI 基盤
Node.js でワークブックとドキュメントのロジックを実行し、エージェント、自動化、サーバーサイドワークフローを支えます。
🛠️
プロダクト向け SDK
フレームワークアダプター、Facade API、presets、headless runtime が実際の統合経路に対応します。
🌗
Dark mode 対応
UI コンポーネントとレンダリングエンジンの両方がライト/ダークテーマに対応します。
🔌
統合 Facade API
ブラウザと Node.js の両方で、ワークブック、範囲、数式、ドキュメントを一貫した API で扱えます。

🚀 なぜ Univer なのか?

  • アイソモーフィック設計:ブラウザの UI アプリと Node.js のヘッドレス処理の両方で動作します。
  • プラグイン優先アーキテクチャ:すべての機能は組み合わせ可能なプラグインとして提供され、追加、削除、置換、遅延読み込みが可能です。
  • Preset Mode による高速な統合:すぐに動くアプリが必要な場合は、univer-presets の curated plugin bundle を利用できます。
  • Plugin Mode による完全な制御:カスタム読み込み、より小さなバンドル、深い統合が必要な場合は、パッケージを手動で組み合わせられます。
  • Facade API:ワークブック、ワークシート、範囲、ドキュメント、数式、コマンド、イベントを高レベル API で扱えます。
  • Canvas レンダリングエンジン:大規模な編集可能ドキュメント面をサポートし、複数の文書タイプでレンダリング層を共有します。
  • 拡張可能な UIReact、Vue、Web Components、各種フレームワークのアプリケーションシェルに統合できます。

クイックスタート

多くのアプリケーションでは Preset Mode から始めるのがおすすめです。パッケージを手動で組み合わせ、プラグイン登録を制御したい場合は Plugin Mode を使います。

Preset Mode(推奨)

Preset は、必要な Facade API 登録とスタイルを含む Univer プラグインの curated collection です。

pnpm add @univerjs/presets @univerjs/preset-sheets-core
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'
import UniverPresetSheetsCoreEnUS from '@univerjs/preset-sheets-core/locales/en-US'
import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'

import '@univerjs/preset-sheets-core/lib/index.css'

const { univerAPI } = createUniver({
  locale: LocaleType.EN_US,
  locales: {
    [LocaleType.EN_US]: mergeLocales(UniverPresetSheetsCoreEnUS),
  },
  presets: [
    UniverSheetsCorePreset({
      container: 'app',
    }),
  ],
})

univerAPI.createWorkbook({})
Plugin Mode

Plugin Mode では、パッケージ、スタイルの import、locale の merge、Facade API 登録、プラグイン順序をより低レベルで制御できます。

pnpm add @univerjs/core @univerjs/design @univerjs/docs @univerjs/docs-ui @univerjs/engine-formula @univerjs/engine-render @univerjs/sheets @univerjs/sheets-formula @univerjs/sheets-formula-ui @univerjs/sheets-numfmt @univerjs/sheets-numfmt-ui @univerjs/sheets-ui @univerjs/ui
import { LocaleType, mergeLocales, Univer } from '@univerjs/core'
import { FUniver } from '@univerjs/core/facade'
import DesignEnUS from '@univerjs/design/locale/en-US'
import { UniverDocsPlugin } from '@univerjs/docs'
import { UniverDocsUIPlugin } from '@univerjs/docs-ui'
import DocsUIEnUS from '@univerjs/docs-ui/locale/en-US'
import { UniverFormulaEnginePlugin } from '@univerjs/engine-formula'
import { UniverRenderEnginePlugin } from '@univerjs/engine-render'
import { UniverSheetsPlugin } from '@univerjs/sheets'
import SheetsEnUS from '@univerjs/sheets/locale/en-US'
import { UniverSheetsFormulaPlugin } from '@univerjs/sheets-formula'
import SheetsFormulaEnUS from '@univerjs/sheets-formula/locale/en-US'
import { UniverSheetsFormulaUIPlugin } from '@univerjs/sheets-formula-ui'
import SheetsFormulaUIEnUS from '@univerjs/sheets-formula-ui/locale/en-US'
import { UniverSheetsNumfmtPlugin } from '@univerjs/sheets-numfmt'
import { UniverSheetsNumfmtUIPlugin } from '@univerjs/sheets-numfmt-ui'
import SheetsNumfmtUIEnUS from '@univerjs/sheets-numfmt-ui/locale/en-US'
import { UniverSheetsUIPlugin } from '@univerjs/sheets-ui'
import SheetsUIEnUS from '@univerjs/sheets-ui/locale/en-US'
import { UniverUIPlugin } from '@univerjs/ui'
import UIEnUS from '@univerjs/ui/locale/en-US'

import '@univerjs/design/lib/index.css'
import '@univerjs/ui/lib/index.css'
import '@univerjs/docs-ui/lib/index.css'
import '@univerjs/sheets-ui/lib/index.css'
import '@univerjs/sheets-formula-ui/lib/index.css'
import '@univerjs/sheets-numfmt-ui/lib/index.css'

import '@univerjs/engine-formula/facade'
import '@univerjs/ui/facade'
import '@univerjs/sheets/facade'
import '@univerjs/sheets-ui/facade'
import '@univerjs/sheets-formula/facade'
import '@univerjs/sheets-numfmt/facade'

const univer = new Univer({
  locale: LocaleType.EN_US,
  locales: {
    [LocaleType.EN_US]: mergeLocales(
      DesignEnUS,
      UIEnUS,
      DocsUIEnUS,
      SheetsEnUS,
      SheetsUIEnUS,
      SheetsFormulaEnUS,
      SheetsFormulaUIEnUS,
      SheetsNumfmtUIEnUS,
    ),
  },
})

univer.registerPlugin(UniverRenderEnginePlugin)
univer.registerPlugin(UniverFormulaEnginePlugin)
univer.registerPlugin(UniverUIPlugin, { container: 'app' })
univer.registerPlugin(UniverDocsPlugin)
univer.registerPlugin(UniverDocsUIPlugin)
univer.registerPlugin(UniverSheetsPlugin)
univer.registerPlugin(UniverSheetsUIPlugin)
univer.registerPlugin(UniverSheetsFormulaPlugin)
univer.registerPlugin(UniverSheetsFormulaUIPlugin)
univer.registerPlugin(UniverSheetsNumfmtPlugin)
univer.registerPlugin(UniverSheetsNumfmtUIPlugin)

const univerAPI = FUniver.newAPI(univer)
univerAPI.createWorkbook({})

ページにはコンテナが必要です。

<div id="app" style="height: 100vh"></div>

詳しくは Installation & Basic Usage guidecreateUniver referenceFacade API reference を参照してください。

🧩 Preset Mode と Plugin Mode

選択肢 使う場面 はじめに読むもの
Preset Mode 最小限の設定で Sheets、Docs、Node の動作環境を作りたい場合。 univer-presetsgetting started guide
Plugin Mode パッケージ、プラグイン登録順、遅延読み込み、実行時の構成を厳密に制御したい場合。 このリポジトリの examples/architecture guide
Headless Mode UI なしでサーバー側のワークブック/ドキュメント処理、数式計算、自動化を行いたい場合。 Headless Univer

すべての @univerjs/* パッケージは同じバージョンに揃えてください。Univer Pro パッケージを使う場合も、@univerjs-pro/* のバージョンを揃えてください。

API 互換性、experimental API、internal API、deprecation rules については API Stability Policy を参照してください。

🧭 互換性

  • ブラウザ実行環境Univer は Chrome 88 をターゲットとしてコンパイルされており、Edge >=88、Firefox >=90、Chrome >=88、Safari >=14.1、Electron >=12 で動作することを目指しています。
  • PolyfillsUniver は Intl.Segmenter に依存しています。対象ブラウザや実行環境が対応していない場合は、@formatjs/intl-segmenter などの polyfill を追加してください。
  • ビルドツールVite、esbuild、Webpack 5 を推奨します。package.jsonexports フィールドに対応していないビルドツール(Webpack 4 など)では、追加のパスマッピングが必要になる場合があります。
  • ReactUniver の view layer は React 18 ベースで構築されており、React 18 と 19 をサポートします。React 16.9+ と 17 には最小限の互換サポートを提供します。
  • Node.js runtimeHeadless Univer は Node.js >=18.17.0 をサポートします。この monorepo の開発には Node.js >=22.18 が必要です。

🛠️ 構築できるもの

領域 オープンソースの機能 Univer Pro 拡張
Sheets ワークブック、ワークシート、範囲、選択、数式、数値書式、フィルター、ソート、データ検証、条件付き書式、ハイパーリンク、コメント、検索と置換、ノート、テーブル、描画連携、拡張可能な UI プラグイン。 リアルタイム共同編集、編集履歴、インポート/エクスポート、印刷、チャート、ピボットテーブル、スパークライン、アウトライン、図形、セル内グラフィックス、データコネクタ、サーバーサイド計算、強化された数式機能。
Docs リッチドキュメントモデル、編集 UI、リスト、ハイパーリンク、描画連携、コメント、クイック挿入、共有ドキュメントアーキテクチャ。 共同編集、インポート/エクスポート、印刷、強化されたテーブルとリスト、段組み、コールアウト、コードブロック、引用ブロック、図形、リモートコメントリソース。
Slides プレゼンテーションデータモデルと UI パッケージ。現在も活発に開発中です。 Pro スライドモデルと UI、スライドのインポート/エクスポート、チャートとテーブルのモデル/UI プラグイン、共有の図形編集基盤。
Bases Univer のプラグイン、コマンド、モデルのアーキテクチャ上に、カスタムの構造化データ体験を構築できます。 Base データベースモデル、コマンド、数式連携、ワークベンチ UI、フィールドエディタ、レンダリングエンジンビュー。
Runtime ブラウザアプリ、Node.js ヘッドレス利用、Web Worker/RPC パターン、複数インスタンス、サーバー向け自動化。 共同編集クライアント/サーバーパッケージ、Node.js 共同編集クライアント、Pro サーバーサービス、SSR、計算委譲、サーバーサイド計算、changeset replay ツール。
Integrations React、Vue、Web Components、フレームワークテンプレート、テーマ、ローカライズ、カスタムプラグイン。 Pro presets とエンタープライズデプロイパッケージ。

現在もっとも成熟しているプロダクト面は Sheets です。Docs と Slides も Univer のアーキテクチャを共有し、同じ SDK の中で継続的に進化しています。

🔓 Open Source と Pro

このリポジトリには Univer のオープンソースコアと first-party OSS プラグインが含まれています。Univer Pro は、高度なプロダクトサーフェス、共同編集、サーバー機能、エンタープライズ連携のための商用拡張レイヤーとして別途開発されています。

カテゴリ Open source Univer Pro / commercial
Foundation Core SDK、プラグインシステム、レンダリングエンジン、数式エンジン、Facade API、テーマ、i18n、フレームワークアダプタ。 Pro presets とエンタープライズデプロイパッケージ。
Sheets コアのスプレッドシート編集、数式、数値書式、フィルター/ソート、データ検証、条件付き書式、ノート、テーブル、ハイパーリンク、コメント、描画、検索と置換。 共同編集、編集履歴、インポート/エクスポート、印刷、チャート、ピボットテーブル、スパークライン、アウトライン、図形、セル内グラフィックス、データコネクタ、範囲の前処理、強化された数式エンジン機能。
Docs ドキュメントモデルと編集 UI、リスト、ハイパーリンク、コメント、クイック挿入、描画連携。 共同編集、インポート/エクスポート、印刷、強化されたテーブル/リスト、段組み、コールアウト、コードブロック、引用ブロック、図形、リモートスレッドコメントリソース。
Slides OSS のプレゼンテーションモデルと UI パッケージ。 Pro スライドモデル/UI パッケージ、スライドのインポート/エクスポート、チャート、テーブル、再利用可能な図形エディタ UI。
Bases カスタムのデータ中心プロダクト向けの拡張可能なプラグインアーキテクチャ。 Base データベースコアモデル、コマンド、ミューテーション、数式連携、ワークベンチ UI、フィールドエディタ、レンダリングエンジン連携。
Server and runtime Node.js ヘッドレスランタイム、RPC/Web Worker パターン、サーバー向け自動化のプリミティブ。 共同編集サーバー、Node.js 共同編集クライアント、SSR サービス、計算委譲、サーバーサイド計算、共同編集 changeset replay ツール。

Pro 機能は Univer Pro guide に記載されています。ここでは OSS パッケージの範囲を明確にするため、意図的に分けて説明しています。

Boundary principles:

  • このリポジトリの OSS パッケージは Apache-2.0 license の下で単独利用できることを意図しています。Univer Pro は任意であり、公開 OSS SDK API の利用に Pro は不要です。
  • OSS パッケージの bugs、regressions、security issues は、関連する Pro 機能がある場合でも OSS リポジトリで報告・修正されるべきです。
  • OSS documentation は、Pro-only capabilities が公開 @univerjs/* packages に含まれるかのように示すべきではありません。Pro-only APIs、packages、deployment paths は明示的に名前を出してください。
  • OSS feature に Pro enhancement がある場合でも、OSS behavior は独立して文書化し、commercial docs を先に読まなくても open-source surface を評価できるようにします。

🌐 エコシステム

📦 リポジトリ構成

.
├── packages/      コアパッケージ、エンジン、文書タイプ、UI プラグイン、機能プラグイン
├── examples/      開発用のローカルブラウザ/Node.js デモ
├── common/        共有内部ツール、mock data、storybook、ユーティリティ
├── e2e/           Playwright とビジュアル比較テスト
├── tests/         追加の統合テストプロジェクト
└── docs/          アーキテクチャメモ、画像、リポジトリ内ドキュメント

パッケージごとの README は packages/ 配下の各パッケージにあります。

🧑‍💻 開発

必要環境:

  • Node.js >=22.18
  • pnpm >=10
git clone https://github.com/dream-num/univer.git
cd univer
pnpm install
pnpm dev

よく使うコマンド:

コマンド 用途
pnpm dev ローカル examples アプリを起動します。
pnpm build 内部 common パッケージを除いて workspace パッケージをビルドします。
pnpm test Turbo 経由でユニットテストを実行します。
pnpm typecheck Turbo 経由で TypeScript チェックを実行します。
pnpm lint ESLint を実行します。
pnpm test:e2e Playwright テストを実行します。
pnpm storybook:dev UI コンポーネント開発用の Storybook を起動します。

Pull request を作成する前に CONTRIBUTING.md を読んでください。

📝 Contributor Notes

より深い変更を行う前に読む価値のあるリポジトリ内メモです。

  • Building Isomorphic Univer:ブラウザ、Node.js、UI、共有プラグインロジックの分離方針。
  • API Stability Policystable、experimental、internal、deprecated、breaking-change expectations。
  • Contributing to Facade APIFUniverFWorkbookFRange などの Facade API 設計方針。
  • Naming Convention:ファイル、フォルダ、インターフェース、プラグイン、コマンド、DI token の命名規則。
  • Fixing Memory Leaks:Univer インスタンスでよくあるメモリリークパターンとデバッグ手順。
  • Architecture TLDRs:数式エンジン、Web Worker、権限、選択、ref-range の簡潔な設計メモ。

💬 コミュニティ

参加する前に Code of Conduct を読んでください。

🔒 セキュリティ

セキュリティ上の問題を見つけたと思われる場合は、Security Policy に従ってください。

❤️ スポンサー

Univer はコミュニティとスポンサーによって支えられています。Open Collective からプロジェクトを支援できます。

Sponsor 0 Sponsor 1 Sponsor 2 Sponsor 3 Sponsor 4 Sponsor 5 Sponsor 6

Backer 0 Backer 1 Backer 2 Backer 3 Backer 4 Backer 5 Backer 6

📄 ライセンス

Copyright (c) 2021-present DreamNum Co., Ltd.

Apache-2.0 ライセンスの下で公開されています。