📑

モデリングの学び方:座談会

2021/09/08に公開

概要

2021/09/07に開催された下記勉強会のメモです
https://modeling-how-to-learn.connpass.com/event/223326/

https://togetter.com/li/1771145

セッション

主旨説明

  • 想定外に人が集まってしまったとのこと
    • 700人超えてました(Zoomすごい)
  • 認知負荷の軽減の技術がモデリング
  • 要点の発見、言語化・可視化してチーム/関係者で共有すること
    • 記録して再利用は主目的でない(二次的な効果)
  • モデリングと着眼点
    • ドメイン中心->事業活動やビジネスルール
    • トランザクション中心->画面やDB
  • モデリングの種類
    • 事業活動
    • ソフトウェア
    • 語彙
  • アプローチ
    • プロセス中心->業務フロー
    • データ中心->データ
    • ルール中心->価値活動
  • 増田さんは↓こちらの本の著者でもあります

https://www.amazon.co.jp/dp/477419087X

座談会

実際のところ、現場ではどんな感じ?

かとじゅんさん

  • ソフトウェア考古学をやっている
  • レガシーからの脱却
  • RDRAを実践
    • フルスペックではなく一部
    • 現状を理解してモデルを再構築するところから始める
    • 図の通りにコードは書けない、どんどんズレるので行ったり来たりしないといけない
    • 図を描いて満足しない
  • 外部仕様変えられない、ユースケースを変えるのは難しい
  • 責務のレイヤーである深層のドメインモデルは変えやすいのではという仮説
    • モデルの改善=データのマイグレーションがあるので大変

http://k-method.jp

原田さん

  • アジャイルコーチやってる
  • お客さんの所でモデリングやってる
    • チームとしてどう認識しているか
  • SIerなのでお客様のビジネスを理解するところから
    • お客さんが何に困っているのか
    • 意思疎通取れてるのか
    • ほんとに正しいのか探りに行く
    • 語彙のモデリングからやることも
    • 抽象度を合わせる
  • アジャイルな時代なのでお客さんに聞けるのがいい
    • DDDの渦巻きモデルをやれている

https://www.domainlanguage.com/ddd/whirlpool/

ミノ駆動さん

  • コンテキストマップの話
  • 今の会社4月に入ったのでまだ4~5ヶ月
  • 新しく開発するもののドメインモデリングをやっている
    • ビジネス全体を俯瞰して考える
    • まず洗い出さないといけない
  • コンテキストマップ教科書的に書きましたという話でなく変形して使う
    • 目的駆動
    • どのドメインでどの目的を達成したいのかコンテキストマップでわかる
      • 目的を達成するためのモデルを立てていく
      • モデルを置いて見てみると評価できる
      • ヒアリングしてコンテキストマップを作っていく

https://speakerdeck.com/minodriven/buisiness-purpose-system-design

hirodragonさん

  • 受託開発
    • いろんな案件を年が変わるごとにやってる
    • 案件によってかなり違う
  • 概念モデルは必ず作り、それをベースにクラス図を作成
    • たまにロバストネス図やユースケース図
    • クラス図はコードを書くため(これがないと書けない)
  • 用語と関連、たまに多重度

https://www.amazon.co.jp/dp/4798114456

藤岡さん

  • 同じくソフトウェア考古学やってる
  • 動いてるソースコードが絶対
    • それ以外わからないので、まずは追いかけながら図を作ったり
  • 新しいことやりたいという要望もある
    • モデルを図で作るよりjigを使って可視化

https://github.com/dddjava/jig

高崎さん

  • モデリングを中心に開発
  • 受託開発なので広く一般的なSIerとあんまり変わらない
  • 多忙な場合モデリングよりソースコード書くという話になりがち
  • 語彙のモデリングはやっている
  • RDRAや匠メソッドを活用

https://www.takumi-businessplace.co.jp/takumi-method/

モデリングの学び方

高崎さん

  • 渡辺幸三さんの本でモデリングに出会った
  • オブジェクト指向のブームの人に色々会いに行った
    • データモデリングしっかりやったほうがいいんじゃないかという仮説

https://www.amazon.co.jp/dp/B009QRF3JQ
http://dbc.in.coocan.jp

藤岡さん

  • モデリング学んだのは特殊なパターン
  • 本とかでなく仕事で覚えていった
    • 増田さんのプロジェクトで強制的に
    • モデリングやらない人は切られた

原田さん

  • 画面とか帳票を分析してた
  • 途中からT字型E-R図にであった
  • アジャイルとかスクラムでモデルを書くと上手くいきそうとなったのが転機

かとじゅんさん

  • まずはいくつかの書籍で勉強を始め、その後エバンス本と出会った
  • WebアプリでDDDは難しいのでは?
    • Wデスクトップの方がドメイン駆動やりやすいという話がある
  • コマンドとクエリーに分離して考えるのが今の解
    • コマンドの振る舞いにフォーカスしてドメインを考える
    • コマンドを処理するために必要なものしか持たせない
    • 閲覧だけの情報は一度外す

https://www.amazon.co.jp/dp/4798110663
https://www.amazon.co.jp/dp/4798144649

hirodragonさん

  • どうやって学んだかは記憶がない
  • 教えてくれる人がいなかったので自分で調べた
  • プロジェクトでDDDでやることになった
    • やりたかったのこれかと思った
    • オブジェクト指向もよく分かってなかったので勉強始めた
    • オブジェクト指向の理解にUMLを
    • いつの間にかモデリングも

ミノ駆動さん

  • なんのためにモデリングするのか?
  • ひどいコードにぶち当たった時に威力を知る
  • まずクソコードと対峙したという起点
    • 巨大クラス
    • 問題のあるモデルを改善するという経験

意見交換

  • 炎上しがちだけど「オブジェクト指向エクササイズ」やってみるの良いかも
  • 実践するかはさておき体感してみる
    • 合わない人はそれでもいい

https://www.amazon.co.jp/dp/487311389X
https://www.slideshare.net/yojik/ss-1033616

  • 「Tell, Don't Ask」を意識
    • データモデリングで良いという話になる
    • オブジェクト指向モデリングできない

https://martinfowler.com/bliki/TellDontAsk.html
https://www.amazon.co.jp/dp/4274066940

  • ワークショップ

https://www.ogis-ri.co.jp/otc/hiroba/Report/umtp-crc-card-workshop/

  • 色々覚えないといけないのが大変
  • 重厚長大なのでエッセンスだけ
    • 結局一通りやってる
    • 新人とペアプロでリファクタリング一緒にやったらOOP半年で理解できた
      • 必ず上手くいくわけではない
      • トップダウンで学びたい人もいるはず
  • モデリングを目的に勉強むずかしい
  • リファクタリングを設計の本と思ってない人がいる
  • DDDのコミュニティとか草の根で開催されているものを集めていきたい

https://little-hands.hatenablog.com/entry/dddcj

  • 今の人はクラス図描いたことない
  • 書く習慣作るだけで変わってくる
  • UMTPでワークショップやってたりする

https://umtp-japan.org/download/umtpモデリングワークショップ資料
https://umtp-japan.org/documents

  • jigとかあるので、javaをマークアップ言語として使うとか考えても良いのでは?
    • 一旦振り切ってやってみるのがいい
  • 本をきっちり読むこと
    • アウトプットすること

おまけ

  • 最初に紹介した本の読み方動画

https://www.youtube.com/watch?v=MXNp8AbKQUk

Discussion