BlockNote
TypeCell 傘下のオープンソース — Notion 風ブロック編集を React に載せる
BlockNote は、ブロック指向の React 向けリッチテキストエディタだ。内部は ProseMirror と Tiptap を土台にし、拡張可能なスキーマとモダンな編集体験(スラッシュメニュー、ネスト、D&D など)をまとめて提供する。公式サイト・ドキュメント・例は blocknotejs.org。
リポジトリ直下の package.json では pnpm start がビルド後の playground/dist を配信し、pnpm dev は例エディタの開発サーバを指す。コントリビューション手順は CONTRIBUTING.md に集約されている。
@blocknote/core がドキュメントモデルと編集コアを持ち、@blocknote/react がフックとビュー層を載せる。UI の見た目は @blocknote/mantine、@blocknote/shadcn、@blocknote/ariakit などのテーマパッケージから選ぶ。付随して @blocknote/code-block や @blocknote/server-util、法人向けの @blocknote/xl-* 系列がある。
主要パッケージ一覧
| パッケージ | 役割(要約) | ライセンス |
|---|---|---|
@blocknote/core | ProseMirror / Tiptap ベースのスキーマ・編集ロジック | MPL-2.0 |
@blocknote/react | React 向けフック・BlockNoteView 等 | MPL-2.0 |
@blocknote/mantine | Mantine スタイルの完成 UI | MPL-2.0 |
@blocknote/shadcn | shadcn 系 UI 統合 | MPL-2.0 |
@blocknote/ariakit | Ariakit ベース UI | MPL-2.0 |
@blocknote/code-block | コードブロック周辺の補助パッケージ | MPL-2.0 |
@blocknote/server-util | サーバ用途ユーティリティ | MPL-2.0 |
@blocknote/xl-* | AI・エクスポート等多列機能(例: xl-ai, xl-pdf-exporter) | GPL-3.0 |
README に載っているクイックスタートは、エディタ生成フックとテーマ付きビューを 1 コンポーネントに束ねる形だ。@blocknote/react はスタイルなしの基盤、@blocknote/mantine は CSS と Mantine 連携を提供する。
import { useCreateBlockNote } from "@blocknote/react";
import { BlockNoteView } from "@blocknote/mantine";
import "@blocknote/core/fonts/inter.css";
import "@blocknote/mantine/style.css";
function App() {
const editor = useCreateBlockNote();
return <BlockNoteView editor={editor} />;
}@blocknote/core/fonts/inter.css は BlockNote 同梱の Inter 用スタイルで、アプリ側のタイポグラフィ方針に合わせて差し替え可能。
- アニメーション — ブロック操作時の視覚的フィードバック
- プレースホルダ — 空ブロックでのガイド表示
- ドラッグ&ドロップ — ブロック並べ替え
- ネスト / Tab — インデントと階層構造
- スラッシュ (/) メニュー — ブロック種別のインライン挿入
- フォーマットメニュー — 選択範囲向けの整形 UI
- リアルタイム協調編集 — 共同編集シナリオ向け(Yjs 等のスタックに依存)
GIF デモは上流 README の .resources/*.gif を参照。本ページではオフライン自給のため埋め込みは省略している。
README の表記によれば、大部分は MPL-2.0。ソースを改変した場合は変更ファイルの公開が期待される一方、商用クローズドソースで利用しやすい位置づけだ。
packages/xl-* 配下と npm の @blocknote/xl-* は GPL-3.0。GPL に適合できない場合は商用ライセンスの検討が必要で、詳細は公式の Pricing ページが案内になる。
| 範囲 | ライセンス | メモ |
|---|---|---|
| コア・react・mantine 等 | MPL-2.0 | ファイル改変時はコミュニティ還元が期待される |
xl-* パッケージ | GPL-3.0 | 配布形態によっては別途商用ライセンス |
BlockNote は ProseMirror(Marijn Haverbeke)と Tiptap の上に構築されている。プロジェクトは TypeCell の一部で、NLNet などのスポンサー支援の記載がある。