設定ファイルの編集UIを自前で実装するのは手間がかかる。JSON Schemaを渡すだけでインタラクティブなターミナルUIを自動生成できるRustライブラリ「schemaui」がGitHubで公開されており、2026年4月26日にv0.10.1がリリースされた。

この記事でわかること:

  • schemauiが解決する課題と概要
  • JSON Schemaの型ごとに生成されるUIコントロール
  • CLIとライブラリのインストール・使い方
  • Web UIモードでブラウザから操作する方法

設定UIを手書きしなくてよくなる

https://github.com/YuniqueUnic/schemaui

アプリケーションの設定ファイル(JSON/YAML/TOML)を編集する場面では、型の不一致や必須フィールドの欠落が実行時エラーにつながりやすい。バリデーションロジックをコードに埋め込むか、専用のフォームUIを自前で実装するかの二択になることが多い。

schemauiはその手間を省く。JSON Schemaを読み込むとスキーマの構造に沿ったTUIフォームが自動生成され、1回の編集ごとにリアルタイムでバリデーションが走る。エラーはフィールドごとに即座に表示されるため、保存前に問題を把握できる。

Rustの人気TUIフレームワーク「ratatui」と「crossterm」、スキーマ検証ライブラリ「jsonschema」を組み合わせて実装されている。

JSON Schemaの型に応じてUIが自動選択される

schemauiはJSON Schema draft-07に対応しており、$refdefinitionspatternPropertiesenum・数値の範囲指定・ネストしたオブジェクトと配列を幅広く処理する。スキーマの型に応じてUIコントロールが自動で決まる。

スキーマ型 生成されるコントロール
string / integer / number インラインテキストエディタ(数値ガード付き)
boolean トグル/チェックボックス
enum ポップアップセレクタ
配列 リスト概要 + オーバーレイエディタ
patternProperties キー/バリューエディタ(スキーマ検証付き)
oneOf / anyOf バリアント選択 + オーバーレイフォーム

トップレベルのプロパティはタブとして表示され、ネストしたオブジェクトはセクションに展開される。複合ノードやキー/バリューコレクションは専用のオーバーレイで編集でき、オーバーレイはスタック構造で管理されるため多段ネストにも対応している。

バリデーションはリアルタイムで動く

jsonschema::Validatorがスキーマを起動時に一度コンパイルする。以降は1回の編集ごとに全フィールドを検証し、エラーはフィールドスコープとグローバルステータスラインの両方に同時表示される。

オーバーレイ内(複合バリアント・キー/バリューマップ・配列エントリ)は独自のサブスキーマバリデータを持ち、親フォームとは独立して検証される。保存操作(Ctrl+S)を行うと変更が親フォームに反映される仕組みだ。

インストールと基本的な使い方

CLIツールschemaui-cli(v0.5.3)はcargoでインストールできる。

cargo install schemaui-cli

JSON Schemaファイルと設定ファイルを指定して起動する。

schemaui --schema ./config.schema.json --config ./config.json

--schemaを省略しても、設定ファイル内の$schemaフィールド(JSON)・#:schemaディレクティブ(TOML)・# yaml-language-server: $schema=...(YAML)からスキーマを自動検出する。リモートのHTTPS URLも参照できる。

ライブラリとしてRustプロジェクトに組み込む場合はCargo.tomlに依存を追加する。

[dependencies]
schemaui = "0.10.1"
serde_json = "1"

SchemaUI::newにスキーマとデータを渡してrunを呼ぶだけで、TUIが起動して編集済みの値が戻ってくる。フォーマットはフィーチャーフラグ(json / yaml / toml)で有効/無効を切り替えられるため、不要な依存を持ち込まずに済む。

Web UIモードでブラウザからも操作できる

webフィーチャーを有効にするとブラウザUIもホストできる。Axumベースのサーバーが起動し、ターミナル環境のないユーザーでも同じスキーマを操作できる。

schemaui web --schema ./config.schema.json

サーバーが起動するとアドレスが出力され、ブラウザからアクセスするとフォームUIが表示される。CLIとライブラリの両方にschemaui-cli web …コマンドとしてラップされており、既存のHTTPスタックへの統合もsession_routerWebSessionBuilderで行える。

MITライセンスのOSSとして公開中

schemauiはMITライセンスのOSSとしてGitHubで公開されており、crates.ioからも入手できる。JSON Schemaさえ用意すれば、設定ファイル編集のためのTUIを一から実装する手間を省ける。コンフィグ管理ツールやDevOps向けCLIに組み込む用途に向いている。