処理フロー図の読み方
処理フロー図は、処理の流れを図で表したものです。フローチャート、シーケンス図、アクティビティ図、状態遷移図など様々な種類があります。
処理フロー図とは
役割
- 処理の流れを視覚化
- 分岐条件を明確化
- 繰り返しを表現
- 処理の開始と終了を明示
いつ使うか
| 設計理解時 | 処理の流れを把握 |
| 実装時 | ロジックの確認 |
| デバッグ時 | どこで問題が起きているか特定 |
| レビュー時 | 処理が正しいか確認 |
フロー図の種類
| 種類 | 特徴 | 用途 |
|---|---|---|
| フローチャート | 最も基本的な流れ図 | 単一処理の流れ |
| シーケンス図 | オブジェクト間のやり取り | API呼び出し、画面遷移 |
| アクティビティ図 | UMLの活動図 | 業務フロー、ユースケース |
| 状態遷移図 | 状態の変化 | ステータス管理 |
種類別に読み方を見る
4つの図はそれぞれ記法・見るポイントが異なります。自分が読みたい図の種類のタブを開いてください。
基本記号
| 記号 | 名称 | 意味 |
|---|---|---|
| ○ / 楕円 | 端子 | 開始・終了 |
| □ / 長方形 | 処理 | 処理・操作 |
| ◇ / ひし形 | 判断 | 分岐・条件 |
| ▱ / 平行四辺形 | 入出力 | データの入力・出力 |
| → | 矢印 | 処理の流れ |
読み方の基本
flowchart TD
A([開始]) --> B[処理1]
B --> C{条件判断}
C -->|Yes| D[処理2]
C -->|No| E[処理3]
D --> F([終了])
E --> F
- 開始から矢印に沿って読む
- 分岐では条件を確認
- 終了まで追う
【サンプル】ログイン処理のフローチャート
flowchart TD
A([開始]) --> B[/メールアドレス、パスワード入力/]
B --> C{入力チェック}
C -->|NG| D[エラーメッセージ表示]
D --> B
C -->|OK| E[ユーザー検索]
E --> F{ユーザー存在?}
F -->|No| G[認証エラー表示]
G --> B
F -->|Yes| H{パスワード一致?}
H -->|No| G
H -->|Yes| I[セッション作成]
I --> J[ログイン履歴記録]
J --> K[トップ画面へ遷移]
K --> L([終了])
読み解き方
- 開始:ログイン画面表示
- 入力:ユーザーがメールアドレスとパスワードを入力
- 入力チェック:形式チェック(空欄、メール形式)
- ユーザー検索:DBからユーザーを検索
- 存在チェック:ユーザーが見つかるか
- パスワード確認:ハッシュ値を比較
- セッション作成:ログイン状態を保持
- 終了:トップ画面へ遷移
シーケンス図は、オブジェクト間のやり取りを時系列で表します。
基本要素
| 要素 | 意味 |
|---|---|
| 縦の箱 | オブジェクト(参加者) |
| 縦の点線 | ライフライン(生存期間) |
| 横の矢印 | メッセージ(呼び出し) |
| 破線の矢印 | 戻り値(レスポンス) |
サンプル:商品購入処理
sequenceDiagram
actor User as ユーザー
participant Web as Webサーバー
participant Cart as カートサービス
participant Order as 注文サービス
participant Payment as 決済サービス
participant DB as データベース
User->>Web: 購入ボタン押下
Web->>Cart: カート内容取得
Cart->>DB: SELECT cart_items
DB-->>Cart: カート内容
Cart-->>Web: カート内容
Web->>Order: 注文作成
Order->>DB: INSERT orders
DB-->>Order: 注文ID
Order->>Payment: 決済処理
Payment-->>Order: 決済結果
alt 決済成功
Order->>DB: UPDATE order status='completed'
Order-->>Web: 注文完了
Web-->>User: 注文完了画面
else 決済失敗
Order->>DB: UPDATE order status='failed'
Order-->>Web: エラー
Web-->>User: エラー画面
end
読み解き方
- 左から右へ:呼び出し元→呼び出し先
- 上から下へ:時系列順
- 実線:呼び出し(リクエスト)
- 破線:戻り(レスポンス)
- alt:分岐(条件による処理分け)
アクティビティ図は、業務フローやユースケースを表します。
基本要素
| 要素 | 意味 |
|---|---|
| ● | 開始ノード |
| ◎ | 終了ノード |
| □(角丸) | アクション |
| ◇ | 分岐・合流 |
| ━ | フォーク・ジョイン(並行処理) |
サンプル:注文処理の業務フロー
flowchart TD
A((●)) --> B[注文受付]
B --> C{在庫確認}
C -->|在庫あり| D[出荷指示]
C -->|在庫なし| E[入荷待ち登録]
E --> F[入荷]
F --> D
D --> G[梱包]
G --> H[発送]
H --> I[配送完了]
I --> J((◎))
状態遷移図は、オブジェクトの状態変化を表します。
サンプル:注文ステータスの遷移
stateDiagram-v2
[*] --> 注文中
注文中 --> 決済待ち: 注文確定
決済待ち --> 決済完了: 決済成功
決済待ち --> キャンセル: 決済失敗
決済完了 --> 出荷準備中: 在庫確保
出荷準備中 --> 発送済み: 発送完了
発送済み --> 配達完了: 配達完了
決済完了 --> キャンセル: キャンセル依頼
出荷準備中 --> キャンセル: キャンセル依頼
配達完了 --> [*]
キャンセル --> [*]
読み解き方
- 状態:注文のステータス(注文中、決済完了など)
- 遷移:ステータスの変化
- トリガー:遷移のきっかけ(注文確定、決済成功など)
処理フロー図を読むときのポイント
1. 開始と終了を確認する
- どこから始まるか
- どこで終わるか(複数の終了点があることも)
2. 分岐条件を確認する
- 条件は何か
- Yes/Noでどこに進むか
3. ループ(繰り返し)を確認する
- どこからどこまで繰り返すか
- 終了条件は何か
4. 例外処理を確認する
- エラー時はどこに進むか
- リトライはあるか
よくある疑問
フロー図と実際のコードが違う場合は?
設計者に確認します。フロー図が古い可能性も、実装が間違っている可能性もあります。
フロー図がない場合は?
コードを読んで処理の流れを把握します。複雑な処理は自分でフロー図を描いて理解することも有効です。
フロー図を自分で書くべき?
複雑な処理を理解したり、レビューで説明したりするときに書くと効果的です。
関連ドキュメント
- 設計書・仕様書の読み方 - 設計書全般の読み方
- 処理設計書の読み方 - 処理設計書の詳細
- クラス図の読み方 - クラス構造の読み方