Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

僕がユースケース駆動開発をする理由 話す事話さないこと 話す事 ・ユースケース駆動開発を実践するモチベーション 話さない事 ・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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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