見出し画像

会議室予約ドメインモデリング会を開催しました!

12/14(土)に開かれた現場でDDDのイベントでのモデリングワークショップの経験を元に、12/21(土)にモデリング勉強会を共同開催しました

お題はこちら

今回集まったメンバーは7人。
役割としては、明確な定義はしてなかったけど、以下の感じ

・ファシリテーター
・ロガー
・メンバー

ロガーっていうのはなんだろうって感じですが、いわゆる書記です。
モデリングワークショップ系のレポートブログを見ていて思うのが、大体完成形のモデルしか出てないこと。
初期のモデルから、どう進化して最終形になっていったかという過程が見えないと、モデリングの威力っていうのは外から見ても分かりづらい&当事者たちも後からふりかえりづらいと思っていた為、書記役は必要だと感じていました。

人数もそれなりに集まっていたので、私はこのロガー役に立候補することに。

モデリング初期:単語出しから

画像1

メンバーの自己紹介はそこそこにして、まずはお題のユースケースを元に、付箋に単語出しをしていきました。
単語出しは、名詞・動詞を抜き出すことにして、付箋で色分け

・オレンジ:名詞
・緑:動詞

後から考えると、これが結構チームのエンジンが掛かるきっかけとなったように思えます。

本当はここの写真いっぱい撮って載せる予定でしたが、撮るの忘れた…。

モデリング初期2:書き出した付箋をホワイトボードに張り出す

ある程度単語が出せてきたので、それをホワイトボードに張り出して、ユースケースを表現していきます。

画像2

画像3

「予約者が、会議室を選択して、会議室を予約する。→ 予約が生まれる」
みたいな感じになりました。
会議室の下にぶら下げている名詞は、会議室予約に関連しそうな単語をグルーピングして並べてみました。

モデリング中期:会議室の利用状況と利用実績の違いとは?

ある程度ユースケースがハッキリ見えてきたようになってきましたが、このあたりで、
「いま現時点で、どこの会議室のどの時間帯が予約できるのか」というのと、「予約された会議室が、いまちゃんと利用されているのか」という話がだんだんと混線してきました。

画像4

画像5

結果的には、「会議を開始する」「会議を終了する」といった、会議室の利用状況を更新するユースケースを別として作り、そこで整理をするようにしていきました。

画像6

モデリング中期2:ユースケースのビジネスルールを記載していく

会議室の予約に関するユースケースを更に深堀りしていく方針になりました。
※新しく出てきたユースケースは、今回一旦置いておきます。

画像7

ビジネスルールはGitHubのお題のところに記載をしていた為、それをチーム内で声に出しながら確認していき、1個ずつ付箋に書いて貼っていきました。
(色は黄色)

画像8

「会議室」「開始時間」「予約時間」「日時」などの予約に関する情報を明示的にグルーピングしていきます。

画像9

この辺りぐらいから、動詞である緑色の付箋がだいぶ減っていきます。

画像10

いったんのふりかえり

このぐらいの粒度になってくると、
「明日、誰かがいなくても、これで実装できそう」
という意見が出てきました。

また、これらのモデルができるまでに90分くらいを費やしていますが、
今回のユースケースとはまた関係ない話もたくさん出てきています。
(ブレストの発散みたいな感じですね)

「その話はいま関係ないんです」とバッサリ切ってしまうのは簡単なのですが、パーキングロットという考え方で、付箋を隅っこに追いやり、いったん忘れるという方針を今回取りました。

画像11

こんな感じです。
PA,いつかやりたい、封印ゾーンって分かれていますが、その場のノリなので、どれもパーキングロットだと思ってもらえればOKです。
今回のユースケースとは関係ないものは、こうやってホワイトボードの隅に追いやり、いったん忘れることにしました。

普通に何も書かないで忘れてしまえばいいのでは? とも思ったりしますが、頭の中にあるモヤモヤは出し切って身軽にしてしまった方が、頭も目の前の課題に集中しやすい、という効果を期待した感じでもあります。

モデリング後期:シグネチャレベルでの実装

画像12

実装に向けて、囲ったりして明確にユースケースの可視化をしていきます

声に出していくと、「予約者」が「予約する」ことによって「予約」ができる

日本語的にちょっと変化もしれませんが、ユースケースとしてシンプルになってきました。

画像13

細かい要素(Value Object)から実装していくのか、まずユースケースから実装していくのか、チーム内で方針を話し合い、ユースケースの方から実装。
名前で悩んでしまったら、とりあえず日本語で書いて実装をやってしまえーとなり、書いていきました。(日本語でもVisual Studioってintellisense利くんですね。初めて知りました 笑)

最後のふりかえり

ちょこっと実装を始めたところで時間が来てしまい、実装は中途半端な形で終わりを迎えました。

ここまでの会のふりかえりをやって頂きましたが、
実装フェーズが「予定通り進んだ派」「思ったより進まなかった派」で意見を出してもらいました。

画像14

思ったより進まなかった派でも、「掛けるべき議論をした」という意見が出ていたので、今後同じメンバーで仕事をするときにはよりスムーズに仕事が進むんだろう、という実感は持てました。

最後に会自体のふりかえりとして、FunDoneLearnを試してみました。
※メンバーの中に経験者がいたので、ファシリテーターをお願いしました

詳細は以下の記事をご参照ください。

通常はDoneが多いらしいですが、今回はLearnに偏りが見られました。
結構学びのある会になったということなんだろうと思います。

画像15

Learnの内容も見ていると面白く、
モデリング自体より、ファシリテーションのやり方だったり、意思決定の方法だったり、モブプロスペースの配置が良かったなど、モブワーク関連への学びが多かった印象です。

どちらかというと、モデリングとか設計に関する成果物というよりは、
どうやってモデリングを進めるか、コミュニケーションを進めるのか、という方にみんな学びがあったようです。

メンバー自体も、チームで設計をする上で、コミュニケーションが重要だと皆さん認識していて、そちらに関心が高かったように感じました。

今回の完成形

最後に、勉強会終了時点でのモデルを貼っておきます

画像16

次のチャレンジとしては、このユースケースから、実装をやっていくことをやっていきます。(1/1予定)

この記事が気に入ったらサポートをしてみませんか?