• ホーム
  • ブログ
  • ギャラリー
  • 料金
  • ホーム
  • ブログ
  • ギャラリー
  • 料金
制作を始める

創る。遊ぶ。

クリエイターブログ

ホーム/ブログ/制作実践

分岐ストーリーのテスト方法:パスカバレッジ、状態マトリクス、回帰テスト

分岐ストーリーのテストは「すべてのエンディングを一度ずつプレイする」だけでは不十分です。ひとつのエンディングには複数の状態から到達でき、同じノードでも関係性、証拠、リソースによってエラーが発生します。実行可能な方法は、段階ごとにカバレッジを確保することです。まずグラフ構造を自動チェックし、次に重要な状態の組み合わせをテストし、最後に代表的なパスで映像と音声を含む体験全体を検証します。

D
DramaFork Editorial Teamインタラクティブ物語とAI制作
2026.08.30読了目安:7分
「分岐ストーリーのテスト方法:パスカバレッジ、状態マトリクス、回帰テスト」ブログ記事のカバー画像
目次
クリエイターブログ
  1. 01はじめに
  2. 02第1段階:構造の静的チェック
  3. 03第2段階:状態遷移の単体テスト
  4. 04第3段階:ペアワイズカバレッジで組み合わせを絞る
  5. 05第4段階:代表的なパスのエンドツーエンド検証
  6. 06不具合報告には必ず状態を含める
  7. 07影響グラフに基づいて回帰テストの範囲を決める
  8. 08リリースゲートを設ける
  9. 09反復作業は自動化に、体験の検証は人に任せる
  10. 10テストデータとセーブデータのサンプルを管理する
記事上部へ

はじめに

分岐ストーリーのテストは「すべてのエンディングを一度ずつプレイする」だけでは不十分です。ひとつのエンディングには複数の状態から到達でき、同じノードでも関係性、証拠、リソースによってエラーが発生します。実行可能な方法は、段階ごとにカバレッジを確保することです。まずグラフ構造を自動チェックし、次に重要な状態の組み合わせをテストし、最後に代表的なパスで映像と音声を含む体験全体を検証します。

第1段階:構造の静的チェック

ゲームを実行せずに、ノードIDが一意であること、すべての出口が存在すること、エンディング以外のノードに出口があること、開始ノード以外のノードに入口があること、変数の型が正しいこと、ローカライズキーとメディア参照が揃っていることをチェックします。孤立したノード、行き止まり、明らかに満たせない条件、読み取られていない状態を報告します。

静的チェックは高速で、コミットごとの実行に適しています。物語が面白いことを証明はできませんが、テスターが映像を見る前に、多くの表記ミスや参照エラーを検出できます。

第2段階:状態遷移の単体テスト

各選択肢について、前提条件、書き込み結果、遷移先ノードを検証します。既知の初期状態から選択を送信し、関係性、証拠、リソース、世界の状態が正しく変化することをアサーションで確認します。繰り返し送信しても報酬が重複して付与されないこと、タイムアウトと入力なしの場合に指定のルートへ進むことも確認します。

名前の付いた複雑なルールは、ケースを分けてテストします。例えば can_publish_truth では、証拠不足、信頼度の低さ、リソース不足、すべての条件を満たす場合をそれぞれ検証します。境界値は特に重要です。関係性のしきい値の上下1段階、リソースが0と1の場合、集合の要素がちょうどひとつ不足している場合を確認します。

第3段階:ペアワイズカバレッジで組み合わせを絞る

すべての変数の全組み合わせをテストするのは、通常は現実的ではありません。まず、同じノードに共同で影響する変数を特定し、ペアワイズまたはリスクに基づく組み合わせを使って、重要な値のすべてのペアが少なくとも一度は同時に現れるようにします。エンディング、決済、セーブデータの移行、不可逆な状態など、リスクの高い領域では、3要素の組み合わせや網羅的なテストを追加します。

状態マトリクスは1行につき1つのテストケースとし、初期値、パス、表示されるはずの選択肢、メディアのバリエーション、最終状態、エンディングを記載します。「信頼度が低い場合をテスト」とだけ書かず、再現可能な値とバージョンを必ず示します。

第4段階:代表的なパスのエンドツーエンド検証

少なくとも、最短のメインストーリーパス、証拠が最大の場合、関係性が最低の場合、リソースの枯渇、全編タイムアウト、補助モード、チャプター移動、旧セーブデータの移行をカバーします。全編を視聴して、物語の因果関係、演技、字幕、音声、シームレスな切り替えをチェックします。これらは単体テストでは発見できません。

パスごとに訪問ログを生成し、想定するノードの順序と比較します。ずれが生じたときに、エンディングで初めて結果の誤りに気づくのではなく、最初に分岐がずれた箇所を特定できるようにします。

不具合報告には必ず状態を含める

報告には、ビルドバージョン、プラットフォーム、言語、セーブデータのバージョン、開始ノード、主要な変数、操作手順、実際の結果と期待する結果、メディアID、ログ、スクリーンショットまたは画面録画を記載します。「第3章で誤ったエンディングに入った」とだけ書いても、ほぼ再現できません。

匿名の状態スナップショットをエクスポートできるデバッグパネルを用意します。ただし、実際のプレイヤーデータはプライバシー上の制約を守る必要があります。テストツールでノードへ直接移動できても、定期的に実際の前段のパスから入る必要があります。直接移動すると、状態の書き込みが抜ける可能性があるためです。

影響グラフに基づいて回帰テストの範囲を決める

ノードの出口を変更した場合は、そのノードに入るすべての代表的な状態と、その先の重要なルートをテストします。共有動画を変更した場合は、それを参照するすべてのパスを確認します。基礎となる変数を変更した場合は、それを読み取るすべてのノードへ範囲を広げます。「ノード—変数—アセット—テスト」の追跡関係を維持すれば、回帰テストの集合を自動で提案できます。

不具合が発生したルートだけを再テストしてはいけません。修正によってエラーが別の入口に移ることはよくあり、特にパスの合流やセーブデータの復元で起こります。

リリースゲートを設ける

リリースを阻止する問題には、メインストーリーに到達できないこと、状態の破損、セーブデータの消失、黒い画面でのフリーズ、重要な字幕の欠落が含まれます。重大度、優先度、対応の延期を認める基準は、テスト前に定義します。リリース候補ごとに、テスト報告、未解決の問題、リスクの承認記録を保存します。

カバレッジは、ノード、選択肢、状態のペア、メディア、エンディングについて集計できますが、数値そのものが品質ではありません。ノード訪問率が100%でも、すべての論理的な組み合わせが正しいとは限りません。報告には、カバーされていないリスクも記載する必要があります。

反復作業は自動化に、体験の検証は人に任せる

ヘッドレスランナーは、ノードの巡回、状態の注入、アサーションの検証、パスの生成を高速に行えます。端末の自動化では、起動、ダウンロード、セーブをテストできます。人によるテストは、選択肢の理解、演技の連続性、映像と音声のテンポ、感情の因果関係に集中します。ブール値ひとつを確認するためだけに、テスターに同じ10分間を何度も見せないようにします。

テストデータとセーブデータのサンプルを管理する

重要なバージョンごとに、最小限のセーブデータ一式を保存します。チャプターの入口、重要なしきい値の直上と直下、リソースが枯渇した状態、主要な各エンディングの直前、旧モードを含めます。サンプルにはコンテンツのバージョンと期待する結果を明記し、テスターが手作業で自由に変更しないようにします。ビルド完了後にまとめて読み込み、移行と、隠れた条件にずれがないことの両方を検証します。

テストアカウント、分析環境、本番環境を分け、巡回スクリプトがプレイヤーデータを汚染しないようにします。再現用のログやセーブデータに端末またはアカウント情報が含まれる場合は、プロジェクトのプライバシールールに従って、識別情報の除去、権限付与、削除を行います。

次のステップ:1章分の状態マトリクスを作り、まずすべてのノードと選択肢を自動チェックしてから、代表的なパスを6本選んでエンドツーエンドで視聴します。すべての不具合を、影響を受ける変数と回帰テストの集合に関連付けます。

プロダクト機能を見る 作品を体験

続きを読む

他の記事を見る
完成した作品パッケージのそばに、制作者のツール、バージョンラベル、フィードバック収集箱が置かれている。
制作実践2026.10.04 · 8分

インタラクティブストーリーの結末に署名とバージョン説明をどう書けば、フィードバックの宛先が明確になるか?

結末情報は三層に書けば十分です:納品物の名称とバージョン番号、創作貢献とツール使用の分担、フィードバック時に添える三項目。読者は問題を見れば具体的なファイルを特定でき、あなたはフィードバックを受け取ればどの層を直すべきか判断でき、メールで「どのバージョンのことですか」と何度も聞き返す必要がありません。

同じキャラクターが三つの独立した舞台に現れ、それぞれ異なる進行状況と小道具を保っている。
制作実践2026.10.04 · 7分

同一IPのキャラクターチャットとテキストアドベンチャーで、進行状況が共有されると誤解させずに関係を紹介する方法

二つの入口の関係を「同一世界、同一キャラクターアイデンティティ、それぞれ独立して進行」と書き、入口ページで状態対照表を使い、何が引き継がれ、何が引き継がれないかを明確にする。具体的な方法は四段階:まずこのIPにキャラクターアーカイブを定め、二つの入口が共有するアイデンティティの土台とする。次に各入口ごとに「状態境界」の説明を個別に書く。そして言える/言えない表を用意し、運営コピーを制約する。最後に架空の会話で、プレイヤーが読んだ後に誤った期待を抱かないか検証する。

温かい入口と厳しい鉄門がジャンル約束の落差を生み、制作者が再調整する。
制作実践2026.10.04 · 6分

表紙はホラーなのに本文は温かい日常?作品のジャンル約束が一貫しているか確認する方法

先に結論:あらすじ、冒頭、最初のコアタスク、結末のそれぞれに「プレイヤーがこの時点でどの程度の強度を受け止めると予想するか」を一文で書き、四つを並べて読む。表紙とあらすじがホラーを指しているのに、冒頭が温かい日常だけを提示し、コアタスクで強度が突然最大になるなら、問題は「驚きがあること」ではなく、驚きの前に推論可能な手がかりが欠けていることにある。確認の目的は転換を消すことではなく、転換が起きる前にプレイヤーが既存情報から「ここは重くなるかもしれない」と推測できるようにすることだ。

制作の複雑さはAgentに、創作の決定権はあなたに。

ひとつの物語のアイデアから、脚本、キャラクター、ショット、分岐をまとめ、遊べる最初のバージョンを作れます。

プロダクト

  • 料金
  • 機能
  • 制作フロー
  • 作品例
  • よくある質問

探索

  • 作品ギャラリー
  • クリエイターブログ
  • クリエイターパートナー

法的情報

  • プライバシー
  • 利用規約
© 2026 DramaFork/AIインタラクティブストーリースタジオ
Press Enter to send, or drag away and release.