
DDDなどで著名な松岡さんに社内向け講演をやっていただきました!!
エンジニアの川原です。
今回は、社内講演会を開催し、DDDなどで著名な松岡さんにお越しいただき、主にモデリングなどを学びました!
松岡さんのご紹介
DDD Community JP主催。DDD入門書籍として、執筆「ドメイン駆動設計 モデリング/実装ガイド」をされておられます。
twitter: https://twitter.com/little_hand_s?s=20&t=XSHsKvugl_iSZzkpEGkGKA
youtube: https://www.youtube.com/channel/UCbHtbIUxtfGjrDy1WcqxExw
connpass: https://ddd-community-jp.connpass.com/
discord:
書籍: https://little-hands.booth.pm/items/1835632

開催経緯
フクロウラボでは、技術力やチーム力の向上のため、四半期(3ヶ月)に1回、ゲストを招いた社内向けセミナーやワークショップを開催する予定をしております。
今回も社内の技術向上の一環で、エンジニアや講師の方を招致し社内向けの勉強会をやろう!というのが声として上がり、開催することになりました。
社内の勉強会で、「ドメイン駆動設計 モデリング/実装ガイド」を輪読する会をやっていたのがきっかけで、
著者である松岡さんに、特に理解が難しかった図の設計をやってもらい身につけよう!となり開催に至りました。
当日の流れ
Zoomにて、2時間講習をしてもらいました。
DDDは大きく分けると、モデリングとコーディングのパートがあるのですが今回はモデリングに注力して講習していただきました。
どのような講義かというと、DDDについてとモデリングについて説明してもらった後に、実際に松岡さんがヒアリングしながら図を作るライブコーディング(ドローイング?)方式で進めていただきました。

DDDとは?
まずDDDとは何かついて教えていただきました!!
ざっくりというと、保守性・機能性を高めるための手法です。
モデリング図を作ることでその価値を十分に発揮することができます。
今回はいくつかあるモデリング図の中で以下四つをやっていただきました。
(他にもモデリング図はありますが、応用の効きやすいこの4つを中心に教えてくださってます)
システム関連図
ユースケース図
ドメインモデル図
オブジェクト図

システム関連図を描いてみる
今回はフクロウラボの事業でもある、CircuitXのモデリングをしていきました。
ここでいうシステム関連図とは、関わりのあるアクターや外部システムとプロダクト(今回はCircuitX)がどのような関連がをあるのかを図にしたものです。詳しくは書籍をご覧ください。
これは事前にドメインの情報は言わずにヒアリングしながら進めてもらったので、「どのように」進めていくのかが非常にわかりやすく勉強になりました。

ユースケース図を描いてみる
ユースケース図とは、「ユーザの要求に対するシステムの振る舞いを定義する図」です。
例えば、TODOアプリがあったとすると、
登録する
削除する
完了にする
目標時間を設定する
など、誰がどのような振る舞いをするのかをを図にするものです。
これらもCircuitXを題材にどんどん図にしていってもらいました。

ドメインモデル図/オブジェクト図を描いてみる
ドメインモデル図は簡易化したクラス図のようなもので、オブジェクト図を一段階抽象化したようなもの。
オブジェクト図は、ユースケース図の具体例を描いていくようなものです。
それぞれ注意するルールはありますが、コーディングにより近いイメージを持てる図となっているので、わかりやすい例となっています。
フクロウラボ内でも会社のオブジェクトからスタートしてどんどんその図の関係性を洗い出していきました。


全体を通しての感想(良かった点)
DDDというとドメイン駆動設計と呼ばれているもので、本を読んだ限りではどの点が重要だというポイントを抑えることはできていたつもりだったのですが、それを現場のシステムや実務に落とし込むにはどうしていけば良いのかというプロセスについては不透明なままでした。
今回講習を受けて、ドメインエキスパートにどうヒアリングしながらどういった過程を経てモデリング図を描いていくのか、リアルタイムに松岡さんが形にしていく様子を目の前で見るのと、書籍を読んで理解するのとでは、全く理解度が違いました!
まさしく「百聞は一見に如かず」ということわざがぴったりで、目の前で見て学ぶことができたのはとても有意義でした!
一方、今後の課題は…
松岡さんのようにヒアリングしながら、モデリング図をすらすらと描けるようになるには、多少は練習が必要だなぁとも感じました。
例えば、オブジェクトは四角にするなどの図形の使い分けルールや法則を、予め頭と体に馴染ませておかないと、ヒアリングしながらリアルタイムに形にするのは難しいと思いました。
ですので、まずは小さなシステムを題材にモデリング図を描くワークショップなどを、社内勉強会として行って、チーム全体でも練習を重ねていきたいと思います!
早く、松岡さんのようにすらすらと描けるようになりたいです!
憧れます!!
今後のセミナー/ワークショップについて
フクロウラボでは、技術力やチーム力の向上のため、四半期(3ヶ月)に1回、著名なゲストを招いた社内向けセミナーやワークショップを開催する予定をしております!
次回の計画も進めておりますので、そちらも随時ご紹介できればと思います!お楽しみに!!
最後に
このように、ヒアリングしながらライブでモデリングをしてもらったことで、より具体的に社内での仕様決定や、要件決め、新しいものを作るときに活かすことができるよう学ぶことができました。
社内でも、勉強会後に練習としてモデリング図を描いてみる会を開いてみたりして、モデリング図を描けるようになっていきたいと思います
改めて、松岡さん講習いただきありがとうございました!