紙芝居アプリ 3.2 ソフトウェアメンテナンスガイド
Copyright © 2026 Hiroya Kubo. この文書はCC BY-SA 4.0で提供します。
このガイドは、TM紙芝居の成果物とビルダーを利用し、アプリ、SB3ソース、 ビルダー、Webサイト、ドキュメントを変更・検証・公開するソフトウェア開発者向けの 作業資料です。次を本書の責務とします。
本書では、kubohiroya/tm-kamishibaiを「本体リポジトリ」、
kubohiroya/tm-kamishibai-docsを「文書リポジトリ」と呼びます。コマンドは、
対象ファイルを管理する側のリポジトリで実行します。
- 成果物プロファイルとSB3・台本変換ビルダーの外部契約
- リポジトリの開発環境、構成、共通フロー、変更対象別手順
- テスト、成果物検証、GitHub Pagesとnpmの公開手順
- 開発時のトラブルシューティング、ライセンス、秘密情報の扱い
汎用アプリSB3のtarget、変数、event、custom block、呼出し関係、状態遷移は 紙芝居アプリ 3.2 内部仕様書を正本とします。台本の書式と コマンド仕様は台本DSLマニュアルと コマンドリファレンスを参照してください。本書には、 これらの内部構造やDSL項目を重複して列挙しません。
対象アプリ: TM Kamishibai 3.2.x
受理するDSL宣言: kamishibai=3.1、kamishibai=3.2
過去のバージョンからの変更はhistory.mdを参照してください。
このガイドの章は、次の5つの区分で並んでいます。
| 区分 | 対象 | 読み方 |
|---|---|---|
| 導入 | 管理範囲、開発環境、リポジトリ構成、共通フロー | 初めて開発するときに、この順に読む |
| 利用契約 | 成果物プロファイル、ビルダーのCLI/API/マニフェスト | 成果物を生成・利用するときに参照する |
| 変更対象別手順 | アプリSB3、機能拡張、ビルダー実装、文書とサイト | 変更対象に応じて、必要な章だけを読む |
| 検証と公開 | 自動・手動検証、GitHub Pages、npm、障害時の扱い | PRとリリースの完了条件として読む |
| 参照 | 関連プロジェクト、ライセンス、秘密情報、関連ドキュメント | 関連する規約や資料を探すときに参照する |
「導入」では、管理範囲を確認し、開発環境とリポジトリを把握してから、共通の 開発フローへ進みます。「利用契約」はビルダー実装の変更手順ではありません。 「変更対象別手順」は、この順に実施する一連の工程ではなく、変更対象ごとに独立した 手順です。「検証と公開」は対象変更に必要な確認を選び、標準チェックへ合流します。
管理範囲と責務を理解する
本体リポジトリが管理するものは次のとおりです。
- 物語固有の台本やアセットを含まない、汎用の紙芝居アプリ
- アプリSB3の展開ソースと、配布用SB3を生成する設定
- 台本と画像・音声をSB3へ組み込むnpmパッケージ
- アプリ・文書・サンプルへの公開入口と配布用SB3
- 上記を検証する自動テスト
文書リポジトリは、一般向け、DSL作成者向け、開発者向け、体験会向けの文書ソース、 共有画像、Vivliostyleビルド、PDF、文書Pagesを管理します。
関連プロジェクトとの境界は次のとおりです。
| 対象 | 管理場所 | このリポジトリとの関係 |
|---|---|---|
| SB3の展開・検証・決定的再構築 | kubohiroya/sb3-toolchain |
固定依存として利用する。「sb3-toolchain」を参照 |
| 文書ソース、図版、HTML/PDF | kubohiroya/tm-kamishibai-docs |
本体のバージョン・固定スナップショットを参照し、独立してビルド・公開する |
| 浦島太郎などの公開用物語 | kubohiroya/tm-kamishibai-samples |
stories/urashima/で台本、固有アセット、生成物を管理する |
| 埋め込み機能拡張 | 各機能拡張のGitHubリポジトリまたはnpmパッケージ | app/には検証済み成果物と由来情報だけを同期する |
| TurboWarp Extension Galleryの機能拡張 | Galleryの公開URL | SB3から外部URLを参照する |
公開サンプル の固有ファイルを本体へコピーしません。本体の汎用性と、サンプルの独立した更新・配布を 維持します。
依存バージョン、スクリプト、公開対象の正本はpackage.jsonとpnpm-lock.yamlです。
文書には特定コミットを転記せず、必要なときに確認します。
pnpm why @kubohiroya/sb3-toolchain
git diff -- package.json pnpm-lock.yaml
開発環境を準備する
必要な環境
- Node.js 24.0.0以上
- pnpm 11
- 文書をビルドする場合は、PDF生成に利用できるChromeまたはChromium
- Gitと、GitHub操作に利用するGitHub CLI
corepack enable
pnpm install
CIではロックファイル以外の依存解決を許可しません。
pnpm install --frozen-lockfile
本体リポジトリの初回セットアップ後は、展開SB3ソースとテスト用SB3を確認します。
pnpm sb3:check
pnpm test
文書リポジトリでは、macOSの通常のGoogle ChromeをPDF生成に自動利用します。
別のブラウザを使う環境では、
VIVLIOSTYLE_CHROME_PATHへ実行ファイルの絶対パスを設定します。
リポジトリ構成を把握する
| パス | 役割 |
|---|---|
app/ |
紙芝居アプリSB3のGit管理上の正本 |
app/project.source.json |
整形済みScratchプロジェクト |
app/assets/ |
汎用アプリ自身が使用する画像・音声 |
app/extensions/ |
埋め込み機能拡張の同期済みJavaScript |
app/embedded-extensions.json |
埋め込み機能拡張の管理情報 |
app/sb3-source.json |
SB3展開ソースのマニフェスト |
src/builder/ |
npmで公開するSB3・台本変換API |
bin/ |
npm CLIのエントリーポイント |
scripts/ |
公開入口、配布物のビルドと検証 |
site/ |
本体GitHub Pagesの静的入力 |
test/ |
ビルダー、SB3、VM、公開契約のテスト |
文書リポジトリでは、読者別のdocs/user-guides/、docs/dsl-author-guides/、
docs/developer-guides/、開催日別のdocs/workshops/をソースとし、scripts/で
全文書のHTMLと、docs/workshops/配下の体験会資料だけのPDFを生成します。
次の場所は生成物であり、Git管理上の正本ではありません。
| パス | 内容 |
|---|---|
tmp/kamishibai.sb3 |
TurboWarp編集と自動テストに使うSB3 |
dist/ |
本体GitHub Pagesへ公開する入口、配布用SB3 |
文書リポジトリのdist/は文書Pages、output/pdf/は印刷用PDFのローカル確認先です。
共通の開発フローに従う
すべての変更はGitHub Issueへ受け入れ基準とロールバック手順を記録し、小さなブランチと PRへ分けます。
- 最新の
mainから作業ブランチを作る。 pnpm install --frozen-lockfileで依存を復元する。- 変更対象に近いテストを先に実行する。
- 生成物ではなく正本を変更する。
- 差分と生成結果を確認する。
- 標準チェックと必要な手動確認を行う。
- Issueの運用ログとDoDを更新してPRを作成する。
無関係な変更や未追跡ファイルをまとめてコミットしません。SB3の取り込みや成果物の
置換を行う前には、必ずgit statusと対象パスの差分を確認します。変更対象ごとの
テストと公開前チェックは「変更を検証する」を
参照してください。
成果物プロファイルを理解する
紙芝居の成果物は、台本と物語固有アセットをどこに保持するかで分けます。
| プロファイル | 例 | 台本 | 物語固有アセット | 主な用途 |
|---|---|---|---|---|
generic |
kamishibai.sb3 |
非埋め込み | 非埋め込み | 本体が配布する汎用雛形 |
editor |
_urashima.sb3 |
非埋め込み | 埋め込み | 物語作成者の編集・動作確認 |
player |
urashima.sb3 |
埋め込み | 埋め込み | 配布・再生、Packager Web版 |
genericはapp/から生成し、特定の物語を含めません。ビルダーAPIとCLIが受け付ける
profileはeditorまたはplayerです。
editorとplayerは同じベースSB3、台本、アセットロックから生成します。両者の
変換済み台本とアセット参照を分岐させません。playerは組み込み台本を予約変数へ保存し、
タイトル操作後にファイル選択なしで開始します。
playerへ台本とアセットを組み込んでも、TurboWarp TMモデル、カメラ、外部サービスまで
自動的にオフライン化されるわけではありません。残るオンライン依存は成果物マニフェストと
公開ページへ明記します。
SB3・台本変換ビルダーを利用する
この章はビルダー利用者に対する外部契約を示します。ビルダーの実装を変更する手順は 「ビルダーの実装を変更する」を 参照してください。汎用アプリSB3の内部構造は本章の対象外です。
導入
利用可能なバージョンを確認し、消費側で明示的に固定します。
npm view @kubohiroya/tm-kamishibai version
pnpm add --save-exact @kubohiroya/tm-kamishibai@<VERSION>
生成したロックファイルをコミットし、CIではpnpm install --frozen-lockfileを使います。
CLI
pnpm exec tm-kamishibai build-sb3 \
--base kamishibai.sb3 \
--script source.txt \
--assets assets.lock.json \
--output dist/sample \
--profile editor
--outputは拡張子を含まないベース名です。次の3ファイルを同じtransactionとして
生成します。
dist/sample.sb3
dist/sample.txt
dist/sample.manifest.json
| オプション | 意味 |
|---|---|
--allow-file-root DIR |
file:の許可ルートを追加。複数回指定可能 |
--allow-http |
平文HTTPを明示的に許可 |
--timeout-ms N |
1リクエストのタイムアウト |
--max-asset-bytes N |
1アセットの最大バイト数 |
--max-script-bytes N |
組み込み台本の最大バイト数 |
--max-redirects N |
HTTPリダイレクト上限 |
完全な一覧はpnpm exec tm-kamishibai --helpで確認します。
JavaScript API
import {
Sb3BuilderError,
buildSb3Bundle,
validateAssetManifest,
validateBundle,
} from '@kubohiroya/tm-kamishibai/builder';
const result = await buildSb3Bundle({
baseSb3: 'kamishibai.sb3',
sourceScript: 'source.txt',
assetManifest: 'assets.lock.json',
outputDirectory: 'dist',
outputName: 'sample',
profile: 'editor',
});
console.log(result.outputPaths);
baseSb3とsourceScriptにはファイルパスまたはfile: URLを指定できます。
assetManifestにはファイルパス、file: URL、または検証対象のJavaScriptオブジェクトを
指定できます。相対file:を含むオブジェクトではmanifestBaseDirectoryも指定します。
ネットワーク・ファイル取得はallowedFileRoots、allowHttp、requestTimeoutMs、
maxAssetBytes、maxRedirectsで制限できます。playerの組み込み台本上限は
maxEmbeddedScriptBytesで変更できます。
buildSb3BundleはmanifestとoutputPathsを返します。入力・アセット・出力の問題は
Sb3BuilderErrorとして処理段階とアセット情報を保持します。
アセットマニフェスト
入力マニフェストはformatVersion: 1と1件以上のassetsを持ちます。
{
"formatVersion": 1,
"assets": [
{
"name": "forest",
"uri": "file:assets/forest.svg",
"kind": "backdrop",
"target": "@stage",
"sb3Name": "森",
"contentType": "image/svg+xml",
"dataFormat": "svg",
"size": 1234,
"sha256": "<64文字の16進数>",
"license": "CC-BY-4.0: https://creativecommons.org/licenses/by/4.0/",
"metadata": {
"bitmapResolution": 1,
"rotationCenterX": 240,
"rotationCenterY": 180
}
}
]
}
kind |
target |
変換後の台本参照 |
|---|---|---|
backdrop |
@stage |
backdrop:<sb3Name> |
costume |
スプライト名 | costume:<target>:<sb3Name> |
stageSound |
@stage |
sound:@stage:<sb3Name> |
spriteSound |
スプライト名 | sound:<target>:<sb3Name> |
DSL名、同一target内のSB3名、既存SB3のアセット名は重複できません。licenseには素材の
ライセンスまたは利用条件の識別情報と参照先を記録します。
安全性と再現性
file:は既定でマニフェストのディレクトリ以下だけを許可し、..やsymlinkによる脱出を拒否する- HTTPSを既定とし、平文HTTPは明示的に許可した場合だけ取得する
- Content-Type、実サイズ、ロック済みサイズ、SHA-256、timeout、redirectを検証する
- ZIPのエントリー順、タイムスタンプ、圧縮設定、JSON表現を固定する
- SB3、変換済み台本、出力マニフェストの対応を確定前に再検証する
- 3成果物を一時領域で生成し、すべて成功した場合だけ置換する
- 失敗時は既存成果物を保持または復元する
同じ入力、固定依存、設定から生成したSB3、台本、マニフェストはバイト単位で完全に一致しなければ なりません。
アプリSB3を変更する
このリポジトリではapp/をアプリSB3の正本とし、固定したsb3-toolchainを
pnpm sb3:*スクリプトから利用します。展開ソース形式、取り込みとビルドの上書き保護、
決定的出力の共通仕様は
sb3-toolchainのSB3ソース管理ワークフロー
を参照してください。
CIも依存関係の導入直後にpnpm sb3:checkを実行するため、ローカル開発、テスト、
配布ビルドで同じコミット固定のツールチェインを利用します。
app/から編集用SB3を生成します。
pnpm sb3:build
生成時に、Title背景のVersion <version> (YYYY/MM/DD)へpackage.jsonの
バージョンとAsia/Tokyoのビルド日を自動で埋め込みます。同時に、公式Webサイトボタンへ
Webサイトのブランド画像の正本であるsite/favicon.pngを埋め込みます。app/には
プレースホルダーを保持し、一時ソースで2つのSVGの内容、MD5、assetId、md5ext、
書庫のエントリーを同時に更新するため、ビルドで正本は変更されません。
過去のリリースを同じ日付で再現するときは、日付をYYYY-MM-DDで明示します。不正な
日付はエラーにし、暗黙に補正しません。
KAMISHIBAI_BUILD_DATE=2026-07-31 pnpm sb3:build
tmp/kamishibai.sb3をTurboWarpで編集し、別の明示的なパスへ保存してから取り込みます。
pnpm sb3:import -- /path/to/edited-kamishibai.sb3
git diff -- app
pnpm sb3:check
pnpm test
pnpm run build
app/project.source.jsonは次の不変条件を維持します。
- 浦島太郎などの公開サンプル固有ターゲット、画像、音声を含めない
- 台本解析・実行用リストを空の初期状態で保持する
- 組み込み台本用の予約変数を一意に保持する
展開形式とアセット・拡張の整合性はpnpm sb3:checkで検証します。ツールチェインの共通
検証項目を本ガイドへ重複して列挙しません。
DSL、Loading表示、入力、分岐、テキスト、画面遷移などの振る舞いを変更するときは、 同じPRでDSL資料、コマンド資料、 内部仕様書、VMまたはブロック構造のテストを更新します。
埋め込み機能拡張を更新する
app/extensions/のJavaScriptは同期済み成果物です。バグ修正や機能追加は、
app/embedded-extensions.jsonに記録された上流リポジトリまたはnpmパッケージで行い、レビュー済みの
成果物だけを本リポジトリへ取り込みます。source.providerがnpmの場合はパッケージ名、完全固定バージョン、
artifact path、integrityを記録し、パッケージマネージャーが導入した内容から同期します。アプリ側に
パッケージ固有のコピーscriptを追加しません。この取得・検証・同期はsb3-toolchainの責務です。
status、sync、updateの意味、由来情報の形式、一括の更新、ID移行の
対象schemaは、sb3-toolchainのSB3ソース管理ワークフローと
埋め込み拡張IDの移行
を正本とします。ここでは紙芝居アプリへ反映する手順だけを示します。
pnpm sb3:extensions:status
pnpm sb3:extensions:sync
pnpm sb3:extensions:update -- EXTENSION_ID
上流で拡張IDが変更された場合は、ツールチェインのID移行を伴う更新を使います。
pnpm sb3:extensions:update -- OLD_ID --migrate-id NEW_ID
GitHub提供元で上流の成果物パスも変わった場合だけ--artifact PATHを追加します。npm提供元では、
先にパッケージマネージャーで依存バージョンを更新してからstatusまたはupdateを実行します。更新後は必ず
git diff -- app、pnpm sb3:check、pnpm test、pnpm run buildを確認し、
生成したSB3をTurboWarpで開いて対象拡張の主要機能を確認します。
ビルダーの実装を変更する
公開APIはsrc/builder/index.js、CLIはsrc/builder/cli.jsとbin/、仕様テストは
test/builder.test.mjsにあります。公開API、CLI、アセットマニフェスト、決定的生成、
一括更新の現行仕様は
「SB3・台本変換ビルダーを利用する」を
参照してください。この章では仕様そのものを繰り返さず、実装変更時の確認事項だけを
扱います。
APIまたはCLIを変更するときは次を同じ変更に含めます。
- API入力、返り値、エラーの後方互換性の判断
- CLIの
--helpと引数検証 - アセットマニフェストと出力マニフェストの形式
- 決定的生成と一括更新のテスト
- 内部仕様書のAPI/CLI例
- 破壊的変更の場合は新しいメジャーバージョン
node --test test/builder.test.mjs
node bin/tm-kamishibai.mjs --help
pnpm typecheck
pnpm pack:check
ドキュメントとサイトを変更する
一般文書と体験会資料は文書リポジトリ、アプリの公開入口は本体リポジトリのsite/を
正本とします。文書リポジトリでは次を利用します。
DOCUMENT_SOURCE=user-guide.md pnpm run preview:document
pnpm run preview:workshop
pnpm run preview:staff
子供向け概要書と参加者向け体験会資料だけにrubyganaを適用します。確認する学年を 変更する場合は1から6を指定します。
RUBYGANA_GRADE=4 pnpm run build
文書リポジトリのpnpm run buildは一般文書ごとにWeb Publicationを構築し、
Vivliostyle CLIのtoc設定で
h2・h3までを含む目次を生成します。生成後処理で通常HTMLのindex.htmlへ本文と目次を
統合し、目次を固定・展開可能な階層ツリーにします。Vivliostyle Viewerのreading orderには
document.htmlだけを残すため、同じ本文を二重に表示しません。目次をMarkdownへ重複して
記述しません。
参加者向け体験会資料では、Viewer/PDF用のcover.html、toc.html、本文HTMLを保ったまま、
3つのbodyを画面用index.htmlへ統合します。スタッフ向け体験会資料では、本文HTMLの見出しから
画面用の階層目次を作り、本文と同じindex.htmlへ統合します。スタッフ向けViewerとPDFは
document.htmlだけを使用するため、画面用目次によってPDFのページ構成は変わりません。
一般文書と両体験会資料はdocument-toc.cssとdocument-toc.jsを共有します。
HTML、Vivliostyle Viewer、体験会資料のPDF、文書横断目次、画像参照、しおり、
ライセンスをまとめて検証します。Markdownだけを確認して完了にせず、生成されたHTMLと、
docs/workshops/を変更した場合のPDFも確認します。
2回目以降のpnpm run buildは、出版物の種別に依存しない共通の増分ビルド処理で、
出版物ごとにMarkdown、参照画像、共通テーマ、フォント、Vivliostyle設定、ビルドスクリプトの
更新時刻を調べます。必要なHTML、体験会資料のPDF、build-info.jsonがすべて存在し、
生成物の最も古い更新時刻が入力の最も新しい更新時刻以後なら、その出版物のVivliostyle処理と
目次統合を省略します。同じ内容のアセットや後処理済みHTMLも再書き込みしません。生成だけを
実行する場合はpnpm run build:publications、全出版物を無条件に作り直す場合は
pnpm run build:publications:full、検証まで含めて強制再生成する場合はpnpm run build:fullを
使用します。クリーンなチェックアウトで生成物が存在しないCIでは、通常のpnpm run buildでも
全出版物を生成します。
文書の変更が本体の実装変更を伴う場合は、2つのIssueとPRに依存関係を記録します。 文書ビルドが本体をチェックアウトしたり、本体ビルドが文書を生成したりする循環依存は作りません。
Markdownの見出しには章・節番号を書きません。h1は番号なしの文書名、h2とh3は
本文と目次で自動採番します。用語集などの前付けを採番しない場合は、見出しへ
{.unnumbered}を付けます。本文から見出しを参照するときは、番号ではなく意味の変わらない
IDを付けてリンクし、組版結果にも現在の章・節番号を表示する場合は、リンクへ
{data-ref="chapter"}または{data-ref="section"}を付けます。
変更を検証する
変更対象ごとのテスト
| 変更対象 | 主なテスト |
|---|---|
| ビルダーAPI/CLI | test/builder.test.mjs |
| 展開SB3の構造 | test/sb3-project.test.mjs、test/skip-mode.test.mjs |
| TurboWarp実行結果 | test/turbowarp-vm.test.mjs |
| 入力、分岐、wait | test/async-input.test.mjs、test/register-branch.test.mjs、test/wait-action.test.mjs |
| 文書、画像、ライセンス | 文書リポジトリのtest/とscripts/verify-build.mjs |
| 公開物と汎用性 | 本体のtest/sb3-publication.test.mjsとscripts/verify-build.mjs |
標準チェック
pnpm lint
pnpm format
pnpm typecheck
pnpm test
pnpm run build
GitHub ActionsはクリーンなLinux環境でpnpm install --frozen-lockfile、pnpm test、
pnpm buildを実行します。ローカルで成功しても、未追跡ファイルや既存生成物へ依存して
いないことをCIで確認します。
本体リポジトリのpnpm run buildは少なくとも次を生成・検証します。
dist/downloads/kamishibai.sb3- 公開入口、ダウンロードページ、移転案内
- 公開サイトのリンク、画像、AppBar、favicon
文書リポジトリのpnpm run buildは、一般文書ごとのWeb PublicationとHTML、
参加者向け・スタッフ向け体験会資料のHTML/PDF、文書サイトのリンクと画像を検証します。
SB3またはランタイムを変更した場合は、生成SB3をTurboWarpで開いて次を手動確認します。
- 読込エラーがない
- green flagでtitleとmenuが表示される
- 外部台本と組み込み台本の対象フローが開始できる
- pause、Space、Right、Downの進行が意図どおり動く
- Downでシーンを飛ばしてもBGMが継続し、残りのtransitionが最終状態になる
- Loading、画像、音声、テキストが正しく表示・再生される
内部構造を変更したPRでは、app/project.source.jsonと内部仕様書のtarget、変数、message、
hat、custom block一覧を同時に更新します。
公開する
GitHub Pages
pnpm run deploy
本体リポジトリではpredeployがビルドを行い、成功したdist/だけをgh-pagesへ公開します。
文書リポジトリはGitHub ActionsのPages workflowでpnpm check後のdist/を公開します。
公開後はトップページ、文書一覧、全文書のHTML/Vivliostyle Viewer、体験会資料のPDF、
SB3 downloadをそれぞれの実URLから確認します。
問題がある場合は、直前の検証済みコミットをチェックアウトしたクリーンな環境から再度ビルド・
deployします。生成済みdist/だけを手作業で修正しません。
npmパッケージ
公開済みバージョンは変更・再利用できません。リリースごとに新しいバージョンとGitタグを使います。
package.json、ロックファイル、src/builder/constants.js、READMEの導入例を同じバージョンへ更新する。- クリーンなコミットで標準チェック、フルビルド、公開内容のdry-runを実行する。
pnpm release:check
- tarballのファイル一覧、ライセンス、サイズ、CLI/APIを確認する。
- Git worktreeではなく通常のクリーンなクローンから公開する。
- WebAuthnなどの認証を完了して公開パッケージとして公開する。
npm publish --access public
- レジストリ反映後にメタデータを確認する。
npm view @kubohiroya/tm-kamishibai@<VERSION> \
version license dist-tags.latest dist.integrity --json
-
一時ディレクトリへ公開版を導入し、CLIの
--versionと@kubohiroya/tm-kamishibai/builderの取り込みを確認する。 - 公開に使った確定コミットへ注釈付きタグを作り、GitHub Releaseを作成する。
公開後に問題が見つかった場合は対象バージョンをnpm deprecateし、修正版を新しいpatch
バージョンとして公開します。公開済みtarballやタグを差し替えません。
開発上の問題を解決する
| 症状 | 確認と対応 |
|---|---|
sb3:importが置換を拒否する |
git statusとgit diff -- appを確認し、ツールチェインの手順に従う |
.app.rollback-*や.<出力名>.rollback-*が残る |
削除前に元出力と比較し、ツールチェインの失敗時の扱いに従う |
| 埋め込み拡張が追跡refと異なる | pnpm sb3:extensions:statusで確認し、固定コミットへ戻すならsync、更新するならupdateを使う |
| PDF生成browserが見つからない | 文書リポジトリでChrome/Chromiumを導入し、必要ならVIVLIOSTYLE_CHROME_PATHを設定する |
| ローカルだけtestが通る | 生成物と未追跡ファイルを確認し、クリーンなクローンとpnpm install --frozen-lockfileで再現する |
| ビルダーが既存出力を更新しない | エラーのstage、アセット名、URIを確認する。rollback領域が残っていないか確認する |
| 公開直後にnpmレジストリが404になる | 同じバージョンを再公開せず、npm公開ページとレジストリの反映を待って確認する |
復旧でGit履歴を破壊しません。公開済み変更はgit revertまたは新しい修正PRで戻し、タグを
移動しません。
ライセンスと秘密情報を扱う
| 対象 | ライセンス |
|---|---|
docs/user-guides/**、docs/dsl-author-guides/**、docs/developer-guides/** |
CC BY-SA 4.0 |
docs/workshops/** |
Copyright © 2026 Hiroya Kubo. All rights reserved. |
| 上記以外で個別表示のない、本プロジェクトが著作権を持つソフトウェアと素材 | MPL-2.0 |
詳細はLICENSES.md、docs/LICENSE.md、
docs/workshops/LICENSE.mdを参照してください。
第三者の画像、音声、フォント、モデル、機能拡張には個別のライセンスまたは利用条件が適用されます。
ビルダーで組み込む素材はアセットマニフェストのlicenseへ由来を記録します。許諾が確認できない
素材を本体またはsampleへ追加しません。
token、npm認証情報、秘密鍵、個人情報をrepository、SB3、台本、マニフェスト、生成HTMLへ 記録しません。認証情報は環境変数、OSのkeychain、GitHub Secretsなど、公開物へ含まれない 仕組みで渡します。
関連プロジェクトを確認する
TM紙芝居の開発から分離し、他のTurboWarp作品や開発環境でも利用できるものを 各リポジトリで公開しています。各プロジェクトの仕様、開発手順、リリースはリンク先を 正本とします。
sb3-toolchain
sb3-toolchainは、SB3をGit差分可能な
展開ソースとして管理し、検証して決定的に再構築するためのCLI/JavaScript APIです。
このリポジトリでは固定依存として利用し、app/の取り込み、検証、ビルド、埋め込み
機能拡張のGitHub/npmソース同期、ID移行、bundle member間の動的opcode参照変換を担います。
Viteプラグイン
-
vite-plugin-turbowarp-extension: TypeScriptプロジェクトを単一ファイルのTurboWarp機能拡張としてビルドするViteプラグイン
TurboWarp 機能拡張開発用テンプレート
-
turbowarp-extension-template: Viteを使ったTurboWarp機能拡張の開発、テスト、ビルド、リリース用テンプレート
TurboWarp 機能拡張
-
turbowarp-tm: Teachable Machine Poseモデルを利用したカメラ姿勢認識 -
turbowarp-text-lines: テキストの行数取得、行単位の読み出し・分割 -
turbowarp-asset-manager: IndexedDBとSB3内の画像・音声を扱うアセット管理 -
turbowarp-async-input: キーボード、ポインター、姿勢入力を対象ごとに扱う非同期入力 -
turbowarp-runtime-expression: ランタイム変数を使う条件式の安全な評価とbroadcast監視 -
turbowarp-svg-text: 名前付きスタイルを共有する、相対サイズの吹き出しと複数行のSVGテキストactor
その他のライブラリ
-
rubygana: 日本語テキストの読み仮名を生成するNode.jsライブラリ
関連ドキュメントを確認する
user-guide.md: アプリの利用方法と成果物の使い分けdsl-manual.md: 台本の構造と書き方command-reference.md: コマンドとアクションの仕様internal-specification.md: 汎用アプリSB3の内部構造、呼出し関係、状態遷移extension-guide.md: 依存機能拡張16個の一覧、図解、役割、利用箇所application-materials-guide.md: アプリ、浦島太郎、体験会教材、DSL 3.2、sb3-toolchainの8ページ概要history.md: DSLとアプリの変更履歴- アプリrepository README: プロジェクト全体の入口と主要コマンド