Visual JSON — ビジュアルJSONエディタ

Library

概要

Visual JSONは「見たまま編集できる」JSONエディタを目指すオープンソースプロジェクトです。コアはヘッドレスなツリーモデルと操作(operations)・スキーマ型を提供し、UIはReact向けコンポーネント群として分離されています。この設計により、エディタ部分を自由に組み替えたり、カスタムレンダラーで独自UIに差し替えたりすることが可能です。スキーマ認識機能により、入力補助や型チェックを効かせた編集体験をアプリケーションに簡単に埋め込めます。(約300字)

GitHub

リポジトリの統計情報

  • スター数: 49
  • フォーク数: 3
  • ウォッチャー数: 49
  • コミット数: 11
  • ファイル数: 16
  • メインの言語: TypeScript

主な特徴

  • ヘッドレスなコア(@visual-json/core)とUI(@visual-json/react)の分離による高い柔軟性
  • スキーマ対応のツリーモデルで型に沿った編集が可能
  • React向けコンポーネント(TreeView、FormView、DiffViewなど)で高速に組み込み
  • TypeScriptで型安全に拡張・組み込みが可能

技術的なポイント

Visual JSONはモノレポ構成(packages 配下に core と react 等)で、コア機能と表示層を明確に分離しています。コアパッケージは「ヘッドレス」設計を採り、内部的にはツリーベースのデータモデルを持ち、編集操作(ノードの追加・削除・移動、値の更新など)を抽象化した操作APIを提供します。これにより、編集ロジックや検証ロジックをUIから切り離して再利用でき、非同期処理や外部ストレージとの同期などを容易に組み込めます。

スキーマ周りは「スキーマ型」を通じてノードの構造や期待される値の型を定義でき、UI側はそれを参照して入力コントロールやバリデーション、補完の振る舞いを決定します。Reactパッケージはこのコアを消費して、TreeView(ツリー表示)、FormView(フォーム形式の編集)、DiffView(差分表示)などのコンポーネントを提供しているため、標準的な編集体験をそのまま組み込めます。コンポーネント群はカスタムレンダラーやプラグイン的な拡張ポイントを想定した作りになっており、特定キーや型に対する専用UIの差し替えが簡単です。

開発体制・ツールチェーンにはTypeScriptによる型安全性、changesets を用いたバージョン管理/リリース補助、husky を用いたGitフック運用などが見られ、モノレポの運用や公開パッケージの管理に配慮しています。これにより、複数パッケージ間での変更を追跡しつつ、個別パッケージを独立して利用・テストできます。

実際の利用シナリオとしては、設定画面や管理画面に埋め込む構成が想定されます。ホストアプリはコアの操作APIを呼び出して状態管理や永続化を行い、Reactコンポーネントはその状態を表示・編集します。差分ビューを使えば、ユーザーが行った変更のレビューやコード生成前の確認に活用できます。拡張のポイントは主に(1)カスタムスキーマ/型の追加、(2)レンダリングコンポーネントの差し替え、(3)外部バリデーションや保存戦略の差し込み、の3つで、どれもコアとUIの分離により実装負担を低く抑えられます。(約1,100〜1,500字相当)

プロジェクトの構成

主要なファイルとディレクトリ:

  • .changeset: dir
  • .gitignore: file
  • .husky: dir
  • AGENTS.md: file
  • LICENSE: file

…他 11 ファイル

(パッケージ構成の例)

  • packages/core: ヘッドレスツリーモデル、操作API、スキーマ型
  • packages/react: TreeView、FormView、DiffView 等のReactコンポーネント
  • その他: リリース管理や開発ツール設定ファイル

まとめ

スキーマ認識とヘッドレス設計で高い組み込み性を持つ、拡張しやすいビジュアルJSONエディタです。(約50字)

リポジトリ情報:

READMEの抜粋:

visual-json

The visual JSON editor. Schema-aware, embeddable, extensible.

Packages

Package Description
@visual-json/core Headless tree model, operations, and schema types
@visual-json/react React UI components (TreeView, FormView, DiffVie...