Upgrade to Pro — share decks privately, control downloads, hide ads and more …

現場で役立つモデリング 超入門

 現場で役立つモデリング 超入門

JJUG CCC 2024 Fall 発表資料

- モデリングの狙い(簡略化、実用性、経済性)
- モデリングの基本部品(言葉、囲み、矢印、境界線)
- 箇条書きモデリング
- 図形化モデリング
- モデリングの重点領域
- 事業活動と業務の理解のモデリング
- モジュール構造のモデリング
- アプリケーション間連係のモデリング

増田 亨

October 27, 2024
Tweet

More Decks by 増田 亨

Other Decks in Programming

Transcript

  1. 自己紹介 業務系アプリケーションソフトウェアの開発者 モデル駆動設計 Java/Spring Boot/IntelliJ IDEA/JIG 有限会社システム設計 代表 since 2003

    コミューン株式会社 技術アドバイザ since 2023 2 増田 亨(ますだ とおる) 著書(2017) 訳書(2024)
  2. 簡略化 8 事業活動 販売 資金 回収 人とモノ に投入 資金循環 サイクル

    注目する側面を選択 特徴、要点、分類、流れを表現
  3. モデル表現の基本部品:言葉 • モデリングは言葉探しと言葉選び • 特徴を表す言葉 • 要点を表す言葉 • 分類した要素の集まり(グループ)を表す言葉 •

    流れ(状態の変化)を表現する言葉 • 言葉を書き留める(脳内イメージ→音声→文字化) • 言葉を関係づける • 箇条書き • 図解(言葉の関連図) 12 補助的な手段:分類表、四象限図、式
  4. モデリングの基本スキル:図解 • 図解で特徴・要点・分類・流れを表現する • 図解の基礎技術 • 囲み:言葉を丸や四角で囲って「図形化」する • 四角と丸を使い分ける:四角は安定、丸は広がり •

    矢印:関係性の図形化 • 矢印を使い分ける:単方向の流れ、双方向、対立 14 こちらもビジネスシーンの図解が中心なので、ビジネスの基礎知識の学習にもなる
  5. 知識や情報が不足している時 1. 連想ゲームが始まらない、あるいは、すぐに行き詰まる 2. 箇条書きや図解の準備として情報を集める 3. 箇条書きと図解を試みる 4. 元の情報を読み直す •

    新たな気づきがあるので、箇条書きと図解に反映する • 情報の不足や欠落に気づいたら、追加の情報集めをし、箇条書きと図解に反映する 5. タイムボックスで区切る(経済性) 6. いったん先に進んで経験知を増やしてから、箇条書きと図解を更新する 19
  6. モデル接地問題を改善する取り組み A) 同じ対象を異なる視点から簡略化したモデルを集め、突き合わせて整合 性を検証する • それぞれのモデルが対象の特徴・要点・分類・流れを適切に表現できていれば、モ デル間に強い整合性があるはず • 他のモデルと関連づけができなかったり、整合がとれないモデルは、実用性が低い B)

    一般化されたモデルに使われている言葉を、目の前の実体を表現するよ り具体的な言葉に置き換えてみる • うまく置き換えられない場合、あるいは、置き換えるとモデルの構造と一致しなく なる場合は、そのモデルの実用性は低い 24
  7. 一般化されたモデルをうまく使う • 書籍に記載された一般モデルはそもそも「実用性」は低い • その本の意図や構成に合わせた説明用 • 暗黙の文脈に依存 • 過度な一般化 •

    書籍の一般モデルを使うための知識と技能が必要 • 書籍の一般モデルは、出発点として利用価値はある • 一般モデルに合わせるのではなく、自分たちに価値のある特徴・要点・分類・流れ を特定するための道具として使う • 現実の課題にたいして「わかった」「伝わった」「見つかった」で検証する • 最初はうまくいかないので、現場で繰り返し経験しながらコツを覚える 25
  8. 量が質を生む • モデリングのインプットとなる知識と情報 • モデリング(簡略化)の実験の回数 • 複数モデルの整合性検証の回数 • 多様な一般モデルの知識 •

    一般モデルを参考にした実験の回数 • モデリングの実用性を検証した回数 • モデリングの経済性を検証した回数 26 モデリングがうまくできないときに、 何が足りないか振り返ってみたいこと
  9. モジュール構造のモデリング • パッケージ図(パッケージ間の依存関係図)レベルのモデリングの費用対 効果が高い • コードからは見えにく構造を把握できる • パッケージの依存関係の改善は、ソフトウェアの変更容易性に直結する • 参考:

    パッケージ構造は、最初からコードで書いて、JIG (https://github.com/dddjava/jig) で関連図を自動生成して検証している • データベースも、コード先行で、ER図は自動生成 • スキーマ(テーブルのグルーピング)構造とスキーマ間の依存関係のモデリングは 費用対効果が高い 34