見出し画像

モデリングの学び方:座談会に参加しました

昨日、行われたモデリングの学び方:座談会のイベントに参加しました。
イベントの内容を記事に書かれている方もいるので、私は自分の経験をもとに書こうかなと思っています。

座談会の概要・趣旨

モデリングについての知見を共有し、それをもとに個人やチームでどうやってモデリングを学んでいくとよいかの手がかりを手に入れていこう!とうことで、下記3つを目的として開かれました。

・モデリングと設計の実践者たちの知見を言語化してもらう
・実践的で費用対効果の高いモデリングのやり方を具体例を知る
・現場で役に立つモデリングスキルを身に着けるための手がかり得る

増田さんから座談会の趣旨説明

こちらのスライドをもとに座談会の趣旨の説明がありました。内容は抜粋して気になった個所のみにしたいと思います。1つめは効果的なモデリングで下記の説明をしてくれました。

・目的が明確
・適切なタイミングと適切な道具
・複数の視点からモデリング
・複数のモデルを関係づける
・モデルと実装を一致させる

2つめはドメインモデルとトランザクションスクリプトで着眼点が異なり、モデリングのアプローチとして3つあるんじゃないかというお話でした。

・プロセス中心(業務フロー→ユースケースモデル→処理詳細)
・データ中心(データフロー→ER図、CRUD機能)
・ルール中心(価値活動・方針等→ドメインモデル⇔マッピング)

話し手の方々

かとじゅんさん、原田さん、ミノ駆動さん、hiroさん、藤岡さん、高崎さんといった方々がどのように現場でモデリングをしているのかをお話ししてくれました。自分自身が受託開発組ということもあり受託開発をメインにお話しされている方々がどういうものをモデリングしてシステム開発を進めているのかを知れたのはすごくよかったです。また、かとじゅんさんはレガシーコードからの脱却を実践しているため要点漏れがないようにRDRAを使用したり、深層ドメインモデル(ルールや意思決定箇所)マイグレということもあって、容易にユースケースを変更できなかったりするし、データマイグレとセットで考えておられるのも大変だとお話しされていました。

自分の経験談

とある案件でRDRAを使用した経験があります。それはチームとしてやろうというものではなく自分が業務を整理してモデルを引き出すために行っていました。以前、RDRA提唱者(こんな呼び方でよいのか?)の神崎さんのワークショップに参加したことがあります。このとき主催がアクティアの高崎さんでした。そのワークショップ後ということもあってパワポで作成し、そこから概念モデルを作成しながら、RDRAの情報モデルと判定を表現したものを書いていましたが、どうしても不慣れだったこともあって途中で断念してしまいました。ただ、これを実践して整理しておけばもう少しいいモデリングができたんじゃないかと思っています。

その後、アプリケーションアーキテクチャを増田さんの書籍「現場で役立つシステム設計の原則」にしたがって3層+ドメイン層にレイヤー化し

ValueObject、Entity、ApplicationService、RepositoryのDDDに書かれているパターンを真似て実践しました。この体験で一番役に立ったのはValueObjectです。
ビジネスロジックの中核となる計算、判断をうまくValueObjectでカプセル化するとどれが計算・判断ロジックに該当するのかがすぐにわかるようになりました。あとはなんとなくパターンを当てはめてみただけだったので正解かどうかは正直不安なところですw
その中核となる部分は自分が実装をしていましたが、さすがに量が多く中途半端になった経緯があります。

この案件を振り返るとどれも中途半端で終わってしまいましたが、もう少しモデリング、各種手法をメンバーに浸透させておけばもっと洗練できたであろうと思いつつもDDDは難易度が高いと思わざるを得ないところもありました。
今回でOOPやモデリングを通してDDDのパターンとしてのValueObjectやEntityを使うんだよということをペアプロすると興味がある社員ならついてこられるんじゃないかと。そしてもっと楽しい開発現場になるんじゃないかなと思いました。(適用できるか、そんな人たちがいるかというのは抜きにして)

ただ、話し手の皆さんもそれぞれ違ったアプローチ(作成する図が異なる)ものの目的(ドメインに焦点)に合わせたものを作成しているので、自分自身のアプローチも特段変な方向にはいってないじゃないかと思えたことがすごく嬉しかったです。

これからの取り組み

最後に「モデルと実装を一致させる」のは実装した際、ちょっと違うなモデルを組みなおしてみようとか、以前とある既存システムを解析してモデリングしたことがあった(PlantUMLでオブジェクト図を作成しモデル部分のみ実装した経験)ので「あるある」と共感できたので、まずは自分の中の経験値を増やしてレベルアップしていこうかと思います。
そして、組織として会社ぐるみで何かできないかと模索していきたいと思います。






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