本稿は公開されている画面説明をもとにした、要件定義とQAのための設計チェックリストです。特定製品のソースコード、内部モデル、DOM、性能値、実装方式を解析したものではありません。コードとテスト例は同種のプロダクトに適用するための例示です。
動画を生成するUIでは「生成できた」という結果が目立ちます。しかし運用時に困るのは、後から同じ動画を説明・再現・修正できないことです。台本を直したのか、話者を変えたのか、言語を変えたのかが混ざると、出力だけを保存しても判断の履歴が残りません。
公開ページの AI Avatar Video Ads では、アバター選択、テキストやフック、AI音声、生成、プレビュー、ダウンロードという流れが示されています。AI Spokesperson Video Generator でも、話者、台本と音声、生成と確認という段階が説明されています。ここでは一般化して、再生成可能な要件へ分解します。
要件を入力・試行・承認に分ける
最低限、状態を三種類に分けます。
| 区分 | 例 | 変更時に必要なこと |
|---|---|---|
| 入力 | 台本、話者、声、言語、商品素材 | リビジョンを増やす |
| 試行 | 固定入力で開始した生成ジョブ | 入力スナップショットを保存する |
| 承認 | 主張、発音、字幕、権利、出力確認 | 対象入力との対応を保存する |
この分割により、生成中に台本を編集しても、遅れて完了した古い結果を新しい入力の成果物として扱わずに済みます。また、承認済みの台本を修正したときに、古い承認を誤って残す問題も避けられます。
最小ドメインモデル
type Review = "missing" | "pending" | "approved" | "rejected";
type VideoDraft = {
id: string;
script: { revision: number; text: string; claimReview: Review };
presenter: { assetId: string; rightsReview: Review } | null;
voice: { revision: number; locale: string; rightsReview: Review } | null;
};
type RenderAttempt = {
id: string;
draftId: string;
scriptRevision: number;
voiceRevision: number;
presenterAssetId: string;
state: "queued" | "running" | "failed" | "review" | "approved";
};
RenderAttempt は現在のフォームを参照するのではなく、開始時の入力を持ちます。これにより、失敗時の再試行を「同じ入力で行う」のか「現在の編集内容で新しい試行を作る」のかを、利用者が選べます。
生成可否をフラグで持たない
isReady = true のような保存済みフラグは、入力が変わった後に古くなりやすいです。生成可否は現在のリビジョンとレビューから計算します。
function canGenerate(draft: VideoDraft): boolean {
return Boolean(
draft.script.text.trim() &&
draft.presenter &&
draft.voice &&
draft.script.claimReview === "approved" &&
draft.presenter.rightsReview === "approved" &&
draft.voice.rightsReview === "approved"
);
}
実際の必須条件はプロダクトごとに異なります。ここでのポイントは、利用者が「生成できない」理由と、次に確認すべき項目を画面上で追えることです。
QAは正常系より無効化規則を優先する
Playwright のセレクタや画面構造は未検証なので、以下は実装契約を表す擬似テストです。
describe("approval invalidation", () => {
it("台本が変われば主張レビューを無効にする", () => {
const next = editScript(approvedDraft, "新しい一文");
expect(next.script.claimReview).toBe("missing");
});
it("古い試行の完了は新しい入力を上書きしない", () => {
const completed = completeAttempt(oldAttempt);
expect(completed.scriptRevision).toBe(oldAttempt.scriptRevision);
});
});
追加で確認したい項目は次の通りです。
- 言語を変更すると、発音と字幕の確認が再度必要になる
- 話者またはアップロード音声を置き換えると、利用権確認が無効になる
- 失敗理由が利用者に分かる形で表示され、同一入力で再試行できる
- 書き出した動画から、台本・声・話者のリビジョンを追跡できる
- キーボード操作と読み上げで、未完了の必須条件を特定できる
- 人物・声・商品画像・音楽・主張・開示の確認項目を混同しない
まとめ
Nextify は、公開UIからこうした要件を考えるための参照例です。本稿の型とテストは内部実装の主張ではありません。
生成型動画の品質は、出力の見た目だけでは管理できません。入力を版として残し、生成試行を不変にし、承認を別状態にする。この三点を満たすと、再生成、比較、監査、修正が扱いやすくなります。
