← ソースコード説明書

プロジェクトのオーサリングと保存 — CLI / JSON / 本番 / OSS

作成日: 2026-06-10 / 更新日: 2026-06-10

「プロジェクトをどう編集し、どこに保存するか」を 1 枚にまとめる。作者(または Claude Code 等の AI エージェント)が編集する仕組みと、本番のデータ経路、そしてOSS / ローカルファーストの方向性を区別する。

早見表

観点ノベルプロジェクトMomijiUI 宣言型ゲーム
正本(保存先)DBProject.data Json)JSON ファイルgames/<id>/screens/*.json 他)
編集の仕組みCLI(→ API → DB)/ JSON を export→編集→importJSON ファイルを直接 Write/Edit
AI 検証の根拠GET /api/editor-schema_ai_contextGET /api/ui-schemamomiji-schema.json
本番再生公開時にバンドルを blob へ(bundleBlobPathGameHost(kaedevn_game / web-momiji)が JSON を直読み

1. データの正本と本番経路(実体)

  • 編集中のプロジェクトProject.data Json @default("{\"pages\":[]}")apps/hono/prisma/schema.prisma)。エディタ(apps/editor)は API 経由で DB に自動保存。正本は DB。
  • 公開作品(Work):公開時に buildBundleuploadBundleAtomicコンパイル済みバンドルを 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_contextavailableAssets / 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-schemamomiji-schema.json)を根拠に型/enum を守る。
  • 共有部品 _components/*.jsonuse 参照 → tools/expand-components.mjs でビルド時展開。
  • 正本は ファイルGameHost(native kaedevn_game / web web-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 等で書けること。

関連ドキュメント

Ad: stickyBottom (728x90)
kaedevn - ノベルゲームを作れるプラットフォーム