#【新人教育 資料】第8章 UMLまでの道 〜シーケンス図の説明&書いてみよう編〜
あらすじ
新人がいっぱい入ってくる。新人のレベルもバラバラ。教育資料も古くなっているので、更新しましょう。
どうせなら、公開しちゃえばいいじゃん。という流れになり、新人教育用の資料を順次更新していくことにしました。
※後々、リクエストに応じて更新することが多いのでストックしておくことをおすすめします。
自分はTEMONA株式会社でCTOをしていますが、頭でっかちに理論ばっかり学習するよりは、イメージがなんとなく掴めるように学習し、実践の中で知識を深めていく方が効率的に学習出来ると考えています。
※他の登壇やインタビュー記事はWantedlyから見てください。
教育スタイルとしては正しい事をきっちりかっちり教えるのではなく、未経験レベルの人がなんとなく掴めるように、資料を構成していきます。
以下のようなシリーズネタで進めます。
箸休めには以下をどうぞ
では、今回もはじめていきましょう!
シーケンス図
シーケンス図とは、クラスやオブジェクト間のやりとりを時間軸に沿って表現します。
ライフライン
ライフラインは四角でにライフライン名(クラスやオブジェクト)を示します。
実行仕様(イベント)
ライフラインでイベントが実行中であることを表現します。ライフラインの線の上に白い箱で表現します。
開始
activate ライフライン名
終了
deactivate ライフライン名
メッセージ
矢印の向きでライフライン先へ同期されるメッセージを表現します。メッセージ名は具体的な関数や内容を記載するようにしましょう。
plantumlでは「->」で表現されます。
ライフライン名 -> ライフライン名 : メッセージ名
応答メッセージ
plantumlでは「-->」で表現されます。
ライフライン --> ライフライン名 : メッセージ名
例) ログインに関するシーケンス図
ユーザがシステムにログインするというシーケンス図を掲載してみました。
以下のようになります。
実際には条件分岐や並列処理、条件など細かい処理があると思います。
そういう表現は後述で説明します。
activate ユーザ
ユーザ -> ログイン : ログインする
activate ログイン
ログイン -> ユーザ情報 : ユーザ存在するか?
activate ユーザ情報
ユーザ情報 --> ログイン
deactivate ユーザ情報
ユーザ情報 -> 権限情報 : 権限があるか?
activate 権限情報
権限情報 --> ログイン
deactivate 権限情報
ログイン --> ユーザ
deactivate ログイン
複合フラグメント
シーケン図において、複雑な処理を表現するために、複合フラグメントというものが定義されています。
以下に掲載したもの以外にもありますが、よく使いそう、かつplantumlが対応しているものだけ掲載してます。
フラグメント | 読み | 意味 |
---|---|---|
alt | オルタナティブ | 分岐処理を表現 |
opt | オプション | 条件を満たした場合のみ実行される処理を表現 |
loop | ループ | ループ(繰り返し)処理を表現 |
par | パラレル | 並列処理を表現 |
ref | 相互作用使用 | 別のシーケンス図を参照することを表現 |
break | ブレイク | 処理の中断を表現 |
critical | クリティカル | マルチスレッド環境での同期処理など、排他制御を表現 |
いくつか具体的な例を見てみましょう。
alt 分岐処理の表現
ログインするユースケースには、ログインが失敗するか、成功するかの主シナリオが存在します。
シーケンス図で条件分岐はaltで表現されます。
alt 条件1
処理1
else 条件2
処理2
end
例)ログイン処理の成功と失敗の主シナリオ
activate ユーザ
ユーザ -> ログイン : ログインする
activate ログイン
ログイン -> ユーザ情報 : ユーザ存在するか?
activate ユーザ情報
ユーザ情報 --> ログイン
deactivate ユーザ情報
ユーザ情報 -> 権限情報 : 権限があるか?
activate 権限情報
権限情報 --> ログイン
deactivate 権限情報
alt 認証[成功]
ログイン --> ユーザ : /dashboradにリダイレクト
deactivate ログイン
else 認証[失敗]
ログイン --> ユーザ :認証失敗のメッセージを表示
end
deactivate ログイン
ref 相互作用使用 別参照
シーケンス図を簡略化するため、他のシーケンス図を参照して欲しい時があります。
そんな時はrefを使いましょう。
ref over ライフライン名,ライフライン名 :シーケンス図名
例)ログイン処理の権限確認を別参照
activate ユーザ
ユーザ -> ログイン : ログインする
activate ログイン
ログイン -> ユーザ情報 :ログイン処理
ref over ユーザ情報,権限情報 :権限チェック
ユーザ情報 --> ログイン
alt 認証[成功]
ログイン --> ユーザ : /dashboradにリダイレクト
deactivate ログイン
else 認証[失敗]
ログイン --> ユーザ :認証失敗のメッセージを表示
end
deactivate ログイン
opt 条件による実行の表現
特定の条件を満たした場合に実行されるシーケンスを表現します。
opt 条件
処理
end
例)会員未登録の場合のシーケンスを追加
それ以外の表現
delay 非同期の遅延処理
非同期の処理において、遅延してから処理されるものを表現します。
遅延を示す(遅延に関する任意記載なし)
シーケンス
...
シーケンス
遅延を示す(遅延に関する任意記載あり)
シーケンス
...任意記載...
シーケンス
例)会員登録時のダブルオプトインのメールを1分後に送信する場合
今となってはこんな処理はしないかもしれませんが。。。
※ガラケー自体などは、画面処理している最中にメールがくると強制的に操作中断が行われる可能性もあったので1分後などにしたりした
group シーケンスのグループ化
グループを表現したい時に使用します。
group ラベル
処理
end
ライフラインの省略
ライフラインを省略したい時に使用します。
メッセージ
ライフライン ->]: メッセージ名
応答メッセージ
ライフライン <--]: メッセージ名