Slide 1

Slide 1 text

現場で役立つモデリング 超入門 2024年10月27日 有限会社システム設計 増田 亨 1 JUG CCC 2024 Fall Step Up セッション

Slide 2

Slide 2 text

自己紹介 業務系アプリケーションソフトウェアの開発者 モデル駆動設計 Java/Spring Boot/IntelliJ IDEA/JIG 有限会社システム設計 代表 since 2003 コミューン株式会社 技術アドバイザ since 2023 2 増田 亨(ますだ とおる) 著書(2017) 訳書(2024)

Slide 3

Slide 3 text

モデリングの基礎知識 3

Slide 4

Slide 4 text

モデリング:モデルを作る活動 4 観察 体験 資料 対話 知識 モデリング 箇条書き 図 表 式 入力 出力

Slide 5

Slide 5 text

モデリングの狙い •特徴をつかむ •要点をつかむ •分類する •流れをつかむ 5

Slide 6

Slide 6 text

モデリングの三つの効果 わからない → わかった 伝わらない → 伝わった 見つからない → 見つかった 6

Slide 7

Slide 7 text

モデリングの三原則 •簡略化 •実用性 •経済性 7

Slide 8

Slide 8 text

簡略化 8 事業活動 販売 資金 回収 人とモノ に投入 資金循環 サイクル 注目する側面を選択 特徴、要点、分類、流れを表現

Slide 9

Slide 9 text

簡略化 9 方向、距離、位置関係は正確ではない 目的地への経路を知るには必要十分

Slide 10

Slide 10 text

簡略化の度合いを選ぶ 10 役に立つのはどれか(特徴、要点、分類、流れ) 経済性(モデル作成の費用と効果)

Slide 11

Slide 11 text

モデル表現の基本部品 •言葉 •囲み(丸、四角) •矢印(なし、単方向、双方向、衝突) •境界線 11

Slide 12

Slide 12 text

モデル表現の基本部品:言葉 • モデリングは言葉探しと言葉選び • 特徴を表す言葉 • 要点を表す言葉 • 分類した要素の集まり(グループ)を表す言葉 • 流れ(状態の変化)を表現する言葉 • 言葉を書き留める(脳内イメージ→音声→文字化) • 言葉を関係づける • 箇条書き • 図解(言葉の関連図) 12 補助的な手段:分類表、四象限図、式

Slide 13

Slide 13 text

モデリングの基本スキル:箇条書き • 箇条書きで特徴・要点・分類・流れを表現する • 箇条書きの三大技術 • 構造化:全体像を一瞬で理解できるように工夫する技術 • 物語化:表現に一貫した流れを生み出す技術 • メッセージ化:次の行動につなげる技術 13 具体例がビジネスシーンのプレゼン中心なので、ビジネスの基礎知識の学習にもなる

Slide 14

Slide 14 text

モデリングの基本スキル:図解 • 図解で特徴・要点・分類・流れを表現する • 図解の基礎技術 • 囲み:言葉を丸や四角で囲って「図形化」する • 四角と丸を使い分ける:四角は安定、丸は広がり • 矢印:関係性の図形化 • 矢印を使い分ける:単方向の流れ、双方向、対立 14 こちらもビジネスシーンの図解が中心なので、ビジネスの基礎知識の学習にもなる

Slide 15

Slide 15 text

言葉の広がり • 言葉は脳内で単独では存在しない • 知っている言葉が与えると、脳内で勝手に連想ゲームが始まる • 実体験と結びついている言葉は、脳内の五感や運動にかかわる 部位も活性化する • 言葉探し・言葉選びは、脳内のさまざまな知識を活性化する 15

Slide 16

Slide 16 text

状況別のモデリング • 知識が十分にある時(連想ゲームが勝手に始まる時) • 参考資料が十分にある時 • 知識や情報が不足している時 16

Slide 17

Slide 17 text

知識が十分にある時 1. 連想ゲームが勝手にはじまるので、どんどん言葉出しをする 2. 特徴・要点・分類・流れの箇条書きと図解で簡略化を試みる 3. タイムボックスでコストを制限する(経済性) 4. 視点を変えた複数のモデルを作る 5. 複数のモデル間の整合性を検証して、モデルを洗練させる 17

Slide 18

Slide 18 text

資料が十分にある時 1. 資料の要点を箇条書きする 2. 箇条書きを図解する 3. 図解してから、もう一度資料を読み直す 4. 新たな気づきがあるので、箇条書きと図解に反映する 5. タイムボックスで区切る(経済性) 18

Slide 19

Slide 19 text

知識や情報が不足している時 1. 連想ゲームが始まらない、あるいは、すぐに行き詰まる 2. 箇条書きや図解の準備として情報を集める 3. 箇条書きと図解を試みる 4. 元の情報を読み直す • 新たな気づきがあるので、箇条書きと図解に反映する • 情報の不足や欠落に気づいたら、追加の情報集めをし、箇条書きと図解に反映する 5. タイムボックスで区切る(経済性) 6. いったん先に進んで経験知を増やしてから、箇条書きと図解を更新する 19

Slide 20

Slide 20 text

モデリングの効果を検証する わからない → わかった 伝わらない → 伝わった 見つからない → 見つかった 20

Slide 21

Slide 21 text

より具体的なモデリング • アーキテクチャモデル、プロセスモデル、データモデル、UMLベースの モデリング技法など参考情報がいろいろ手に入る • ここまで説明したモデリングの基礎知識がわかっていると、それぞれの一 般化されたモデルの用途を理解し、ある意味で批判的に、応用できる • 狙い:「特徴」「要点」「分類」「流れ」 • 効果の検証:「わかった」「伝わった」「見つかった」 • モデリング三原則:「簡略化」「実用性」「経済性」 21

Slide 22

Slide 22 text

モデルを接地させる 22

Slide 23

Slide 23 text

モデルが接地しない問題 • モデルは、現実の特定の側面を簡略化したもの • 本質的にモデルは実体とかけ離れている • モデルで何かわかった気になる • 実際には、次の行動と成果に役に立たないことが多い • 技術書の図解(一般化されたモデル)に起きがちな現象 23

Slide 24

Slide 24 text

モデル接地問題を改善する取り組み A) 同じ対象を異なる視点から簡略化したモデルを集め、突き合わせて整合 性を検証する • それぞれのモデルが対象の特徴・要点・分類・流れを適切に表現できていれば、モ デル間に強い整合性があるはず • 他のモデルと関連づけができなかったり、整合がとれないモデルは、実用性が低い B) 一般化されたモデルに使われている言葉を、目の前の実体を表現するよ り具体的な言葉に置き換えてみる • うまく置き換えられない場合、あるいは、置き換えるとモデルの構造と一致しなく なる場合は、そのモデルの実用性は低い 24

Slide 25

Slide 25 text

一般化されたモデルをうまく使う • 書籍に記載された一般モデルはそもそも「実用性」は低い • その本の意図や構成に合わせた説明用 • 暗黙の文脈に依存 • 過度な一般化 • 書籍の一般モデルを使うための知識と技能が必要 • 書籍の一般モデルは、出発点として利用価値はある • 一般モデルに合わせるのではなく、自分たちに価値のある特徴・要点・分類・流れ を特定するための道具として使う • 現実の課題にたいして「わかった」「伝わった」「見つかった」で検証する • 最初はうまくいかないので、現場で繰り返し経験しながらコツを覚える 25

Slide 26

Slide 26 text

量が質を生む • モデリングのインプットとなる知識と情報 • モデリング(簡略化)の実験の回数 • 複数モデルの整合性検証の回数 • 多様な一般モデルの知識 • 一般モデルを参考にした実験の回数 • モデリングの実用性を検証した回数 • モデリングの経済性を検証した回数 26 モデリングがうまくできないときに、 何が足りないか振り返ってみたいこと

Slide 27

Slide 27 text

ソフトウェア開発のための これからのモデリング 27

Slide 28

Slide 28 text

費用対効果の高いモデリング •事業課題と業務内容を理解するためのモデリング •モジュール構造のモデリング •アプリケーション間連係のモデリング 28

Slide 29

Slide 29 text

事業課題と業務内容を理解するモデリング • 事業活動のデジタル化が急速に進んでいる • あらゆる活動でデジタルデータが発生している(量と種類の拡大) • それをあつかうためのソフトウェアの開発機会も増え続けている • ソフトウェア開発者の事業理解力が高いほど、事業に大きな価 値を早く提供できる • 事業課題や業務内容の特徴・要点・分類・流れを理解するため に箇条書きと図解のスキルを活用する 29

Slide 30

Slide 30 text

事業課題と業務内容のモデリング参考書 30 ・初学者が視野を広げる時に、比較的わかりやすい ・より具体的なモデリングは、それぞれの本の推薦図書を参考にする ・興味があれば、技術書だけでなくビジネスパーソン向けの書籍も探してみる

Slide 31

Slide 31 text

事業活動のモデリング • 対象が広い • ソフトウェア開発に直接関係のない側面も多い • 重点的に取り組むべき課題と、できるだけコストを押さえたい 領域の見極めが重要(実用性、経済性) 31

Slide 32

Slide 32 text

中核の業務領域に焦点を合わせて取り組む 32 二軸で分類 ・競合他社との差別化 ・業務ロジックの複雑さ 中核に重点的に取り組む(事業価値が最も高い) 一般はパッケージやクラウドサービスを検討 補完はできるだけ手間をかけずにすませる 中核

Slide 33

Slide 33 text

三つのカテゴリーの比較 中核 一般 補完 競争優位 〇 × × 複雑さ 〇 〇 × 変化 〇 × × 実装 内製 購入 外注 33

Slide 34

Slide 34 text

モジュール構造のモデリング • パッケージ図(パッケージ間の依存関係図)レベルのモデリングの費用対 効果が高い • コードからは見えにく構造を把握できる • パッケージの依存関係の改善は、ソフトウェアの変更容易性に直結する • 参考: パッケージ構造は、最初からコードで書いて、JIG (https://github.com/dddjava/jig) で関連図を自動生成して検証している • データベースも、コード先行で、ER図は自動生成 • スキーマ(テーブルのグルーピング)構造とスキーマ間の依存関係のモデリングは 費用対効果が高い 34

Slide 35

Slide 35 text

アプリケーション間連係のモデリング • 多数のアプリケーションの相互運用性がますます重要になって いる • 利害が一致しないことが多いアプリケーション間連係に取り組 むためには、ドメイン駆動設計の「区切られた文脈(Bounded Context)」視点のモデリングが費用対効果が高い 35

Slide 36

Slide 36 text

まとめ 36

Slide 37

Slide 37 text

モデリングの狙い •特徴をつかむ •要点をつかむ •分類する •流れをつかむ 37

Slide 38

Slide 38 text

モデリングの効果を検証 わからない → わかった 伝わらない → 伝わった 見つからない → 見つかった 38

Slide 39

Slide 39 text

モデリングの三原則 •簡略化 •実用性 •経済性 39