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

僕がユースケース駆動開発をする理由/my-usecase-driven-development

 僕がユースケース駆動開発をする理由/my-usecase-driven-development

ユースケース駆動開発をなぜやるのか?
どういう利点があるのか。

イベント「ユースケース駆動開発をやってみた」の
登壇資料です。
https://modeling-how-to-learn.connpass.com/event/229330/

[email protected]

December 08, 2021
Tweet

Other Decks in Programming

Transcript

  1. 僕がユースケース駆動開発をする理由
    ユースケース駆動開発をやってみた
    2021.12.08 @hirodragon

    View Slide

  2. 僕がユースケース駆動開発をする理由
    話す事話さないこと
    話す事
    ・ユースケース駆動開発を実践するモチベーション
    話さない事
    ・ICONIXプロセス等の具体的なやり方
    (ICONIXの手順などは以前発表した資料がありますのでよろしければそちらも見てください)
    - 明日から使えるDDDのためのユースケース駆動開発
    https://qiita.com/hirodragon/items/e2330edc1d1a329d17f5
    - DDD時代に考えたいICONIXプロセス
    https://speakerdeck.com/hirodragon112/iconix-in-ddd
    - ICONIXプロセスから学ぶオブジェクト指向モデリング
    https://speakerdeck.com/hirodragon112/iconix-for-object-oriented

    View Slide

  3. 僕がユースケース駆動開発をする理由
    本日のテーマ
    プログラムを書こう

    View Slide

  4. 僕がユースケース駆動開発をする理由
    Hash tag : #iconix
    Twitterなどで、感想・にぎやかし・その他諸々書い
    てイベントを盛り上げて頂けると嬉しいです

    View Slide

  5. 僕がユースケース駆動開発をする理由
    自己紹介
    林 宏勝
    Twitter : @hirodragon112
    株式会社ミライトデザイン CEO
    OOP/DDD/CQRS/ICONIX/Agile/
    PHP/RDRA/らへんが好き
    上流から下流まで色々やります。
    Object-Oriented Conference2021 主催
    勉強会 : ペチオブ
    Youtube :
    https://www.youtube.com/c/MiraitoDesignInc

    View Slide

  6. 僕がユースケース駆動開発をする理由
    本日のテーマ
    プログラムを書こう

    View Slide

  7. 僕がユースケース駆動開発をする理由
    よりよいシステムを作りたい

    View Slide

  8. 僕がユースケース駆動開発をする理由
    何を作ればよいのか どう作ればよいのか
    システム開発の難しさ

    View Slide

  9. 僕がユースケース駆動開発をする理由
    何を作ればよいのか どう作ればよいのか
    何をしたい? どう使う?
    誰が使う? 何を実現したい?
    言語仕様 アーキテクチャ
    システム設計 データベース設計
    システム開発の難しさ

    View Slide

  10. 僕がユースケース駆動開発をする理由
    何を作ればよいのか どう作ればよいのか
    何をしたい? どう使う?
    誰が使う? 何を実現したい?
    言語仕様 アーキテクチャ
    システム設計 データベース設計
    予算 期間 チーム管理 資産管理
    ドキュメント リリース CI/CD セキュリティ
    運用方法 メンテナンス
    老朽化 監視
    他にも…
    テスト戦略
    システム開発の難しさ

    View Slide

  11. 僕がユースケース駆動開発をする理由
    よりよいシステムを作りたい

    View Slide

  12. 僕がユースケース駆動開発をする理由
    システム開発の難しさ
    何を作ればよいのか どう作ればよいのか
    開発者はこっちにばかり
    目がいってしまいがち

    View Slide

  13. 僕がユースケース駆動開発をする理由
    システム開発の難しさ
    何を作ればよいのか どう作ればよいのか
    何をどう作ればよいのか
    目的と作り方を常に
    同時に意識したい

    View Slide

  14. 僕がユースケース駆動開発をする理由
    ドメインロジック
    ドメイン
    ドメインロジック
    ドメインロジック
    ドメイン
    ドメインロジック
    - 入力(ユーザー操作やバッチ、APIコールなど)
    をきっかけに動作する
    - 独立した演算群(ドメインロジック)とその他ア
    プリケーションロジック(永続化など)を適切な
    順番で呼び出し処理を行う
    - 結果を出力として返却する
    よくあるシステムの内部
    入力
    永続化
    出力
    必要な順序で演算組み合わせる
    参照
    外部
    連携

    View Slide

  15. 僕がユースケース駆動開発をする理由
    ドメインロジック
    ドメイン
    ドメインロジック
    ドメインロジック
    ドメイン
    ドメインロジック
    ドメインロジック = 独立した演算
    ドメイン毎に分類された演算群
    システムのコアとなるもの
    関数のようなもの。
    入力に対して演算結果を返す事が役割
    Ex : 美容院の予約システム
    - 予約枠はあいているか
    - 予約受付時間か
    - 施術時間の合計は何分か
    - ポイントが何ポイントたまるか
    etc
    よくあるシステムの内部
    ドメインオブジェクト

    View Slide

  16. 僕がユースケース駆動開発をする理由
    入出力
    - システムが動作するきっかけ
    - 結果を出力として返却する
    - 入力の検証などはここで行われる
    よくあるシステムの内部
    入力 出力
    入出力

    View Slide

  17. 僕がユースケース駆動開発をする理由
    - メモリから永続化装置(主にDB)への書き込み
    や読み込み
    - 外部システムとの通信(外部APIなど)
    - その他アプリケーションに必要な操作を行う
    よくあるシステムの内部
    永続化
    参照
    外部
    連携

    View Slide

  18. 僕がユースケース駆動開発をする理由
    ドメインロジック
    ドメイン
    ドメインロジック
    ドメインロジック
    ドメイン
    ドメインロジック
    システムに必要な各要素を
    - 必要な処理を
    - 適切な順番で
    呼び出す。
    いわば司会進行票
    よくあるシステムの内部
    入力
    永続化
    出力
    必要な順序で演算組み合わせる
    参照
    外部
    連携

    View Slide

  19. 僕がユースケース駆動開発をする理由
    引用 : https://magazine.partyhunter.jp/know-how/1256/

    View Slide

  20. 僕がユースケース駆動開発をする理由
    本日のテーマ
    式次第 = プログラム
    プログラム
    物事を行う手順のもくろみ。
    •予定の計画表。
    •催物などの実行計画。その予定・順序・番組・配役などを書いた紙。プロ。
    •コンピュータによる処理法を具体的に計算機向きに指示した表現。

    View Slide

  21. 僕がユースケース駆動開発をする理由
    本日のテーマ
    プログラムを書こう

    View Slide

  22. 僕がユースケース駆動開発をする理由
    本日のテーマ
    プログラム = ユースケース
    利用者がシステムを用いて目的を達成するまでのやり取りの定義
    実際に利用するアクター(利用者・外部システム)から見た、
    「このシステムは何ができるのか」

    View Slide

  23. 僕がユースケース駆動開発をする理由
    「何ができて」
    「どういうやり取りで実現するか」
    ユースケース図 ユースケース記述

    View Slide

  24. 僕がユースケース駆動開発をする理由
    システム開発の難しさ
    何を作ればよいのか どう作ればよいのか
    何をどう作ればよいのか
    目的と作り方を常に
    同時に意識したい
    ユースケースを中心としてシステムを考えると
    「何を」と「どうやって」を常に分離せずに考えられる

    View Slide

  25. 僕がユースケース駆動開発をする理由
    取り組んでいること
    - 要件定義の段階からユースケース図を作成し、プロダクトオーナーと認識をそろえる
    - ユースケース図に出た言葉はその後の工程でもそのまま使う
    - 分析モデルの入り口もユースケース図(ロバストネス図に繋げる)
    - ユースケース記述は式次第だと意識する
    - フィードバックループを回す

    View Slide

  26. 僕がユースケース駆動開発をする理由
    ダグ・ローゼンバーグ
    マット・ステファン 著
    ICONIXプロセス
    - ユースケースを中心に、ユーザーの要求からシステムの各オブジェクト
    へのマッピング
    - 分析・開発・テストまで網羅したプロセス
    - ロバストネス分析が最大の特徴
    - ドメインモデルの洗い出しや見直しにも最適

    View Slide

  27. 僕がユースケース駆動開発をする理由
    RDRA
    - 物事の関係性に着目した要件定義時のモデリング手法
    - 要求 - 業務 - BUC(ビジネスユースケース)を関連付け
    - システム境界を認識しアクターを整理できる
    ユースケースから大本の要求にまで関連をたどる事ができる
    神崎善司 著

    View Slide

  28. 僕がユースケース駆動開発をする理由
    宣伝
    ミライトデザインでは絶賛エンジニアを募集しています。
    DDD, ICONIX,OOPなどが好き
    経験年数不問
    ただし、ある程度の自己学習習慣は必要です
    ご興味ある方いらっしゃいましたらお気軽にtwitterのDMなどください!

    View Slide

  29. 僕がユースケース駆動開発をする理由
    @hirodragon

    View Slide