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

変更を楽に安全にするための設計:ワークショップ編

増田 亨
September 22, 2021

 変更を楽に安全にするための設計:ワークショップ編

下記資料の設計スタイルを体験的に学ぶためのワークショップ
株式会社シンプレクスさん( https://www.simplex.inc/ )の勉強会で使った資料を公開します。

「設計を楽で安全にする設計」
https://speakerdeck.com/masuda220/bian-geng-wole-nian-quan-nisurutamefalseshe-ji-falsekao-efang-toyarifang

ワークショップに使ったサンプルコード
https://github.com/masuda220/loan-rule

増田 亨

September 22, 2021
Tweet

More Decks by 増田 亨

Other Decks in Programming

Transcript

  1. ワークショップの概要 ① おさらい 変更を楽で安全にする設計スタイル ② 設計スタイル体験ツアー • 三層+ドメインモデルの体験版 ガイド付ツアー •

    質疑応答・意見交換 ③ ビジネスルール追加の実験 A) ひとりの会員に同じ本は貸し出せない B) 返却期限を過ぎている会員には貸し出せない 2021/9/22 ©有限会社システム設計 2021 2
  2. はじめに:ワークショップ参加の心得 ① 好奇心を解き放つ → 見たい・聞きたい・やりたい ② 自分の感覚を大切にする • 疑問・違和感 •

    アイデア・思いつき ③ 行動してみる • 質問してみる • 発言してみる • やってみる 2021/9/22 ©有限会社システム設計 2021 3
  3. 関心の分離のアプローチ ビジネスアクション 通知と記録 計算判断の実行 ビジネスルール 事業活動の決め事 計算判断ロジック データベース 通信 変数、計算式

    if 文、for 文 戻り値 ドメインオブジェクト カプセル化 データソース層 アプリケーション層 2021/9/22 ©有限会社システム設計 2021 7
  4. ビジネスルールを表現するクラス設計 値オブジェクト 基本データを使う計算・判断ロジック をカプセル化 金額、数量、率 日付、日数、時刻、時間 区分オブジェクト 区分の列挙(enum) 区分ごとのデータとロジックや区分の 判定ロジックのカプセル化

    顧客種別、配送区分、 在庫区分、… 範囲オブジェクト 値の範囲内・範囲外の判定や範囲どう しの演算をカプセル化 金額範囲、数量範囲 期間、時間帯 コレクション オブジェクト 値・区分・範囲のコレクションの リスト処理・集合演算・写像操作のカ プセル化 受注明細 スキルセット 価格表 2021/9/22 ©有限会社システム設計 2021 8
  5. ビジネスアクションを表現するクラス設計 シナリオクラス 主要な活動の流れを表現(数は少ない) 詳細はアクティビティクラスで記述 予約受付シナリオ アクティビティクラス 商流・物流・金流などで、事業活動をグ ルーピングしたクラス群 要素サービスクラスを組み合わせて記述 受注アクティビティ

    出荷アクティビティ 請求支払アクティビティ 要素サービスクラス リソースごとのアクションを表現 原則として一つのリポジトリを持つ 注文の記録と参照 出荷時の通知 関心事:視点と粒度の違い 2021/9/22 ©有限会社システム設計 2021 9
  6. 三層+ドメインモデル体験版ツアー ① トップ画面 ② 貸出判断画面 ③ 全体の構成 ④ 機能一覧 ⑤

    用語集 ⑥ ドメインモデルのパッケージ関連図 ⑦ ビジネスルール関連図 ⑧ 呼び出し関係図(入出力視点) ⑨ 呼び出し関係図(ビジネスルール視点) ⑩ データモデル 2021/9/22 ©有限会社システム設計 2021 12
  7. 進め方 ワンサイクル ① コードを書いてみる ② gradleタスク jig documentを実行(ドキュメントの更新) ③ アプリケーションの

    stop and run ④ 画面で貸出判断を実行 ⑤ モデル図 by JIGで、設計の変更内容を確認 Loanabilityクラスに仮実装してある二つのprivateメソッド • boolean 同じ本の貸出() • boolean 返却期限ぎれあり() 目標 • 動くようにする • 自己文書化:ルールをわかりやすく表現する 2021/9/22 ©有限会社システム設計 2021 15