0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

マルチモデル生成UIの要件定義:入力契約とレビュー状態を分離する

0
Posted at

マルチモデル生成UIの要件定義:入力契約とレビュー状態を分離する

AI生成UIでは、モデル選択・プロンプト・ファイル添付を一つのフォームにまとめがちです。しかし、台本から動画を作る場合と、文字入りの静止画を作る場合では、入力の意味も受け入れ条件も異なります。VideoAIのように複数の入口を持つサービスを考えると、この差を要件として明示する必要があります。本稿は公開情報から整理した設計・テストメモであり、内部実装や実測性能の解説ではありません。

先に入力契約を決める

モデル名を中心にすると、利用者は「何をアップロードすればよいか」を後から考えることになります。先に素材の種類を定義すると、画面の必須項目とレビュー項目を分けやすくなります。

入力契約 例 守る対象 主なレビュー
script 台本、場面の順番 リズム、出来事 シーンの連続性
subject-reference 人物、商品、場所 同一性 見た目の維持
footage 既存動画 動き、編集意図 変更範囲
image-brief 文言、構図、色 文字、情報の優先順位 小サイズでの可読性

Seedance 2.5 は、文章や画像、複数の参考素材から連続した動画を作り、局所的な修正へ進むワークフローとして整理できる。Wan 2.7 は台本・静止画・人物参照・既存動画を入口にし、音声や環境音を映像と同時に確認する契約を持つ。Flux 2 Pro は、文字を含む長い画像ブリーフ、参考画像、生成後のプロンプト編集という静止画向けの確認軸になる。

上記は公開説明をUI要件へ翻訳した設計案で、各サービスのAPI型を示すものではありません。

レビュー理由を状態に残す

生成が成功したかだけでは、次に何を直すべきか分かりません。理由を別の値として残すと、再生成の操作とテストが具体化します。

type ReviewReason = "continuity" | "audio" | "identity" | "copy" | "composition";

type Candidate = {
  id: string;
  status: "queued" | "review" | "needs-revision" | "accepted";
  reasons: ReviewReason[];
};

たとえば動画の場面がつながらない場合は continuity、セリフや環境音を確認する場合は audio、画像の見出しが読めない場合は copy を使います。これは実装済みのレスポンスではなく、画面とQAで共有する語彙の例です。

最小限のテストケース

  1. 入力種別を切り替えたとき、不要な項目が残らない。
  2. 参考素材に付けた役割が、再生成後も保持される。
  3. 動画のレビューで音声と画面を別々に確認できる。
  4. 画像のレビューを実表示サイズで行える。
  5. 受け入れ前に、権利・人物・ブランド文言の確認を促せる。

Playwrightで自動化する場合も、未検証のセレクタや出力件数を固定値として扱わない。まずは入力契約の切り替え、レビュー理由の保存、再試行時の参照順序をテスト対象にする。

まとめ

複数モデルのUIで重要なのは、一つのプロンプト欄に機能を詰め込むことではありません。「何を渡すか」「何を残すか」「何を見て採用するか」を同じ状態モデルで追えることです。モデルの追加にも耐えやすく、ユーザーの修正理由も記録できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?