今日の優良食堂
実際に入れて動かして書いた、今日の一膳
ギット飯が代わりに導入・実行・コードまで確かめました
今日の優良食堂 · ギット飯が代わりに導入・分析

codex-team/editor.js

ブロック形式のモダンなテキストエディタで、JSONデータを出力します。

ブロック単位で文章や画像を積み重ねて書いていくと、保存した瞬間にHTMLではなく整理されたJSONが返ってきます。そのデータは、WebだけでなくモバイルアプリやAMPページ、AIチャットボットにもそのまま渡せる手応えを実際に触って確かめられます。公式プラグインは15種類以上提供されており、必要な機能だけを足しながら、CMSやブログの編集画面が思うままに仕上がっていきます。

01 / 概要
何をするものか一文で言うと
ひとことでブロック形式のモダンなテキストエディタで、JSONデータを出力します。

Editor.js はブロック単位でコンテンツを編集できるWYSIWYGエディタです。見出しや画像などの機能はプラグイン(Tool)として分離されており、本体はUIとデータ管理に専念します。編集結果はHTMLではなくクリーンなJSON形式で取得できます。

02 / 構造
どう動くのか中核のしくみ
読み方動きの流れを図と一緒にほどきました。

中心となるのはsrc/components/core.tsです。CoreはBlockManagerやToolbar、Saverなど各モジュールを初期化します。各モジュールはModule基底クラスを継承します。設定とイベントバスはコンストラクタ経由で各モジュールに渡されます。ブロックの種類はTool factoryとcollectionで管理されます。HeaderやImageなど外部パッケージを登録すると機能が拡張できます。編集時はPopoverコンポーネント群がツールバーや変換メニューの表示を担います。editor.save呼び出し時には、Saverモジュールがブロック内容をJSONへ変換します。変換の際はSanitizerが不要なHTMLを取り除きます。最終的なAPIはcodex.tsのexportAPIでプロトタイプに差し替えられます。これによりeditor.blocksやeditor.saveという形で外部にメソッドが公開されます。

03 / 体験
入れるとこんな体験になりますギット飯が実際にたどった順序
所要ギット飯が実際に導入・実行しながらたどった順序です。
  1. STEP 01

    example.htmlのようにEditorJSへtoolsを渡して初期化すると、div#editorjsにブロック編集UIが表示されます。

  2. STEP 02

    本体にはHeaderやImageなどのツールが含まれていないため、別パッケージを導入しないと見出しや画像ブロックは使えません。

  3. STEP 03

    example/example.htmlを開くと、CDNから各ツールを読み込む構成が分かります。

  4. STEP 04

    editor.save呼び出し後、typeとdataを含むJSONがPromiseで得られます。

  5. STEP 05

    yarn build:testに続けてcypress runを実行すると、ビルド済みのeditorjs.umd.jsでE2Eテストが自動実行されます。

  6. STEP 06

    yarn devでVite開発サーバーが起動し、ソースを編集すると変更が即座に反映されます。

04 / 成果物
何が手に入るのか導入後に手元に残るもの

new EditorJSを初期化すると、ブロック単位で編集できるUIがその場で手に入ります。editor.save呼び出しでは、blocksの配列にtypeとdataを持つクリーンなJSONが返ります。見出しや画像などの実際のブロック機能は、別パッケージのToolを追加して初めて使えるようになります。

05 / 注意
ここは先に知っておいてください先に知っておくとよいこと
正直なところ誰にでも合うとは言いにくいところです。
01

コア単体には段落ブロックしか標準搭載されておらず、見出しや画像などのブロックは別パッケージのToolを個別に追加する必要があります。

02

ビルドはViteで行い、E2EテストはCypressでdist生成後に実行する構成のため、試すには一度ビルド手順を通す必要があります。

03

TypeScriptで書かれており、types配下の型定義に依存するため、プレーンJSで雑に使うと型の恩恵は得られません。

06 / 結論
ギット飯の結論食べてみる価値のある一膳か
ギット飯の最終判断優良食堂

ブロック単位でコンテンツを編集し、HTMLではなくJSONとして保存したいCMSやノートアプリの開発者に向いています。コアの実装はModule基底クラスやTool factory、Popoverコンポーネントなど、設計意図がソースから明確に読み取れます。そのため実機で動かさなくても設計の信頼性は判断できます。ただし実際の見た目や操作感は、見出しや画像など各Toolパッケージを組み合わせて初めて確認できます。

今日の残りの一膳
SUBSCRIBER LIBRARY
これまでに検証した優良食堂を一堂に

4 つの関門を通った優良食堂がすべてバックナンバーに集まっています。いちばん新しい一膳はどなたでも無料で読め、それより前の優良食堂の検証の根拠・詳しい解説は ギット飯 プレミアムのご購読ですでに開いています。

優良食堂バックナンバー →
リポジトリ詳細🧪 ひと言で味見する