プロジェクトのオーサリングと保存 — CLI / JSON / 本番 / OSS
作成日: 2026-06-10 / 更新日: 2026-06-10
「プロジェクトをどう編集し、どこに保存するか」を 1 枚にまとめる。作者(または Claude Code 等の AI エージェント)が編集する仕組みと、本番のデータ経路、そしてOSS / ローカルファーストの方向性を区別する。
早見表
| 観点 | ノベルプロジェクト | MomijiUI 宣言型ゲーム |
|---|---|---|
| 正本(保存先) | DB(Project.data Json) | JSON ファイル(games/<id>/screens/*.json 他) |
| 編集の仕組み | CLI(→ API → DB)/ JSON を export→編集→import | JSON ファイルを直接 Write/Edit |
| AI 検証の根拠 | GET /api/editor-schema + _ai_context | GET /api/ui-schema(momiji-schema.json) |
| 本番再生 | 公開時にバンドルを blob へ(bundleBlobPath) | GameHost(kaedevn_game / web-momiji)が JSON を直読み |
1. データの正本と本番経路(実体)
- 編集中のプロジェクト:
Project.data Json @default("{\"pages\":[]}")(apps/hono/prisma/schema.prisma)。エディタ(apps/editor)は API 経由で DB に自動保存。正本は DB。 - 公開作品(Work):公開時に
buildBundle→uploadBundleAtomicでコンパイル済みバンドルを blob ストレージへ上げ、bundleBlobPathで参照(apps/hono/src/routes/works.ts)。再生はこのバンドルを読む。 - つまり 本番=ホステッド(DB(JSON) + 公開バンドル(blob))。「プロジェクトは JSON」だが、それはファイルではなく DB の中の JSONである点に注意。
2. オーサリングの仕組み(= OSS として公開予定)
プロジェクト編集は GUI エディタだけでなく、スクリプト言語に依存しない API/CLI/スキーマで完結できるよう設計されている。これにより作者は Claude Code 等の AI エージェントで直接編集できる。これらの仕組みは OSS 公開の対象(OSS戦略 / ロードマップ Phase 7)。
2a. CLI(→ API → DB)
scripts/cli/* のコマンドを実行して DB を更新する(JSON ファイルを介さない)。
npx tsx scripts/cli/project/init-project.ts --config <genre> # 作成
npx tsx scripts/cli/block/editor-cli.ts blocks <projectId> # 一覧
npx tsx scripts/cli/block/editor-cli.ts add <projectId> <pageId> text --speaker 赤音 --text "おはよう"
npx tsx scripts/cli/character/character-cli.ts create-from-official <projectId> ...
editor-cli.ts の実体は API 経由(apiGet('/projects/:id') / apiPut('/projects/:id', {title, data}))。API サーバー起動が前提。
2b. JSON ラウンドトリップ(export → 編集 → import)
プロジェクト JSON を取り出し、Claude Code が直接編集して、CLI で書き戻す。
npx tsx scripts/cli/block/editor-cli.ts export <projectId> # JSON 出力
# ↑ を Edit/Write で編集
npx tsx scripts/cli/block/editor-cli.ts import <projectId> <pageId> <file> # 取り込み(→ API → DB)
「JSON 直編集」と「CLI/DB 更新」が 1 本の流れでつながるのがこれ。正本は最終的に DB。
2c. 量産パイプライン
projects/<slug>/settings/*.md(設定)を執筆 → Gemini パイプラインが editor-json を生成 → CLI で一括投入。
npx tsx scripts/import-editor-json.ts <editor-json-dir> --project-id <id> # → /api/projects/:id → DB
projects/<slug>/staging.json 等は、この投入の中間成果物(最後は DB に合流)。
2d. AI 向けメタデータ
AI エージェントが安全に編集するための「正本スキーマ」と「動的コンテキスト」:
GET /api/editor-schema— 全ブロック型の定義・制約・enum(認証不要・24h キャッシュ)。GET /api/projects/:idの_ai_context—availableAssets/availableCharacters/availablePages/knownVariables等(読み取り専用)。- ブロック ID は
{type}-{Date.now()}、startは各ページ 1 つ(削除・移動不可)、assetId等は_ai_contextの実在 ID を使う。
3. 別系統:MomijiUI 宣言型ゲーム(JSON ファイルが正本)
クリッカー/カード/パズル等の軽量ゲームは、画面 JSON(MomijiUI)+ actions コントラクトをファイルとして直接編集する(DB を経由しない)。
games/<id>/{game.json, screens/*.json, actions.json}を Write/Edit。GET /api/ui-schema(momiji-schema.json)を根拠に型/enum を守る。- 共有部品
_components/*.jsonはuse参照 →tools/expand-components.mjsでビルド時展開。 - 正本は ファイル。
GameHost(nativekaedevn_game/ webweb-momiji)が無改修で直読みするため、ゲーム固有 C++ ゼロ。 - 詳細は [game-produce 系] と MomijiUI ドキュメント参照。
4. OSS / ローカルファースト(Phase 6–7・予定)
- 方向性:エディタ&プレイヤーを MIT で OSS 公開し、ローカルで完結する開発環境(プロジェクト・キャラ・アセットを JSON で保存、Git で差分、AI エージェントが直接編集)を提供する(ロードマップ Phase 6・7)。
- 現状:ファイルベースの JSON 化(export/import・staging・ローカルファースト)は制作/量産/OSS 準備のツールおよび方向性であり、本番ランタイムの保存先ではない(本番は DB + 公開バンドルのまま)。
local-firstの本番実装は未投入。 - 狙い:上記 2 のオーサリング経路(CLI + editor-schema +
_ai_context+ JSON)がそのまま OSS の編集インターフェースになり、作者が Claude Code 等で書けること。
関連ドキュメント
- 02-app-editor.md — エディタ(ブロック型・ストア)
- 03-app-hono-api.md — API(projects / editor-schema / works・bundle)
- 15-scripts.md —
scripts/cli/*一式 - 26-pkg-web-filters-effects.md — 描画系(effect.json も JSON 宣言型)