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

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

26e25726fc9da2f1e1f88c7be665407d?s=47 hiro@miraito
December 08, 2021

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

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

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

26e25726fc9da2f1e1f88c7be665407d?s=128

hiro@miraito

December 08, 2021
Tweet

Transcript

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

  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
  3. 僕がユースケース駆動開発をする理由 本日のテーマ プログラムを書こう

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

  5. 僕がユースケース駆動開発をする理由 自己紹介 林 宏勝 Twitter : @hirodragon112 株式会社ミライトデザイン CEO OOP/DDD/CQRS/ICONIX/Agile/

    PHP/RDRA/らへんが好き 上流から下流まで色々やります。 Object-Oriented Conference2021 主催 勉強会 : ペチオブ Youtube : https://www.youtube.com/c/MiraitoDesignInc
  6. 僕がユースケース駆動開発をする理由 本日のテーマ プログラムを書こう

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

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

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

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

    データベース設計 予算 期間 チーム管理 資産管理 ドキュメント リリース CI/CD セキュリティ 運用方法 メンテナンス 老朽化 監視 他にも… テスト戦略 システム開発の難しさ
  11. 僕がユースケース駆動開発をする理由 よりよいシステムを作りたい

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

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

  14. 僕がユースケース駆動開発をする理由 ドメインロジック ドメイン ドメインロジック ドメインロジック ドメイン ドメインロジック - 入力(ユーザー操作やバッチ、APIコールなど) をきっかけに動作する

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

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

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

    参照 外部 連携
  18. 僕がユースケース駆動開発をする理由 ドメインロジック ドメイン ドメインロジック ドメインロジック ドメイン ドメインロジック システムに必要な各要素を - 必要な処理を

    - 適切な順番で 呼び出す。 いわば司会進行票 よくあるシステムの内部 入力 永続化 出力 必要な順序で演算組み合わせる 参照 外部 連携
  19. 僕がユースケース駆動開発をする理由 引用 : https://magazine.partyhunter.jp/know-how/1256/

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

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

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

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

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

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

    - フィードバックループを回す
  26. 僕がユースケース駆動開発をする理由 ダグ・ローゼンバーグ マット・ステファン 著 ICONIXプロセス - ユースケースを中心に、ユーザーの要求からシステムの各オブジェクト へのマッピング - 分析・開発・テストまで網羅したプロセス

    - ロバストネス分析が最大の特徴 - ドメインモデルの洗い出しや見直しにも最適
  27. 僕がユースケース駆動開発をする理由 RDRA - 物事の関係性に着目した要件定義時のモデリング手法 - 要求 - 業務 - BUC(ビジネスユースケース)を関連付け

    - システム境界を認識しアクターを整理できる ユースケースから大本の要求にまで関連をたどる事ができる 神崎善司 著
  28. 僕がユースケース駆動開発をする理由 宣伝 ミライトデザインでは絶賛エンジニアを募集しています。 DDD, ICONIX,OOPなどが好き 経験年数不問 ただし、ある程度の自己学習習慣は必要です ご興味ある方いらっしゃいましたらお気軽にtwitterのDMなどください!

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