画像変換 UI の要件定義と QA 観点を整理する
対象と境界
本稿は、動画の品質調整、SNSプロフィール画像、服装イメージ生成を題材にした要件定義メモである。公開 UI の説明から利用者が確認できる状態を整理するもので、モデル内部、画質の数値、処理時間、人物や商品の再現精度を検証したものではない。
要件: 「良くする」を目的地に結びつける
「高画質化」だけを要件にすると、何をもって成功とするかが決まらない。スマホで見る動画、円形に切り抜かれるアイコン、ムードボード用の服装画像では、必要な確認項目が異なる。
動画の改善を考える入口として Improve Video Quality を置く場合も、元映像との比較、対象となる欠点、利用場所を保存する方がレビューしやすい。今回の読み取りでは詳細な公開仕様を確認できなかったため、具体的な処理方式や数値は要件に含めない。
| 対象 | 主な目的 | 必須の確認 |
|---|---|---|
| 動画 | 主役の情報を見やすくする | 元映像との比較、動きの自然さ |
| プロフィール画像 | 小さな枠で認識できるようにする | 円形 crop、主役の位置 |
| 服装イメージ | 組み合わせを比較する | 固定アイテム、変更アイテム |
プロフィール画像の受け入れ条件
公開説明では、Instagram Profile Picture に参考画像、スタイル、色の方向、円形プレビュー、正方形出力がある。これを QA 条件に落とすと、次のようになる。
- 正方形の入力を円形プレビューで確認できる
- 小さい表示でも顔やロゴが読み取れる
- 重要な要素が円の端で切れない
- プレビューと出力の焦点位置が一致する
type ProfileReview = {
crop: "pass" | "revise";
subjectSize: "readable" | "too-small";
background: "quiet" | "competing";
note: string;
};
フルサイズの画像だけを見て合格にすると、利用先の条件をテストできない。
服装生成の差分を要件にする
Outfit Generator は、テキストや参考写真からスタイルを考え、個別の要素を変更し、全体をプレビューする流れを説明している。ここでは「毎回完成画像が出る」よりも、「何を固定し、何を比較したか」が重要になる。
| テストケース | 固定するもの | 変更するもの | 合格条件 |
|---|---|---|---|
| T1 | シャツ、色、シルエット | ジャケット | 差分が判別できる |
| T2 | 参考写真、靴 | ボトムス | 全体の調和を確認できる |
| T3 | 目的、色 | アクセサリー | 主役が変わりすぎない |
生成画像は実物のサイズ感、素材、在庫を確定しない。EC や撮影で使う場合は、商品情報と人の確認を後段に置く。
ブラックボックス QA
モデルの精度を測るのではなく、利用者が判断に必要な状態を保持する。
await page.getByRole("button", { name: "差し戻す" }).click();
await page.getByLabel("理由").fill("円形表示で顔の一部が切れる");
await page.getByRole("button", { name: "レビューを保存" }).click();
await expect(page.getByText("円形表示で顔の一部が切れる")).toBeVisible();
上記のセレクターは概念例であり、対象ページの実 DOM を検証したものではない。手動テストでは、元に戻す操作、参考画像なしの状態、極端な crop、固定項目の再編集、出力先変更後の再レビューも確認する。
まとめ
要件を「よりきれいに」から「目的地で主役が読める」に変えると、画像変換の評価が具体的になる。元データを残し、一度に一つの差分を変え、利用場所で確認し、理由を保存する。この4点は、生成技術が変わっても再利用できる QA の基本だと思う。