我水也

われみずなり

シーケンス図を書いてみる(ユースケース駆動開発)

今回も開発フローを紹介しますシリーズです。

第1回 matcu.hatenablog.com

前回(ロバストネス図を書いてみる) matcu.hatenablog.com

今回は、シーケンス図を書いてみたいと思います!

シーケンス図

シーケンス図は、前回のロバストネス図をより登場人物や役割を明確にできます。

TODO登録のシーケンス図はこんな感じになりました。

f:id:matcu:20200524151223p:plain
sequence

PlantUMLで書くとこんな感じです。

@startuml sequence

actor User
boundary TodoCreationScreen
control TodoController
control TodoModel
entity Todo
boundary CreationCompletedScreen
boundary ErrorScreen

User -> TodoCreationScreen : やること、期限を入力する
User -> TodoCreationScreen : 登録ボタンを押す
TodoCreationScreen -> TodoController : create()
TodoController -> TodoModel : new(params)
TodoController -> TodoModel : save()
TodoModel -> Todo : INSERT
break ValidationError
    TodoModel -->> TodoController : throw ValidationError
    TodoController -->> ErrorScreen : 表示する
end
TodoController -> CreationCompletedScreen : 表示する

@enduml

ロバストネス図よりも役割が明確になりました。
例えば、この時点で画面側でのバリデーションは不要なのか?などのやりとりができるようになります。

シーケンス図の利点

だいぶプログラムを意識できるようになりました。
ここでの利点としては、それぞれのクラスで必要となる処理が明確になることです。
私のチームでは、メソッドの命名規則や処理のルールなどをこのあたりで規約として決めています。
このあたりまで揃うと、実装時のレビューがかなり楽になってきます。

次回は、クラスモデルを作ってみたいと思います。