3秒でわかる
登場人物のやり取りを時間の流れに沿って書くUMLの図。処理の順番とどこまで待つのかを、実装に入る前に関係者全員で合わせるために使います。
もう少し詳しく
どういうものか
シーケンス図は、システムの登場人物を横に並べ、そこから下へ伸びる縦線に沿って、やり取りを上から順に書いていく UML の図です。縦軸が時間、横の矢印がメッセージの送受信を表します。実線の矢印が呼び出し、点線の矢印が戻りで、縦線の上に重なる細長い長方形がその相手が処理をしている区間を示します。
なぜ必要か
「ログインするとき、どこで何が起きているか」を文章で説明すると、順番の解釈が人によってずれます。とくに、認証サーバーを挟む処理や、外部決済へ問い合わせる処理では、どちらが先に呼ばれ、どこで失敗しうるのかが曖昧なまま実装に入ると、あとから作り直しになります。シーケンス図はこの順番だけを取り出して見せるため、フロント担当とバックエンド担当が同じ絵を見て合意できます。
具体例
<a href="/glossary/browser" class="text-primary font-medium underline underline-offset-2 hover:text-primary-dark">ブラウザ</a> <a href="/glossary/api" class="text-primary font-medium underline underline-offset-2 hover:text-primary-dark">API</a>サーバー 認証基盤 DB
| POST /login | | |
|---------------->| | |
| | <a href="/glossary/token" class="text-primary font-medium underline underline-offset-2 hover:text-primary-dark">トークン</a>検証 | |
| |--------------->| |
| |<- - - - - - - -| OK |
| | ユーザー取得 | |
| |------------------------------>|
| |<- - - - - - - - - - - - - - - |
|<- - - - - - - - | 200 + Cookie |矢印の向きと順番だけで、認証基盤への問い合わせが DB アクセスより先に走ることが読み取れます。
つまずきやすいところ
1 枚に全部詰め込もうとして失敗する例が多くあります。正常系と異常系を同じ図へ混ぜると、分岐の枠が入り組んで誰も読めません。まず正常系だけを描き、主要な失敗パターンを別の図に分けます。もうひとつは、登場人物にクラス名を細かく並べる書き方で、内部の設計が変わるたびに図が陳腐化します。外から見える単位で置くほうが長持ちします。戻りの点線を省略する人もいますが、同期の呼び出しでどこまで待つのかは、性能を議論するときの重要な情報になります。
似た用語との違い
| 図 | 見せるもの |
|---|---|
| シーケンス図 | やり取りの順番と時間の流れ |
| クラス図 | 静的な構造と関係 |
| アクティビティ図 | 処理の分岐と並行の流れ |
| ER図 | データの実体と関連 |