Edited at

【新人教育 資料】第8章 UMLまでの道 〜シーケンス図の説明&書いてみよう編〜


【新人教育 資料】第8章 UMLまでの道 〜シーケンス図の説明&書いてみよう編〜


あらすじ

新人がいっぱい入ってくる。新人のレベルもバラバラ。教育資料も古くなっているので、更新しましょう。

どうせなら、公開しちゃえばいいじゃん。という流れになり、新人教育用の資料を順次更新していくことにしました。

※後々、リクエストに応じて更新することが多いのでストックしておくことをおすすめします。

自分はTEMONA株式会社でCTOをしていますが、頭でっかちに理論ばっかり学習するよりは、イメージがなんとなく掴めるように学習し、実践の中で知識を深めていく方が効率的に学習出来ると考えています。

※他の登壇やインタビュー記事はWantedlyから見てください。

教育スタイルとしては正しい事をきっちりかっちり教えるのではなく、未経験レベルの人がなんとなく掴めるように、資料を構成していきます。

以下のようなシリーズネタで進めます。

No.
記事

1
【新人教育 資料】第1章 UMLまでの道 〜オブジェクト指向編〜

2
【新人教育 資料】第2章 UMLまでの道 〜クラス編〜

3
【新人教育 資料】第3章 UMLまでの道 〜図種類紹介とクラス図の解説編〜

4
【新人教育 資料】第4章 UMLまでの道 〜クラス図を書いてみよう編〜

5
【新人教育 資料】第5章 UMLまでの道 〜ユースケース図の説明&書いてみよう編〜

6
【新人教育 資料】第6章 UMLまでの道 〜ステートマシン図の説明&書いてみよう編〜

7
【新人教育 資料】第7章 UMLまでの道 〜アクティビティ図の説明&書いてみよう編〜

8
【新人教育 資料】第8章 UMLまでの道 〜シーケンス図の説明&書いてみよう編〜

箸休めには以下をどうぞ

【新人教育 資料】ハードウェア編

では、今回もはじめていきましょう!


シーケンス図

シーケンス図とは、クラスやオブジェクト間のやりとりを時間軸に沿って表現します。


ライフライン

ライフラインは四角でにライフライン名(クラスやオブジェクト)を示します。


実行仕様(イベント)

ライフラインでイベントが実行中であることを表現します。ライフラインの線の上に白い箱で表現します。


開始


plantumlでの表記例

activate ライフライン名



終了


plantumlでの表記例

deactivate ライフライン名



メッセージ

矢印の向きでライフライン先へ同期されるメッセージを表現します。メッセージ名は具体的な関数や内容を記載するようにしましょう。

plantumlでは「->」で表現されます。


plantumlでの表記例

ライフライン名 -> ライフライン名 : メッセージ名



応答メッセージ

応答メッセージは点線で表現されます。

plantumlでは「-->」で表現されます。


plantumlでの表記例

ライフライン --> ライフライン名 : メッセージ名



例) ログインに関するシーケンス図

ユーザがシステムにログインするというシーケンス図を掲載してみました。

以下のようになります。

実際には条件分岐や並列処理、条件など細かい処理があると思います。

そういう表現は後述で説明します。


plantumlでの表記例

activate ユーザ

ユーザ -> ログイン : ログインする
activate ログイン
ログイン -> ユーザ情報 : ユーザ存在するか?
activate ユーザ情報
ユーザ情報 --> ログイン
deactivate ユーザ情報
ユーザ情報 -> 権限情報 : 権限があるか?
activate 権限情報
権限情報 --> ログイン
deactivate 権限情報
ログイン --> ユーザ
deactivate ログイン


複合フラグメント

シーケン図において、複雑な処理を表現するために、複合フラグメントというものが定義されています。

以下に掲載したもの以外にもありますが、よく使いそう、かつplantumlが対応しているものだけ掲載してます。

フラグメント
読み
意味

alt
オルタナティブ
分岐処理を表現

opt
オプション
条件を満たした場合のみ実行される処理を表現

loop
ループ
ループ(繰り返し)処理を表現

par
パラレル
並列処理を表現

ref
相互作用使用
別のシーケンス図を参照することを表現

break
ブレイク
処理の中断を表現

critical
クリティカル
マルチスレッド環境での同期処理など、排他制御を表現

いくつか具体的な例を見てみましょう。


alt 分岐処理の表現

ログインするユースケースには、ログインが失敗するか、成功するかの主シナリオが存在します。

シーケンス図で条件分岐はaltで表現されます。


plantumlでの表記例

alt 条件1

処理1
else 条件2
処理2
end


例)ログイン処理の成功と失敗の主シナリオ


plantumlでの表記例

activate ユーザ

ユーザ -> ログイン : ログインする
activate ログイン
ログイン -> ユーザ情報 : ユーザ存在するか?
activate ユーザ情報
ユーザ情報 --> ログイン
deactivate ユーザ情報
ユーザ情報 -> 権限情報 : 権限があるか?
activate 権限情報
権限情報 --> ログイン
deactivate 権限情報
alt 認証[成功]
ログイン --> ユーザ : /dashboradにリダイレクト
deactivate ログイン
else 認証[失敗]
ログイン --> ユーザ :認証失敗のメッセージを表示
end
deactivate ログイン


ref 相互作用使用 別参照

シーケンス図を簡略化するため、他のシーケンス図を参照して欲しい時があります。

そんな時はrefを使いましょう。


plantumlでの表記例

ref over ライフライン名,ライフライン名 :シーケンス図名



例)ログイン処理の権限確認を別参照


plantumlでの表記例

activate ユーザ

ユーザ -> ログイン : ログインする
activate ログイン
ログイン -> ユーザ情報 :ログイン処理
ref over ユーザ情報,権限情報 :権限チェック
ユーザ情報 --> ログイン
alt 認証[成功]
ログイン --> ユーザ : /dashboradにリダイレクト
deactivate ログイン
else 認証[失敗]
ログイン --> ユーザ :認証失敗のメッセージを表示
end
deactivate ログイン


opt 条件による実行の表現

特定の条件を満たした場合に実行されるシーケンスを表現します。


plantumlでの表記例

opt 条件

処理
end


例)会員未登録の場合のシーケンスを追加


それ以外の表現


delay 非同期の遅延処理

非同期の処理において、遅延してから処理されるものを表現します。


遅延を示す(遅延に関する任意記載なし)


plantumlでの表記例

シーケンス

...
シーケンス


遅延を示す(遅延に関する任意記載あり)


plantumlでの表記例

シーケンス

...任意記載...
シーケンス


例)会員登録時のダブルオプトインのメールを1分後に送信する場合

今となってはこんな処理はしないかもしれませんが。。。

※ガラケー自体などは、画面処理している最中にメールがくると強制的に操作中断が行われる可能性もあったので1分後などにしたりした


group シーケンスのグループ化

グループを表現したい時に使用します。


plantumlでの表記例

group ラベル

処理
end


ライフラインの省略

ライフラインを省略したい時に使用します。


メッセージ


plantumlでの表記例

ライフライン ->]: メッセージ名



応答メッセージ


plantumlでの表記例

ライフライン <--]: メッセージ名