黒輔と申します。2025年にエンジニア職として復帰し1年が経ちました。この間にポートフォリオとなるようなWebアプリケーションを作成しております(継続中)。
これまでサービス企画、ドメインのコンテキスト分割、ドメインモデリングを行いました。今回はユースケースを1本書いてみようと思います。
1. ユースケース一覧
今回はすべてのユースケースを記事に載せませんが、以下のようなユースケースを設定しています。
| ID | タイトル | 説明 |
|---|---|---|
| UC-U-01 | 塗料検索(フィルタリング) | ユーザーが特定の条件(色、ブランドなど)で塗料を検索できるようにする。 |
| UC-U-02 | 塗料検索(カラーピッカー) | ユーザーがカラーピッカーを使用して、希望の色に近い塗料を見つけられるようにする。 |
| UC-U-03 | 塗料検索(画像アップロード) | ユーザーが画像をアップロードして、その画像に基づいて塗料を検索できるようにする。 |
| UC-U-04 | 塗料詳細表示 | ユーザーが選択した塗料の詳細情報を閲覧できるようにする。 |
2. ユースケース文書に記述する項目
『はじめての設計をやり抜くための本』(翔泳社)によると、ユースケースを記述するのに必要な項目は以下です。UC-U-01.mdというファイルをリポジトリ内に作成し、そのファイル内に記述していきます。
1. アクター
2. 事前条件
3. 主シナリオ
4. 代替シナリオ
5. 例外シナリオ
3. 出来上がった文書
それぞれ、先述の文献をもとに記述していきます。
# UC-U-01: 塗料検索(フィルタリング)
ユーザーが特定の条件(色、ブランド、価格帯など)で塗料を検索できるようにすることで、目的の塗料を迅速かつ効率的に見つけられるようにする。
## 1. アクター
- 一般ユーザー(ログイン/非ログイン)※以下、「ユーザー」とする。
## 2. 事前条件
- ユーザーがアプリケーションにアクセスできる状態であること。
## 3. 主シナリオ
1. ユーザーが塗料検索ページにアクセスする。
2. ユーザーが検索条件を選択する。
3. ユーザーが「検索」ボタンをクリックする。
4. システムが検索結果を表示する。
5. ユーザーは任意で、「次へ」「前へ」ボタンでページ移動ができる。
1ページの表示件数:
- 30件
## 4. 代替シナリオ
### 4.1. 検索条件が未選択の場合
1. ユーザーが塗料検索ページにアクセスする。
2. ユーザーが検索条件を選択しない。
3. ユーザーが「検索」ボタンをクリックする。
4. システムがデフォルトの順序で検索結果を表示する。
デフォルトの順序: 塗料の型番の昇順。
### 4.2. 検索結果が0件の場合
1. ユーザーが塗料検索ページにアクセスする。
2. ユーザーが検索条件を選択する。
3. ユーザーが「検索」ボタンをクリックする。
4. システムは「該当する塗料が見つかりませんでした」というメッセージを表示する。
## 5. 例外シナリオ
1. ユーザーが塗料検索ページにアクセスする。
2. ユーザーが検索条件を選択する。
3. ユーザーが「検索」ボタンをクリックする。
4. システムはエラーメッセージを表示する。
エラーハンドリング:
- ユーザーが無効な検索条件を送信した場合
- システムの内部エラーが発生した場合
## 6. その他の仕様
### 6.1. 検索条件の詳細
- フィルタ条件は、同一キー内はOR条件で結合され、異なるキー間はAND条件で結合されます。
- 例: `TagIds=red,blue&GlossIds=flat` は `(tag=red OR tag=blue) AND (gloss=flat)` と解釈されます。
※ 6. その他の仕様 は先述した項目リストにありませんが、この時点で(自分の中で)決定している要件であるため、ここに記述しておきました。
4. その他のユースケース
以下のパブリックリポジトリに公開しているため、興味のある方はご覧ください。
5. まとめ
以上の通り、Webアプリケーションのユースケースを定義しました。ここが設計の骨組みとなるので、しっかりと組み立てていくことが大事だなと思いました。「あれ、この仕様ってどうだっけ?」と手が止まってしまった場合にも、参照したい文書ですね。
次回はアプリケーション設計(画面、API、DB)に入っていきたいと思います。