Visual JSON — ビジュアルJSONエディタ
概要
Visual JSONは「見たまま編集できる」JSONエディタを目指すオープンソースプロジェクトです。コアはヘッドレスなツリーモデルと操作(operations)・スキーマ型を提供し、UIはReact向けコンポーネント群として分離されています。この設計により、エディタ部分を自由に組み替えたり、カスタムレンダラーで独自UIに差し替えたりすることが可能です。スキーマ認識機能により、入力補助や型チェックを効かせた編集体験をアプリケーションに簡単に埋め込めます。(約300字)
リポジトリの統計情報
- スター数: 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字)
リポジトリ情報:
- 名前: visual-json
- 説明: The Visual JSON Editor. Schema-aware, embeddable, extensible.
- スター数: 49
- 言語: TypeScript
- URL: https://github.com/vercel-labs/visual-json
- オーナー: vercel-labs
- アバター: https://avatars.githubusercontent.com/u/108547162?v=4
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... |