えりる
記事内に商品プロモーションを含む場合があります
以下の記事で検討した「StableDiffusionのモデル管理アプリ」のユースケースを示します。
[rtoc_mokuji]
StableDiffusionのモデル管理アプリのユースケース詳細化
ユーザー管理、プロンプト管理、LoRA管理、Checkpoint管理、データインポート/エクスポート、および追加の管理機能(サンプル画像、タグ、カテゴリ)を網羅したユースケースを詳細化します。ローカル環境での動作、単一ユーザーでの利用を前提としつつ、将来的な拡張性とセキュリティのベストプラクティスを考慮に入れます。
1. ユーザー管理
- ユースケース名: 新規ユーザー作成(管理者機能)
- アクター: アプリケーション管理者(あなた)
- 概要: アプリケーションの初期設定として、管理者ユーザーアカウントを作成する。将来的な複数ユーザー対応を想定し、ユーザー登録プロセスを定義する。
- 事前条件: アプリケーションが初めて起動された状態、または管理者権限を持つユーザーがログインしている状態。
- 主要成功シナリオ:
- 管理者は「新規ユーザー作成」画面にアクセスする。
- 管理者はユーザー名、パスワード、パスワード確認、メールアドレス(オプション)を入力する。
- 管理者は「登録」ボタンをクリックする。
- システムは以下の検証を行う:
- ユーザー名が既に存在しないか。
- パスワードが指定された複雑性要件(例: 8文字以上、大文字・小文字・数字・記号の組み合わせ)を満たしているか。
- パスワードとパスワード確認が一致するか。
- システムは入力されたパスワードを強力なハッシュアルゴリズム(例: bcrypt, Argon2)でハッシュ化し、ソルトと共にデータベースに安全に保存する。
- ユーザーアカウントとハッシュ化されたパスワードがデータベースに保存される。
- ユーザーアカウント作成成功のメッセージが表示される。
- 代替フロー:
- 入力検証エラー: 不正な形式の入力やパスワード要件不適合があった場合、具体的なエラーメッセージを表示し、再入力を促す。
- ユーザー名重複: 既存のユーザー名が入力された場合、エラーメッセージを表示し、別のユーザー名を促す。
- パスワード不一致: パスワードとパスワード確認が一致しない場合、エラーメッセージを表示し、再入力を促す。
- 事後条件: 新しいユーザーアカウントがシステムに登録され、ログイン可能な状態になる。パスワードはハッシュ化されて保存される。
- ユースケース名: ログイン
- アクター: 登録済みユーザー(あなた)
- 概要: 登録済みユーザーがアプリケーションにログインし、機能を利用可能にする。
- 事前条件: ユーザーアカウントがシステムに登録されている。
- 主要成功シナリオ:
- ユーザーはログイン画面にアクセスする。
- ユーザーはユーザー名とパスワードを入力し、「ログイン」ボタンをクリックする。
- システムは入力されたユーザー名に対応するハッシュ化されたパスワードとソルトをデータベースから取得する。
- システムは入力されたパスワードを同じハッシュアルゴリズムとソルトでハッシュ化し、データベースに保存されているハッシュ値と比較する。
- 認証が成功した場合、セッションIDを生成し、セキュアなCookie(HttpOnly, Secure属性付き)としてユーザーのブラウザに設定する。
- ユーザーはアプリケーションのダッシュボードまたはメイン画面にリダイレクトされる。
- 代替フロー:
- 認証失敗: ユーザー名またはパスワードが間違っている場合(ハッシュ値の比較が失敗した場合)、一般的なエラーメッセージ(例: 「ユーザー名またはパスワードが正しくありません」)を表示し、再入力を促す。具体的なエラー内容を伝えないことで、ブルートフォース攻撃やユーザー名列挙攻撃を防ぐ。
- セッションハイジャック対策: セッションIDが不正な場合や期限切れの場合、再ログインを促す。
- 事後条件: ユーザーがアプリケーションにログインし、セキュアなセッションが確立される。
- ユースケース名: ログアウト
- アクター: ログイン済みユーザー(あなた)
- 概要: ユーザーが現在のアクティブなセッションを安全に終了する。
- 事前条件: ユーザーがアプリケーションにログインしている。
- 主要成功シナリオ:
- ユーザーはアプリケーションのどこかにある「ログアウト」ボタンをクリックする。
- システムはサーバー側のセッションを無効化し、ユーザーのブラウザからセッションCookieを削除または無効化する。
- ユーザーはログイン画面にリダイレクトされる。
- 事後条件: ユーザーセッションが安全に終了し、ユーザーはログイン画面に戻る。
- ユースケース名: パスワードリセット
- アクター: 登録済みユーザー(あなた)
- 概要: パスワードを忘れたユーザーが、登録済みのメールアドレスを使用してパスワードを再設定する。
- 事前条件: ユーザーアカウントがシステムに登録されており、メールアドレスが紐付けられている。
- 主要成功シナリオ:
- ユーザーはログイン画面の「パスワードを忘れた場合」リンクをクリックする。
- ユーザーは登録済みのメールアドレスを入力し、「送信」ボタンをクリックする。
- システムはメールアドレスを検証し、一意で時間制限のあるパスワードリセットトークンを生成し、そのトークンを含むリセットリンクをユーザーのメールアドレスに送信する。
- ユーザーは受信したメールのリンクをクリックする。
- システムはトークンを検証し、有効な場合、ユーザーに新しいパスワードの入力を促す画面を表示する。
- ユーザーは新しいパスワードとパスワード確認を入力し、「パスワードをリセット」ボタンをクリックする。
- システムは新しいパスワードをハッシュ化し、データベースの既存のハッシュ値を更新する。
- パスワードリセット成功のメッセージが表示され、ユーザーはログイン画面にリダイレクトされる。
- 代替フロー:
- 無効なメールアドレス: 登録されていないメールアドレスが入力された場合、一般的なエラーメッセージを表示する。
- トークン期限切れ/無効: リセットリンクのトークンが期限切れ、または不正な場合、エラーメッセージを表示し、再発行を促す。
- 事後条件: ユーザーのパスワードが安全にリセットされ、新しいパスワードでログイン可能になる。
- ユースケース名: パスワード変更
- アクター: ログイン済みユーザー(あなた)
- 概要: ログインしているユーザーが現在のパスワードを知っている状態で、新しいパスワードに変更する。
- 事前条件: ユーザーがアプリケーションにログインしている。
- 主要成功シナリオ:
- ユーザーはユーザー設定またはプロフィール画面で「パスワード変更」機能を選択する。
- ユーザーは現在のパスワード、新しいパスワード、新しいパスワード確認を入力する。
- ユーザーは「保存」ボタンをクリックする。
- システムは現在のパスワードが正しいことを認証し、新しいパスワードが複雑性要件を満たし、新しいパスワードと確認が一致することを検証する。
- システムは新しいパスワードをハッシュ化し、データベースのパスワードハッシュを更新する。
- パスワード変更成功のメッセージが表示される。
- 代替フロー:
- 現在のパスワードが不正: 入力された現在のパスワードがシステムと一致しない場合、エラーメッセージを表示する。
- 新しいパスワード要件不適合: 新しいパスワードが複雑性要件を満たさない場合、エラーメッセージを表示する。
- 新しいパスワード不一致: 新しいパスワードと確認が一致しない場合、エラーメッセージを表示する。
- 事後条件: ユーザーのパスワードが新しいものに安全に変更される。
2. プロンプトの管理
- ユースケース名: 新規プロンプトの作成
- アクター: ログイン済みユーザー(あなた)
- 概要: 新しいStable Diffusionプロンプトをアプリケーションに保存する。
- 事前条件: ユーザーがログインしている。
- 主要成功シナリオ:
- ユーザーは「新規プロンプト作成」画面またはボタンをクリックする。
- ユーザーはプロンプトの本文、ネガティブプロンプト、関連するタグ、メモ、生成に用いたモデル情報、画像生成設定(例: サンプラー、ステップ数、CFGスケール、シード値)などを入力する。
- ユーザーは「保存」ボタンをクリックする。
- システムは入力された情報を検証し、データベースに保存する。
- プロンプト保存成功のメッセージが表示され、プロンプト一覧に追加される。
- 代替フロー:
- 入力検証エラー: 必須項目が未入力の場合、エラーメッセージを表示し、入力を促す。
- 事後条件: 新しいプロンプトがシステムに保存され、後から参照・利用可能になる。
- ユースケース名: プロンプトの参照・検索
- アクター: ログイン済みユーザー(あなた)
- 概要: 保存されているプロンプトを一覧表示し、キーワードやタグ、カテゴリで検索して目的のプロンプトを見つける。
- 事前条件: ユーザーがログインしており、プロンプトが保存されている。
- 主要成功シナリオ:
- ユーザーはプロンプト一覧画面にアクセスする。
- システムは保存されている全てのプロンプトをリスト表示する(ソート順は選択可能)。
- ユーザーは検索バーにキーワードを入力するか、タグやカテゴリを選択して検索を実行する。
- システムは検索条件に合致するプロンプトのみを絞り込んで表示する。
- ユーザーは各プロンプトの詳細を閲覧するためにクリックする。
- 事後条件: ユーザーが目的のプロンプトを見つけ、その詳細情報を確認できる。
- ユースケース名: プロンプトの編集
- アクター: ログイン済みユーザー(あなた)
- 概要: 既存のプロンプト情報(本文、タグ、メモなど)を更新する。
- 事前条件: ユーザーがログインしており、編集したいプロンプトが既に保存されている。
- 主要成功シナリオ:
- ユーザーはプロンプト一覧から編集したいプロンプトを選択し、詳細画面を開く。
- ユーザーは「編集」ボタンをクリックする。
- ユーザーはプロンプト情報(本文、ネガティブプロンプト、タグ、メモなど)を修正する。
- ユーザーは「保存」ボタンをクリックする。
- システムは更新された情報を検証し、データベースを更新する。
- プロンプト更新成功のメッセージが表示される。
- 代替フロー:
- 入力検証エラー: 不正な形式の入力があった場合、エラーメッセージを表示し、再入力を促す。
- 事後条件: 選択されたプロンプトの情報がシステム内で更新される。
- ユースケース名: プロンプトの削除
- アクター: ログイン済みユーザー(あなた)
- 概要: 不要になったプロンプトをシステムから削除する。
- 事前条件: ユーザーがログインしており、削除したいプロンプトが既に保存されている。
- 主要成功シナリオ:
- ユーザーはプロンプト一覧から削除したいプロンプトを選択するか、詳細画面から「削除」ボタンをクリックする。
- システムはユーザーに削除確認のダイアログを表示する。
- ユーザーは確認ダイアログで「はい」を選択する。
- システムは該当するプロンプトをデータベースから削除する。
- プロンプト削除成功のメッセージが表示され、プロンプト一覧から削除されたプロンプトがなくなる。
- 代替フロー:
- 削除キャンセル: ユーザーが確認ダイアログで「いいえ」を選択した場合、プロンプトは削除されずに元の画面に戻る。
- 事後条件: 選択されたプロンプトがシステムから完全に削除される。
3. LoRAの管理
- ユースケース名: 新規LoRAの追加
- アクター: ログイン済みユーザー(あなた)
- 概要: 新しいLoRAモデルの情報をアプリケーションに登録する。ファイル自体はローカルに存在し、その管理データのみを登録する。
- 事前条件: ユーザーがログインしている。
- 主要成功シナリオ:
- ユーザーは「新規LoRA追加」画面にアクセスする。
- ユーザーは以下の情報を入力する:
- LoRAのファイル名(必須、識別子)
- ベースモデル(必須、どのCheckpointモデルで使用するか)
- トリガーワード(オプション)
- サンプル画像(オプション、後述のアップロード機能で追加)
- 商用利用可否(必須、チェックボックスまたはプルダウン)
- 推奨設定(オプション、使用する際の推奨パラメータなど)
- カテゴリ(オプション)
- ユーザーは「保存」ボタンをクリックする。
- システムは入力された情報を検証し、データベースに保存する。
- LoRA情報登録成功のメッセージが表示され、LoRA一覧に追加される。
- 代替フロー:
- 入力検証エラー: 必須項目が未入力の場合、エラーメッセージを表示し、入力を促す。
- ファイル名重複: 既に登録済みのファイル名が入力された場合、エラーメッセージを表示し、別のファイル名または既存情報の編集を促す。
- 事後条件: 新しいLoRAの管理データがシステムに保存され、後から参照・利用可能になる。
- ユースケース名: LoRAの参照・検索
- アクター: ログイン済みユーザー(あなた)
- 概要: 保存されているLoRAの管理データを一覧表示し、キーワード、フィルタ(ベースモデル、商用利用可否)、タグ、カテゴリで検索して目的のLoRAを見つける。
- 事前条件: ユーザーがログインしており、LoRAの管理データが保存されている。
- 主要成功シナリオ:
- ユーザーはLoRA一覧画面にアクセスする。
- システムは保存されている全てのLoRAの管理データをリスト表示する(ソート順は選択可能)。
- ユーザーは検索バーにキーワードを入力するか、ベースモデル、商用利用可否、タグ、カテゴリを選択して検索を実行する。
- システムは検索条件に合致するLoRAのみを絞り込んで表示する。
- ユーザーは各LoRAの詳細を閲覧するためにクリックする。
- 事後条件: ユーザーが目的のLoRAの管理データを見つけ、その詳細情報を確認できる。
- ユースケース名: LoRAの管理データの編集
- アクター: ログイン済みユーザー(あなた)
- 概要: 既存のLoRAの管理情報(ベースモデル、トリガーワードなど)を更新する。
- 事前条件: ユーザーがログインしており、編集したいLoRAの管理データが既に保存されている。
- 主要成功シナリオ:
- ユーザーはLoRA一覧から編集したいLoRAを選択し、詳細画面を開く。
- ユーザーは「編集」ボタンをクリックする。
- ユーザーはLoRAの管理情報(ベースモデル、トリガーワード、サンプル画像、商用利用可否、推奨設定、カテゴリなど)を修正する。
- ユーザーは「保存」ボタンをクリックする。
- システムは更新された情報を検証し、データベースを更新する。
- LoRA情報更新成功のメッセージが表示される。
- 代替フロー:
- 入力検証エラー: 不正な形式の入力があった場合、エラーメッセージを表示し、再入力を促す。
- 事後条件: 選択されたLoRAの管理データがシステム内で更新される。
- ユースケース名: LoRAの管理データの削除
- アクター: ログイン済みユーザー(あなた)
- 概要: 不要になったLoRAの管理データをシステムから削除する。
- 事前条件: ユーザーがログインしており、削除したいLoRAの管理データが既に保存されている。
- 主要成功シナリオ:
- ユーザーはLoRA一覧から削除したいLoRAを選択するか、詳細画面から「削除」ボタンをクリックする。
- システムはユーザーに削除確認のダイアログを表示する。
- ユーザーは確認ダイアログで「はい」を選択する。
- システムは該当するLoRAの管理データと、関連するサンプル画像をデータベースとローカルストレージから削除する。
- LoRA情報削除成功のメッセージが表示され、LoRA一覧から削除されたLoRAがなくなる。
- 代替フロー:
- 削除キャンセル: ユーザーが確認ダイアログで「いいえ」を選択した場合、LoRAは削除されずに元の画面に戻る。
- 事後条件: 選択されたLoRAの管理データと関連するサンプル画像がシステムから完全に削除される。
4. Checkpointの管理
- ユースケース名: 新規Checkpointの追加
- アクター: ログイン済みユーザー(あなた)
- 概要: 新しいCheckpointモデルの情報をアプリケーションに登録する。ファイル自体はローカルに存在し、その管理データのみを登録する。
- 事前条件: ユーザーがログインしている。
- 主要成功シナリオ:
- ユーザーは「新規Checkpoint追加」画面にアクセスする。
- ユーザーは以下の情報を入力する:
- Checkpoint のファイル名(必須、識別子)
- ベースモデル(オプション、例: SD1.5, SDXLなど)
- サンプル画像(オプション、後述のアップロード機能で追加)
- 商用利用可否(必須、チェックボックスまたはプルダウン)
- 推奨設定(オプション、使用する際の推奨パラメータなど)
- カテゴリ(オプション)
- ユーザーは「保存」ボタンをクリックする。
- システムは入力された情報を検証し、データベースに保存する。
- Checkpoint情報登録成功のメッセージが表示され、Checkpoint一覧に追加される。
- 代替フロー:
- 入力検証エラー: 必須項目が未入力の場合、エラーメッセージを表示し、入力を促す。
- ファイル名重複: 既に登録済みのファイル名が入力された場合、エラーメッセージを表示し、別のファイル名または既存情報の編集を促す。
- 事後条件: 新しいCheckpointの管理データがシステムに保存され、後から参照・利用可能になる。
- ユースケース名: Checkpointの参照・検索
- アクター: ログイン済みユーザー(あなた)
- 概要: 保存されているCheckpointの管理データを一覧表示し、キーワード、フィルタ(ベースモデル、商用利用可否)、タグ、カテゴリで検索して目的のCheckpointを見つける。
- 事前条件: ユーザーがログインしており、Checkpointの管理データが保存されている。
- 主要成功シナリオ:
- ユーザーはCheckpoint一覧画面にアクセスする。
- システムは保存されている全てのCheckpointの管理データをリスト表示する(ソート順は選択可能)。
- ユーザーは検索バーにキーワードを入力するか、ベースモデル、商用利用可否、タグ、カテゴリを選択して検索を実行する。
- システムは検索条件に合致するCheckpointのみを絞り込んで表示する。
- ユーザーは各Checkpointの詳細を閲覧するためにクリックする。
- 事後条件: ユーザーが目的のCheckpointの管理データを見つけ、その詳細情報を確認できる。
- ユースケース名: Checkpointの管理データの編集
- アクター: ログイン済みユーザー(あなた)
- 概要: 既存のCheckpointの管理情報(ベースモデル、サンプル画像など)を更新する。
- 事前条件: ユーザーがログインしており、編集したいCheckpointの管理データが既に保存されている。
- 主要成功シナリオ:
- ユーザーはCheckpoint一覧から編集したいCheckpointを選択し、詳細画面を開く。
- ユーザーは「編集」ボタンをクリックする。
- ユーザーはCheckpointの管理情報(ベースモデル、サンプル画像、商用利用可否、推奨設定、カテゴリなど)を修正する。
- ユーザーは「保存」ボタンをクリックする。
- システムは更新された情報を検証し、データベースを更新する。
- Checkpoint情報更新成功のメッセージが表示される。
- 代替フロー:
- 入力検証エラー: 不正な形式の入力があった場合、エラーメッセージを表示し、再入力を促す。
- 事後条件: 選択されたCheckpointの管理データがシステム内で更新される。
- ユースケース名: Checkpointの管理データの削除
- アクター: ログイン済みユーザー(あなた)
- 概要: 不要になったCheckpointの管理データをシステムから削除する。
- 事前条件: ユーザーがログインしており、削除したいCheckpointの管理データが既に保存されている。
- 主要成功シナリオ:
- ユーザーはCheckpoint一覧から削除したいCheckpointを選択するか、詳細画面から「削除」ボタンをクリックする。
- システムはユーザーに削除確認のダイアログを表示する。
- ユーザーは確認ダイアログで「はい」を選択する。
- システムは該当するCheckpointの管理データと、関連するサンプル画像をデータベースとローカルストレージから削除する。
- Checkpoint情報削除成功のメッセージが表示され、Checkpoint一覧から削除されたCheckpointがなくなる。
- 代替フロー:
- 削除キャンセル: ユーザーが確認ダイアログで「いいえ」を選択した場合、Checkpointは削除されずに元の画面に戻る。
- 事後条件: 選択されたCheckpointの管理データと関連するサンプル画像がシステムから完全に削除される。
5. サンプル画像の管理
- ユースケース名: サンプル画像のアップロード
- アクター: ログイン済みユーザー(あなた)
- 概要: プロンプト、LoRA、またはCheckpointに関連付けるサンプル画像をシステムにアップロードする。
- 事前条件: ユーザーがログインしており、関連付けたいプロンプト/LoRA/Checkpointの登録画面または編集画面を開いている。
- 主要成功シナリオ:
- ユーザーは画像アップロードボタンをクリックする。
- ファイル選択ダイアログが表示され、ユーザーは画像ファイルを選択する。
- システムは選択された画像をローカルサーバー上の指定されたディレクトリに保存する。
- システムは保存された画像のパスまたは識別子を、関連するプロンプト/LoRA/Checkpointのデータに紐付けてデータベースに保存する。
- 画像アップロード成功のメッセージが表示され、画面にサムネイルが表示される。
- 代替フロー:
- ファイル形式エラー: 対応していない画像形式(例: JPEG, PNG以外)の場合、エラーメッセージを表示する。
- ファイルサイズ制限オーバー: 設定されたファイルサイズ上限を超過した場合、エラーメッセージを表示する。
- アップロード失敗: ファイルの保存に失敗した場合、エラーメッセージを表示する。
- 事後条件: サンプル画像がシステムに保存され、関連するプロンプト/LoRA/Checkpointに紐付けられる。
- ユースケース名: サンプル画像の削除
- アクター: ログイン済みユーザー(あなた)
- 概要: 登録済みのサンプル画像をシステムから削除する。
- 事前条件: ユーザーがログインしており、削除したいサンプル画像が関連付けられているプロンプト/LoRA/Checkpointの編集画面を開いている。
- 主要成功シナリオ:
- ユーザーは削除したいサンプル画像の「削除」ボタンまたはアイコンをクリックする。
- システムはユーザーに削除確認のダイアログを表示する。
- ユーザーは確認ダイアログで「はい」を選択する。
- システムはデータベースから関連付けを解除し、ローカルサーバー上の画像ファイルを削除する。
- 画像削除成功のメッセージが表示され、画面からサムネイルが消える。
- 代替フロー:
- 削除キャンセル: ユーザーが確認ダイアログで「いいえ」を選択した場合、画像は削除されずに元の画面に戻る。
- 事後条件: サンプル画像がシステムから削除され、関連付けが解除される。
6. タグの管理
- ユースケース名: 新規タグの作成
- アクター: ログイン済みユーザー(あなた)
- 概要: 新しいタグをシステムに登録する。
- 事前条件: ユーザーがログインしている。
- 主要成功シナリオ:
- ユーザーは「タグ管理」画面にアクセスするか、プロンプト/LoRA/Checkpointの新規作成/編集時に新しいタグを入力する。
- ユーザーはタグ名を入力し、「追加」ボタンをクリックする。
- システムは入力されたタグ名が既に存在しないか検証する。
- システムは新しいタグをデータベースに保存する。
- タグ作成成功のメッセージが表示され、タグ一覧に追加される。
- 代替フロー:
- タグ名重複: 既に存在するタグ名が入力された場合、エラーメッセージを表示する。
- 入力検証エラー: 不正な形式の入力があった場合、エラーメッセージを表示し、入力を促す。
- 事後条件: 新しいタグがシステムに登録され、プロンプト/LoRA/Checkpointに適用可能になる。
- ユースケース名: タグの一覧表示
- アクター: ログイン済みユーザー(あなた)
- 概要: 登録されている全てのタグを一覧で確認する。
- 事前条件: ユーザーがログインしている。
- 主要成功シナリオ:
- ユーザーは「タグ管理」画面にアクセスする。
- システムは登録されている全てのタグをリスト表示する(ソート順は選択可能)。
- ユーザーはタグ名をクリックして、そのタグが適用されているプロンプト/LoRA/Checkpointを検索できる。
- 事後条件: ユーザーがシステムに登録されているタグのリストを閲覧できる。
- ユースケース名: タグの編集
- アクター: ログイン済みユーザー(あなた)
- 概要: 既存のタグ名を変更する。変更されたタグは、そのタグが適用されている全てのプロンプト/LoRA/Checkpointに反映される。
- 事前条件: ユーザーがログインしており、編集したいタグが登録されている。
- 主要成功シナリオ:
- ユーザーは「タグ管理」画面で編集したいタグを選択し、「編集」ボタンをクリックする。
- ユーザーは新しいタグ名を入力し、「保存」ボタンをクリックする。
- システムは新しいタグ名が既に存在しないか検証し、データベースのタグ名を更新する。
- タグ編集成功のメッセージが表示される。
- 代替フロー:
- タグ名重複: 新しいタグ名が既に存在するタグと重複する場合、エラーメッセージを表示する。
- 入力検証エラー: 不正な形式の入力があった場合、エラーメッセージを表示し、入力を促す。
- 事後条件: 選択されたタグの名前がシステム内で更新され、関連する全てのデータに反映される。
- ユースケース名: タグの削除
- アクター: ログイン済みユーザー(あなた)
- 概要: 不要になったタグをシステムから削除する。削除されたタグは、そのタグが適用されていた全てのプロンプト/LoRA/Checkpointから解除される。
- 事前条件: ユーザーがログインしており、削除したいタグが登録されている。
- 主要成功シナリオ:
- ユーザーは「タグ管理」画面で削除したいタグを選択し、「削除」ボタンをクリックする。
- システムはユーザーに削除確認のダイアログを表示する(このタグが適用されているアイテムがあることを警告するのも有効)。
- ユーザーは確認ダイアログで「はい」を選択する。
- システムは該当するタグをデータベースから削除し、そのタグが適用されていた全てのプロンプト/LoRA/Checkpointから関連付けを解除する。
- タグ削除成功のメッセージが表示され、タグ一覧から削除されたタグがなくなる。
- 代替フロー:
- 削除キャンセル: ユーザーが確認ダイアログで「いいえ」を選択した場合、タグは削除されずに元の画面に戻る。
- 事後条件: 選択されたタグがシステムから完全に削除され、関連するデータから解除される。
7. カテゴリの管理
- ユースケース名: 新規カテゴリの作成
- アクター: ログイン済みユーザー(あなた)
- 概要: 新しいカテゴリをシステムに登録する。
- 事前条件: ユーザーがログインしている。
- 主要成功シナリオ:
- ユーザーは「カテゴリ管理」画面にアクセスするか、プロンプト/LoRA/Checkpointの新規作成/編集時に新しいカテゴリを入力する。
- ユーザーはカテゴリ名を入力し、「追加」ボタンをクリックする。
- システムは入力されたカテゴリ名が既に存在しないか検証する。
- システムは新しいカテゴリをデータベースに保存する。
- カテゴリ作成成功のメッセージが表示され、カテゴリ一覧に追加される。
- 代替フロー:
- カテゴリ名重複: 既に存在するカテゴリ名が入力された場合、エラーメッセージを表示する。
- 入力検証エラー: 不正な形式の入力があった場合、エラーメッセージを表示し、入力を促す。
- 事後条件: 新しいカテゴリがシステムに登録され、プロンプト/LoRA/Checkpointに適用可能になる。
- ユースケース名: カテゴリの一覧表示
- アクター: ログイン済みユーザー(あなた)
- 概要: 登録されている全てのカテゴリを一覧で確認する。
- 事前条件: ユーザーがログインしている。
- 主要成功シナリオ:
- ユーザーは「カテゴリ管理」画面にアクセスする。
- システムは登録されている全てのカテゴリをリスト表示する(ソート順は選択可能)。
- ユーザーはカテゴリ名をクリックして、そのカテゴリに属するプロンプト/LoRA/Checkpointを検索できる。
- 事後条件: ユーザーがシステムに登録されているカテゴリのリストを閲覧できる。
- ユースケース名: カテゴリの編集
- アクター: ログイン済みユーザー(あなた)
- 概要: 既存のカテゴリ名を変更する。変更されたカテゴリは、そのカテゴリが適用されている全てのプロンプt/LoRA/Checkpointに反映される。
- 事前条件: ユーザーがログインしており、編集したいカテゴリが登録されている。
- 主要成功シナリオ:
- ユーザーは「カテゴリ管理」画面で編集したいカテゴリを選択し、「編集」ボタンをクリックする。
- ユーザーは新しいカテゴリ名を入力し、「保存」ボタンをクリックする。
- システムは新しいカテゴリ名が既に存在しないか検証し、データベースのカテゴリ名を更新する。
- カテゴリ編集成功のメッセージが表示される。
- 代替フロー:
- カテゴリ名重複: 新しいカテゴリ名が既に存在するカテゴリと重複する場合、エラーメッセージを表示する。
- 入力検証エラー: 不正な形式の入力があった場合、エラーメッセージを表示し、入力を促す。
- 事後条件: 選択されたカテゴリの名前がシステム内で更新され、関連する全てのデータに反映される。
- ユースケース名: カテゴリの削除
- アクター: ログイン済みユーザー(あなた)
- 概要: 不要になったカテゴリをシステムから削除する。削除されたカテゴリは、そのカテゴリが適用されていた全てのプロンプト/LoRA/Checkpointから解除される。
- 事前条件: ユーザーがログインしており、削除したいカテゴリが登録されている。
- 主要成功シナリオ:
- ユーザーは「カテゴリ管理」画面で削除したいカテゴリを選択し、「削除」ボタンをクリックする。
- システムはユーザーに削除確認のダイアログを表示する(このカテゴリに属するアイテムがあることを警告するのも有効)。
- ユーザーは確認ダイアログで「はい」を選択する。
- システムは該当するカテゴリをデータベースから削除し、そのカテゴリが適用されていた全てのプロンプト/LoRA/Checkpointから関連付けを解除する。
- カテゴリ削除成功のメッセージが表示され、カテゴリ一覧から削除されたカテゴリがなくなる。
- 代替フロー:
- 削除キャンセル: ユーザーが確認ダイアログで「いいえ」を選択した場合、カテゴリは削除されずに元の画面に戻る。
- 事後条件: 選択されたカテゴリがシステムから完全に削除され、関連するデータから解除される。
8. データインポート/エクスポート
- ユースケース名: データのインポート(CSV形式)
- アクター: ログイン済みユーザー(あなた)
- 概要: 外部CSVファイルからLoRA/Checkpointの管理データをインポートし、アプリケーションに一括で登録する。
- 事前条件: ユーザーがログインしている。インポートしたい形式のCSVファイルが存在する。
- 主要成功シナリオ:
- ユーザーは「データインポート」機能を選択する。
- ユーザーはインポートするデータタイプ(LoRAまたはCheckpoint)を選択する。
- ユーザーはインポートしたいCSVファイル(
Model Name, Model Type, Base Model, Trigger Words, Thumbnail Image, Commercial Use, Usage Tips, File Name を含む)を指定し、アップロードする。
- システムはファイルの形式を検証し、各カラムのデータが正しい型であるかを確認する。不要なカラムが存在する場合でも、そのデータを処理せず無視して正常に動作する。
- システムはパースされたデータをデータベースに登録する(既存のデータとの衝突処理:上書き、スキップ、エラーなど、選択肢を提供することも考慮)。
- インポート成功のメッセージと、インポートされたレコード数、スキップされたレコード数などが表示される。
- 代替フロー:
- ファイル形式エラー: CSV以外のファイル形式の場合、エラーメッセージを表示する。
- ヘッダー不一致エラー: CSVのヘッダーが指定された形式と異なる場合、エラーメッセージを表示する。
- データ検証エラー: CSV内のデータが不正な形式(例:
Commercial Useがbooleanでない)の場合、エラーメッセージを表示し、スキップまたはインポートを中止する。
- ファイル名重複時の処理: 既存のデータとの重複を検知し、ユーザーに上書きするかスキップするか選択肢を提示する。
- 事後条件: 指定されたファイルからのLoRA/Checkpoint管理データがシステムに登録される。
- ユースケース名: データのエクスポート(CSV形式)
- アクター: ログイン済みユーザー(あなた)
- 概要: 保存されているLoRA/Checkpointの管理データをCSVファイルとしてエクスポートする。
- 事前条件: ユーザーがログインしており、エクスポートしたいLoRA/Checkpointの管理データが保存されている。
- 主要成功シナリオ:
- ユーザーは「データエクスポート」機能を選択する。
- ユーザーはエクスポートするデータタイプ(LoRAまたはCheckpoint)を選択する。
- ユーザーはエクスポートするデータの範囲(全件、検索結果、選択したもの)を選択する。
- システムは選択されたLoRA/Checkpoint管理データを
Model Name, Model Type, Base Model, Trigger Words, Thumbnail Image, Commercial Use, Usage Tips, File Name などのカラムを含むCSV形式で生成する。
- ユーザーは生成されたCSVファイルをダウンロードできる。
- 事後条件: LoRA/Checkpoint管理データが指定された形式のCSVファイルとしてエクスポートされる。
9. 外部連携機能
- ユースケース名: Civitaiからのモデル/画像情報自動取得
- アクター: ログイン済みユーザー(あなた)
- 概要: ユーザーが指定したCivitaiのURLから、モデルまたは画像データをAPI経由で取得し、その付随情報(プロンプト、モデル名、タグなど)とともにアプリケーションに自動で登録する。
- 事前条件: ユーザーがログインしている。インターネット接続が利用可能である。Civitai APIキーが登録済みである。
- 主要成功シナリオ:
- ユーザーは「Civitaiから追加」画面にアクセスする。
- ユーザーはCivitaiのモデルページまたは画像ページのURLを入力し、「取得」ボタンをクリックする。
- システムは入力されたURLを検証し、CivitaiのAPIエンドポイントを特定する。
- システムは、登録済みのAPIキーを含めてCivitai APIにリクエストを送信する。
- システムはAPIからの応答データを受信し、モデル情報(ファイル名、ベースモデル、商用利用可否など)や画像情報(プロンプト、設定など)、およびサンプル画像をパースする。
- システムはパースした情報を検証し、必要に応じてサンプル画像をローカルサーバーに保存する。
- システムは、取得した情報をデータベースに新規登録する。
- 登録成功のメッセージが表示され、新規登録されたデータ(LoRA/Checkpoint/プロンプト)が各一覧に追加される。
- 代替フロー:
- 無効なURL: 入力されたURLがCivitaiのものでない、または形式が不正な場合、エラーメッセージを表示し、再入力を促す。
- APIエラー: Civitai APIがダウンしている、またはエラー応答を返した場合、その旨を伝えるメッセージを表示する。
- データ不備: API応答に必要な情報(例: モデル名、プロンプト)が含まれていない場合、エラーメッセージを表示し、登録を中止する。
- ネットワークエラー: インターネット接続に問題がある場合、エラーメッセージを表示する。
- データ重複: 取得したモデル名やファイル名が既に登録済みの場合、警告メッセージを表示し、上書きまたはスキップの選択肢をユーザーに提示する。
- APIキー未登録/無効: APIキーが登録されていない、または無効なAPIキーで認証に失敗した場合、APIキーの登録を促すメッセージを表示する。
- 事後条件: Civitaiのモデルまたは画像データと付随情報がアプリケーションに安全に登録され、後から参照・利用可能になる。
- ユースケース名: Civitai APIキーの登録・変更
- アクター: ログイン済みユーザー(あなた)
- 概要: Civitai APIを利用するためのAPIキーをアプリケーションに安全に登録、または既存のキーを変更する。
- 事前条件: ユーザーがログインしている。
- 主要成功シナリオ:
- ユーザーは設定画面または「Civitai連携設定」画面にアクセスする。
- ユーザーはCivitaiのWebサイトから取得したAPIキーを入力欄に貼り付ける。
- ユーザーは「保存」または「更新」ボタンをクリックする。
- システムは入力されたAPIキーを検証する(例: 形式の確認)。
- システムはAPIキーを安全な方法(例: ローカルの安全な設定ファイルやデータベースの暗号化されたフィールド)で保存する。
- 保存成功のメッセージが表示される。
- 代替フロー:
- 入力検証エラー: 不正な形式のAPIキーが入力された場合、エラーメッセージを表示し、再入力を促す。
- 事後条件: Civitai APIキーがシステムに安全に保存され、API連携機能が利用可能になる。
- 非機能要件としての考慮点:
- セキュリティ: APIキーは非常に重要な情報であるため、平文で保存せず、暗号化して保存する必要がある。
- 可用性: APIキーの登録に失敗した場合でも、他のアプリケーション機能は継続して利用可能であること。
- ユーザビリティ: APIキーの入力欄は、パスワード入力欄のようにマスク表示されるべきである。
技術要件/非機能要件として切り出すべき事項:
- ファイルパスの管理(LoRA/Checkpoint):
- LoRAファイル名/Checkpointファイル名は、実際のファイルパスではなく、ユーザーが設定する識別子または参照名として扱う。
- 実体となるLoRAファイルやCheckpointファイルは、ユーザーがStable Diffusionの指定ディレクトリに手動で配置することを前提とする。
- アプリケーションは、登録されたLoRA/Checkpointのデータが存在しなくても動作を継続する。
えりるについて

日本のどこかに生息する平成生まれの研究者。とっても理論家と思いきや気分屋さんでもある。基本的にめんどくさがり。修士(工学)を持っている。
Windows, Mac, Linuxの三刀流。