GitHub で見る
各リポジトリのコード・Issue・リリース情報を確認できます。
AI エージェント駆動の UI 開発プラットフォーム。
JsonUI は、AI エージェントが UI コードを書くことを前提に設計された開発プラットフォームです。仕様書ファーストのワークフローと、UI 生成・検証を担う専門エージェント群、CLI を組み合わせて、1 つの仕様から iOS (SwiftUI / UIKit)・Android (Jetpack Compose / XML)・Web (React + Tailwind) のネイティブ UI、UI テスト、ドキュメントを一括生成します。
01 / What is JsonUI
多くのクロスプラットフォームフレームワークが「共通の抽象レイヤ」を提供するのに対し、JsonUI は仕様 (JSON) をソースオブトゥルースとし、プラットフォームごとにネイティブコードを生成します。実行時のブリッジや独自ランタイムを持たないため、各プラットフォームのネイティブ性能と表現力をそのまま活かせます。
生成対象は UI コードだけではありません。同じ JSON 定義から、UI テストコード、ドキュメント、型付きのプレビューやスニペットまでが一括生成されます。仕様と実装の乖離が構造的に起きにくい設計です。
02 / Philosophy
AI にコードを書かせるアプローチには、同じ仕様から出力するコードに揺れが出る、という根本的な問題があります。プロンプトを工夫しても、LLM の出力は確率的に変動します。
JsonUI のアプローチは、AI にルールを守らせるのではなく、ルールを破れない構造にすることです。JSON スキーマで UI を定義し、CLI がコード・テスト・ドキュメントを決定論的に生成します。AI は「スキーマをどう書くか」の領域だけを担当し、コード生成そのものには触れません。
さらに、専門化された AI エージェント群がスキーマ設計・レビュー・リファクタリングを分業します。各エージェントはツールレベルで操作範囲が制限されており、担当外の領域を書き換えることができません。これにより、同じ要件から何度生成しても出力が一貫します。
AI にルールを守らせるのではなく、ルールを破れない構造にする。
03 / Ecosystem
JsonUI は複数のリポジトリで構成されています。すべて TaiKim の GitHub で公開されています (TANOSYS リードエンジニアが個人で開発・保守)。
| カテゴリ | リポジトリ | 用途 |
|---|---|---|
| コアライブラリ | SwiftJsonUI | iOS (SwiftUI + UIKit) |
| コアライブラリ | KotlinJsonUI | Android (Jetpack Compose + XML) |
| コアライブラリ | ReactJsonUI | Web (React + Tailwind CSS) |
| CLI | jsonui-cli | sjui / kjui / rjui / jsonui-test / jsonui-doc を束ねる統合 CLI |
| AI エージェント | JsonUI-Agents-for-claude | Claude Code 用のエージェント |
| AI エージェント | JsonUI-Agents-for-Codex | OpenAI Codex CLI 用のエージェント |
| テストドライバ | jsonui-test-runner-ios | iOS (XCUITest) |
| テストドライバ | jsonui-test-runner-android | Android (UIAutomator) |
| テストドライバ | jsonui-test-runner-web | Web (Playwright) |
| 開発補助 | swiftjsonui-helper | VS Code 拡張 (補完・ホバー) |
04 / Demo
最小の JSON 定義から、3 プラットフォームで出力されるコードを並べました。実際のテンプレートやマッピングは各リポジトリの README で詳しく説明されています。
{
"type": "view",
"children": [
{ "type": "text", "text": "Hello" },
{ "type": "button", "label": "Tap" }
]
} VStack {
Text("Hello")
Button("Tap") { /* action */ }
} Column {
Text("Hello")
Button(onClick = { /* action */ }) {
Text("Tap")
}
} <div className="flex flex-col"> <span>Hello</span> <button type="button">Tap</button> </div>
上記コードは説明のための象徴的な出力例で、実際の CLI 出力と完全一致するとは限りません。各プラットフォームの現行バージョンでの出力は各リポジトリの README / サンプルをご参照ください。
05 / Get involved
各リポジトリのコード・Issue・リリース情報を確認できます。
ドキュメントサイトは準備中です。公開次第、こちらからリンクします。
ドキュメント (準備中)
機能要望・不具合は GitHub Issues で受け付けています。商用利用のご相談は TANOSYS へ。