紙芝居アプリ 3.2 ソフトウェアメンテナンスガイド

Copyright © 2026 Hiroya Kubo. この文書はCC BY-SA 4.0で提供します。

このガイドは、TM紙芝居の成果物とビルダーを利用し、アプリ、SB3ソース、 ビルダー、Webサイト、ドキュメントを変更・検証・公開するソフトウェア開発者向けの 作業資料です。次を本書の責務とします。

本書では、kubohiroya/tm-kamishibaiを「本体リポジトリ」、 kubohiroya/tm-kamishibai-docsを「文書リポジトリ」と呼びます。コマンドは、 対象ファイルを管理する側のリポジトリで実行します。

汎用アプリSB3のtarget、変数、event、custom block、呼出し関係、状態遷移は 紙芝居アプリ 3.2 内部仕様書を正本とします。台本の書式と コマンド仕様は台本DSLマニュアルコマンドリファレンスを参照してください。本書には、 これらの内部構造やDSL項目を重複して列挙しません。

対象アプリ: TM Kamishibai 3.2.x
受理するDSL宣言: kamishibai=3.1kamishibai=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.jsonpnpm-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へ分けます。

  1. 最新のmainから作業ブランチを作る。
  2. pnpm install --frozen-lockfileで依存を復元する。
  3. 変更対象に近いテストを先に実行する。
  4. 生成物ではなく正本を変更する。
  5. 差分と生成結果を確認する。
  6. 標準チェックと必要な手動確認を行う。
  7. Issueの運用ログとDoDを更新してPRを作成する。

無関係な変更や未追跡ファイルをまとめてコミットしません。SB3の取り込みや成果物の 置換を行う前には、必ずgit statusと対象パスの差分を確認します。変更対象ごとの テストと公開前チェックは「変更を検証する」を 参照してください。

成果物プロファイルを理解する

紙芝居の成果物は、台本と物語固有アセットをどこに保持するかで分けます。

プロファイル 台本 物語固有アセット 主な用途
generic kamishibai.sb3 非埋め込み 非埋め込み 本体が配布する汎用雛形
editor _urashima.sb3 非埋め込み 埋め込み 物語作成者の編集・動作確認
player urashima.sb3 埋め込み 埋め込み 配布・再生、Packager Web版

genericapp/から生成し、特定の物語を含めません。ビルダーAPIとCLIが受け付ける profileeditorまたはplayerです。

editorplayerは同じベース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);

baseSb3sourceScriptにはファイルパスまたはfile: URLを指定できます。 assetManifestにはファイルパス、file: URL、または検証対象のJavaScriptオブジェクトを 指定できます。相対file:を含むオブジェクトではmanifestBaseDirectoryも指定します。

ネットワーク・ファイル取得はallowedFileRootsallowHttprequestTimeoutMsmaxAssetBytesmaxRedirectsで制限できます。playerの組み込み台本上限は maxEmbeddedScriptBytesで変更できます。

buildSb3BundlemanifestoutputPathsを返します。入力・アセット・出力の問題は 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-toolchainpnpm 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、assetIdmd5ext、 書庫のエントリーを同時に更新するため、ビルドで正本は変更されません。

過去のリリースを同じ日付で再現するときは、日付を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.providernpmの場合はパッケージ名、完全固定バージョン、 artifact path、integrityを記録し、パッケージマネージャーが導入した内容から同期します。アプリ側に パッケージ固有のコピーscriptを追加しません。この取得・検証・同期はsb3-toolchainの責務です。

statussyncupdateの意味、由来情報の形式、一括の更新、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 -- apppnpm sb3:checkpnpm testpnpm run buildを確認し、 生成したSB3をTurboWarpで開いて対象拡張の主要機能を確認します。

ビルダーの実装を変更する

公開APIはsrc/builder/index.js、CLIはsrc/builder/cli.jsbin/、仕様テストは 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設定で h2h3までを含む目次を生成します。生成後処理で通常HTMLのindex.htmlへ本文と目次を 統合し、目次を固定・展開可能な階層ツリーにします。Vivliostyle Viewerのreading orderには document.htmlだけを残すため、同じ本文を二重に表示しません。目次をMarkdownへ重複して 記述しません。

参加者向け体験会資料では、Viewer/PDF用のcover.htmltoc.html、本文HTMLを保ったまま、 3つのbodyを画面用index.htmlへ統合します。スタッフ向け体験会資料では、本文HTMLの見出しから 画面用の階層目次を作り、本文と同じindex.htmlへ統合します。スタッフ向けViewerとPDFは document.htmlだけを使用するため、画面用目次によってPDFのページ構成は変わりません。 一般文書と両体験会資料はdocument-toc.cssdocument-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は番号なしの文書名、h2h3は 本文と目次で自動採番します。用語集などの前付けを採番しない場合は、見出しへ {.unnumbered}を付けます。本文から見出しを参照するときは、番号ではなく意味の変わらない IDを付けてリンクし、組版結果にも現在の章・節番号を表示する場合は、リンクへ {data-ref="chapter"}または{data-ref="section"}を付けます。

変更を検証する

変更対象ごとのテスト

変更対象 主なテスト
ビルダーAPI/CLI test/builder.test.mjs
展開SB3の構造 test/sb3-project.test.mjstest/skip-mode.test.mjs
TurboWarp実行結果 test/turbowarp-vm.test.mjs
入力、分岐、wait test/async-input.test.mjstest/register-branch.test.mjstest/wait-action.test.mjs
文書、画像、ライセンス 文書リポジトリのtest/scripts/verify-build.mjs
公開物と汎用性 本体のtest/sb3-publication.test.mjsscripts/verify-build.mjs

標準チェック

pnpm lint
pnpm format
pnpm typecheck
pnpm test
pnpm run build

GitHub ActionsはクリーンなLinux環境でpnpm install --frozen-lockfilepnpm testpnpm 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タグを使います。

  1. package.json、ロックファイル、src/builder/constants.js、READMEの導入例を同じバージョンへ更新する。
  2. クリーンなコミットで標準チェック、フルビルド、公開内容のdry-runを実行する。
pnpm release:check
  1. tarballのファイル一覧、ライセンス、サイズ、CLI/APIを確認する。
  2. Git worktreeではなく通常のクリーンなクローンから公開する。
  3. WebAuthnなどの認証を完了して公開パッケージとして公開する。
npm publish --access public
  1. レジストリ反映後にメタデータを確認する。
npm view @kubohiroya/tm-kamishibai@<VERSION> \
  version license dist-tags.latest dist.integrity --json
  1. 一時ディレクトリへ公開版を導入し、CLIの--version@kubohiroya/tm-kamishibai/builderの取り込みを確認する。
  2. 公開に使った確定コミットへ注釈付きタグを作り、GitHub Releaseを作成する。

公開後に問題が見つかった場合は対象バージョンをnpm deprecateし、修正版を新しいpatch バージョンとして公開します。公開済みtarballやタグを差し替えません。

開発上の問題を解決する

症状 確認と対応
sb3:importが置換を拒否する git statusgit 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.mddocs/LICENSE.mddocs/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プラグイン

TurboWarp 機能拡張開発用テンプレート

TurboWarp 機能拡張

その他のライブラリ

  • rubygana: 日本語テキストの読み仮名を生成するNode.jsライブラリ

関連ドキュメントを確認する