---
type: Template
title: "要件定義 - RDRA"
description: "RDRA 2.0 に基づく要件定義書のテンプレート。"
tags: [template]
status: stable
generated: { by: human:kakimomokuri, at: 2025-09-11T10:30:55Z }
---

# 要件定義 - [システム名]

## システム価値

### システムコンテキスト

```plantuml
@startuml

title システムコンテキスト図 - [システム名]

left to right direction

actor [アクター1名]
actor [アクター2名]

agent [外部システム1名]
agent [外部システム2名]

usecase [システム名]
note top of [システム名]
  [システムの目的とビジョン説明]
  [提供価値の詳細記述]
  [ステークホルダーへの価値提案]
end note

:[アクター1名]: -- ([システム名])
:[アクター2名]: -- ([システム名])
([システム名]) -- [外部システム1名]
([システム名]) -- [外部システム2名]

@enduml
```

### 要求モデル

```plantuml
@startuml

title 要求モデル図 - [システム名]

left to right direction

actor [アクター1名]
note "[アクター1の要求1]" as a1_r1
note "[アクター1の要求2]" as a1_r2
note "[アクター1の要求3]" as a1_r3
note as a1_dr1 #Turquoise
  [アクター1への派生要求]
  [具体的な実現方法や条件]
end note
:[アクター1名]: -- a1_r1
:[アクター1名]: -- a1_r2
:[アクター1名]: -- a1_r3
a1_r1 -- a1_dr1
a1_r2 -- a1_dr1
a1_r3 -- a1_dr1

actor [アクター2名]
note "[アクター2の要求1]" as a2_r1
note "[アクター2の要求2]" as a2_r2
note "[アクター2の要求3]" as a2_r3
note as a2_dr1 #Turquoise
  [アクター2への派生要求]
  [具体的な実現方法や条件]
end note
:[アクター2名]: -- a2_r1
:[アクター2名]: -- a2_r2
:[アクター2名]: -- a2_r3
a2_r1 -- a2_dr1
a2_r2 -- a2_dr1
a2_r3 -- a2_dr1

@enduml
```

## システム外部環境

### ビジネスコンテキスト

```plantuml
@startuml

title ビジネスコンテキスト図 - [システム名]

left to right direction

actor [外部アクター1]
actor [外部アクター2]

node [組織名] {
  rectangle [部門1名] {
    actor [内部アクター1]
    actor [内部アクター2]
  }
  
  rectangle [部門2名] {
    actor [内部アクター3]
  }
  
  usecase [業務1名]
  usecase [業務2名]
  usecase [業務3名]
  
  artifact [業務資産1]
  artifact [業務資産2]
}

node [外部組織] {
  agent [外部システム1]
  agent [外部システム2]
}

:[外部アクター1]: -- ([業務1名])
:[外部アクター2]: -- ([業務1名])

([業務1名]) -- :[内部アクター1]:
([業務2名]) -- :[内部アクター2]:
([業務3名]) -- :[内部アクター3]:

([業務1名]) -- [業務資産1]
([業務2名]) -- [業務資産2]

([業務1名]) -- [外部システム1]
([業務2名]) -- [外部システム2]

@enduml
```

### ビジネスユースケース

#### [業務1名]

```plantuml
@startuml

title ビジネスユースケース図 - [業務1名]

left to right direction

actor [アクター1]
actor [アクター2]
actor [アクター3]

agent [業務場所・組織]

usecase [BUC1名] as uc_01
usecase [BUC2名] as uc_02
usecase [BUC3名] as uc_03

artifact [業務資産1] as af_01
artifact [業務資産2] as af_02
artifact [業務資産3] as af_03

:[アクター1]: -- (uc_01)
:[アクター1]: -- (uc_02)
:[アクター2]: -- (uc_02)
:[アクター2]: -- (uc_03)
:[アクター3]: -- (uc_03)

(uc_01) -- [業務場所・組織]
(uc_02) -- [業務場所・組織]
(uc_03) -- [業務場所・組織]

(uc_01) -- af_01
(uc_01) -- af_02
(uc_02) -- af_02
(uc_03) -- af_03

@enduml
```

#### [業務2名]

```plantuml
@startuml

title ビジネスユースケース図 - [業務2名]

left to right direction

actor [アクター1]
actor [アクター2]

agent [業務場所・組織]

usecase [BUC1名] as uc_01
usecase [BUC2名] as uc_02

artifact [業務資産1] as af_01
artifact [業務資産2] as af_02

:[アクター1]: -- (uc_01)
:[アクター2]: -- (uc_01)
:[アクター2]: -- (uc_02)

(uc_01) -- [業務場所・組織]
(uc_02) -- [業務場所・組織]

(uc_01) -- af_01
(uc_02) -- af_02

@enduml
```

### 業務フロー

#### [BUC名1]の業務フロー

```plantuml
@startuml

title 業務フロー図 - [BUC名1]

|[アクター1]|
partition [フェーズ1名] {
  :[アクティビティ1];
  :[アクティビティ2];
  :[アクティビティ3];
}

|[アクター2]|
partition [フェーズ2名] {
  :[アクティビティ4];
  split
    :[アクティビティ5];
  split again
    -> [条件分岐の場合];
    :[代替アクティビティ];
    stop
  end split
  :[アクティビティ6];
}

|[アクター1]|
partition [フェーズ3名] {
  :[アクティビティ7];
  :[アクティビティ8];
}
stop

@enduml
```

#### [BUC名2]の業務フロー

```plantuml
@startuml

title 業務フロー図 - [BUC名2]

|[アクター1]|
start
:[アクティビティ1];
:[アクティビティ2];

|[アクター2]|
:[アクティビティ3];
if ([判定条件]?) then (yes)
  :[アクティビティ4];
else (no)
  :[アクティビティ5];
endif

|[アクター1]|
:[アクティビティ6];
stop

@enduml
```

### 利用シーン

#### [BUC名1]の利用シーン

```plantuml
@startuml

title 利用シーン図 - [BUC名1]

left to right direction

actor [アクター1]
actor [アクター2]

frame [利用シーン1名]
note right of [利用シーン1名]
  [利用シーンの背景・目的]
  [具体的な利用状況の説明]
  [期待される効果・価値]
  [制約条件や前提条件]
end note

frame [利用シーン2名]
note right of [利用シーン2名]
  [利用シーンの背景・目的]
  [具体的な利用状況の説明]
  [期待される効果・価値]
  [制約条件や前提条件]
end note

usecase [UC名1]
usecase [UC名2]
usecase [UC名3]

:[アクター1]: -- [利用シーン1名]
:[アクター2]: -- [利用シーン1名]
[利用シーン1名] -- ([UC名1])
[利用シーン1名] -- ([UC名2])

:[アクター2]: -- [利用シーン2名]
[利用シーン2名] -- ([UC名3])

@enduml
```

#### [BUC名2]の利用シーン

```plantuml
@startuml

title 利用シーン図 - [BUC名2]

left to right direction

actor [アクター1]
actor [アクター2]

frame [利用シーン名]
note right of [利用シーン名]
  [利用シーンの背景・目的]
  [具体的な利用状況の説明]
  [期待される効果・価値]
  [制約条件や前提条件]
end note

usecase [UC名1]
usecase [UC名2]

:[アクター1]: -- [利用シーン名]
:[アクター2]: -- [利用シーン名]
[利用シーン名] -- ([UC名1])
[利用シーン名] -- ([UC名2])

@enduml
```

### バリエーション・条件

#### [分類軸1名]

| [分類名] | 説明 |
|----------|------|
| [分類値1] | [分類値1の説明] |
| [分類値2] | [分類値2の説明] |
| [分類値3] | [分類値3の説明] |

#### [分類軸2名]

| [分類名] | 説明 |
|----------|------|
| [分類値1] | [分類値1の説明] |
| [分類値2] | [分類値2の説明] |

#### [分類軸3名]

| [分類名] | 説明 |
|----------|------|
| [分類値1] | [分類値1の説明] |
| [分類値2] | [分類値2の説明] |
| [分類値3] | [分類値3の説明] |

## システム境界

### ユースケース複合図

#### [BUC名1]

```plantuml
@startuml

title ユースケース複合図 - [BUC名1]

left to right direction

actor [アクター1] as user
actor [アクター2] as admin

frame "[利用シーン1名]" as f01
usecase "[UC名1]" as UC1
usecase "[UC名2]" as UC2
boundary "[画面名1]" as b01
boundary "[画面名2]" as b02
entity "[情報名1]" as e01
entity "[情報名2]" as e02
control "[条件名1]" as c01
control "[条件名2]" as c02

user -- f01
f01 -- UC1
f01 -- UC2

b01 -- UC1
UC1 -- e01
UC1 -- c01

b02 -- UC2
UC2 -- e02
UC2 -- c02

frame "[利用シーン2名]" as f02
usecase "[UC名3]" as UC3
boundary "[画面名3]" as b03
entity "[情報名3]" as e03
control "[条件名3]" as c03

admin -- f02
f02 -- UC3
b03 -- UC3
UC3 -- e03
UC3 -- c03

@enduml
```

#### [BUC名2]

```plantuml
@startuml

title ユースケース複合図 - [BUC名2]

left to right direction

actor [アクター1] as user

frame "[利用シーン名]" as f01
usecase "[UC名1]" as UC1
usecase "[UC名2]" as UC2
boundary "[画面名1]" as b01
boundary "[画面名2]" as b02
entity "[情報名1]" as e01
entity "[情報名2]" as e02
control "[条件名1]" as c01
interface "[イベント名1]" as i01

user -- f01
f01 -- UC1
f01 -- UC2

b01 -- UC1
UC1 -- e01
UC1 -- c01

b02 -- UC2
UC2 -- e02
UC2 -- i01

@enduml
```

## システム

### 情報モデル

```plantuml
@startuml

title 情報モデル図 - [システム名]

left to right direction

' [エンティティ群1名]関連
entity [情報名1]
entity [情報名2]
entity [情報名3]

' [エンティティ群2名]関連
entity [情報名4]
entity [情報名5]
entity [情報名6]

' [エンティティ群3名]関連
entity [情報名7]
entity [情報名8]

' [エンティティ群4名]関連
entity [情報名9]
entity [情報名10]

' 関連付け
[情報名1] -- [情報名2]
[情報名2] -- [情報名3]

[情報名4] -- [情報名1]
[情報名5] -- [情報名4]
[情報名6] -- [情報名4]

[情報名7] -- [情報名5]
[情報名8] -- [情報名5]

[情報名9] -- [情報名1]
[情報名10] -- [情報名1]

@enduml
```

### 状態モデル

#### [情報名1]の状態遷移

```plantuml
@startuml
[*] --> 初期

初期 --> 状態1 : UC1

state 状態1 {
  [*] --> 子状態1
  子状態1 --> 子状態2 : UC2
  子状態2 --> 子状態1 : UC3
}

状態1 --> 状態2 : UC4
状態2 --> 状態1 : UC5

状態1 --> 終了 : UC6
状態2 --> 終了 : UC7
終了 --> [*]
@enduml
```

#### [情報名2]の状態遷移

```plantuml
@startuml
title 情報名2の状態遷移図

[*] --> 初期 : UC1

初期 --> 状態1 : UC2
状態1 --> 状態2 : UC3
状態2 --> 状態3 : UC4
状態2 --> 状態4 : UC5
状態4 --> 状態3 : UC6

状態3 --> 終了 : UC7

状態1 --> キャンセル : UC8
状態2 --> キャンセル : UC9
キャンセル --> [*]
終了 --> [*]
@enduml
```

---

## 記入ガイド

### 1. システムコンテキスト図の記入方法

- **[システム名]**: 開発対象システムの名前
- **[アクター名]**: システムを利用する人や組織
- **[外部システム名]**: 連携する外部システムやサービス
- **システムの目的とビジョン**: システムが解決する課題と提供価値を簡潔に記述

### 2. 要求モデル図の記入方法

- **[アクターの要求]**: 各アクターがシステムに求めること
- **[派生要求]**: 複数の要求から導出される具体的な要件
- 要求は「〜したい」形式で記述
- 派生要求は「〜できること」形式で記述

### 3. ビジネスコンテキスト図の記入方法

- **[組織名]**: システムを利用する組織全体
- **[部門名]**: 組織内の各部門
- **[業務名]**: 各部門で行われる業務
- **[業務資産]**: 業務で扱う重要な物理的・情報的資産
- **[外部組織]**: 連携する外部の組織やシステム

### 4. ビジネスユースケース図の記入方法

- **[BUC名]**: ビジネスユースケース（業務の作業単位）
- 業務を実行する場所や組織をagentで表現
- 業務で扱う資産をartifactで表現
- BUCは動詞形で記述（例：「商品を登録する」）

### 5. 業務フロー図の記入方法

- **[アクティビティ名]**: BUCを構成する具体的な作業
- **[フェーズ名]**: 作業のまとまりやグループ
- **[判定条件]**: 業務の分岐点での判定基準
- レーン（|アクター|）でアクターごとの責任を明確化
- partitionで作業フェーズを整理
- split/split againで並行処理や条件分岐を表現
- アクティビティは動詞形で記述

### 6. 利用シーン図の記入方法

- **[利用シーン名]**: システムが利用される具体的な場面
- **利用シーンの説明**: 背景、目的、期待効果、制約条件
- frameで利用シーンをグループ化
- noteで詳細な説明を付加
- 利用シーンからUCへの関連を明示
- ステークホルダーの視点で記述

### 7. ユースケース複合図の記入方法

- **[UC名]**: システムユースケース（システム機能）
- **[画面名]**: ユーザーインターフェース（boundary）
- **[情報名]**: システムが管理するデータ（entity）
- **[条件名]**: システムの動作条件（control）
- **[イベント名]**: 外部との連携点（interface）
- **[利用シーン名]**: UCが実行される具体的な場面（frame）

### 8. 情報モデル図の記入方法

- **[情報名]**: システムが管理するエンティティ
- 関連線で情報間の関係を表現
- エンティティ群ごとにコメントで分類
- ビジネス概念をそのまま情報名に使用

### 9. 状態モデル図の記入方法

- **[状態名]**: 情報が取りうる状態
- **[UC名]**: 状態を変更するユースケース
- 複合状態は state {} で表現
- 各状態にはnoteで説明を付加
- 状態名は名詞形で記述

### 10. バリエーション・条件の記入方法

- **[分類軸名]**: ビジネス上重要な区分の軸
- **[分類値]**: 各軸での具体的な値
- システムの動作を左右する重要な区分を定義
- 将来の拡張性を考慮した分類を設定

### 11. 記入時の注意点

1. **段階的詳細化**: 最初は大まかに記入し、徐々に詳細化
2. **一貫性の確保**: 図間での用語統一と関連性の整合性
3. **ステークホルダー視点**: 業務担当者が理解できる用語を使用
4. **トレーサビリティ**: 上位要求から下位実装までの追跡可能性
5. **適切な抽象化レベル**: 設計詳細ではなく要件レベルで記述

### 12. PlantUML記法の基本

- `actor`: 人や組織
- `usecase`: システムや業務
- `agent`: 外部システムや場所
- `entity`: 情報やデータ
- `boundary`: 画面や入出力
- `control`: 条件や制御
- `interface`: イベントや通信
- `frame`: 利用シーンやグループ化
- `artifact`: 物理的資産や成果物
- `note`: 説明文

このテンプレートを使用して、プロジェクト固有の要件定義書を作成してください。
