Submit Search
Upload
プロダクトづくりのためのソフトウェア設計スタイル
•
6 likes
•
4,601 views
増田 亨
Follow
正しいものを正しくつくる プロダクトづくりの不確実性と戦うためのソフトウェア設計 - 創発的な設計活動 - 柔軟なモジュール構造 - 20%に投資する
Read less
Read more
Software
Report
Share
Report
Share
1 of 29
Download now
Download to read offline
Recommended
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう
増田 亨
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン
増田 亨
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
増田 亨
ドメイン駆動設計入門
ドメイン駆動設計入門
Takuya Kitamura
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】
増田 亨
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
Recommended
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう
増田 亨
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン
増田 亨
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
増田 亨
ドメイン駆動設計入門
ドメイン駆動設計入門
Takuya Kitamura
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】
増田 亨
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
アジャイルなソフトウェア設計を目指して
アジャイルなソフトウェア設計を目指して
増田 亨
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
増田 亨
「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう
増田 亨
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
増田 亨
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
増田 亨
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2
増田 亨
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
Tadayoshi Sato
ソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える
増田 亨
毎日が越境だ!
毎日が越境だ!
増田 亨
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
増田 亨
DDD sample code explained in Java
DDD sample code explained in Java
増田 亨
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
増田 亨
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル
増田 亨
なぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのか
Yusuke Suzuki
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨
Developers Summit 2013【15-B-6】開発者の "資産形成" につながる Action とは?
Developers Summit 2013【15-B-6】開発者の "資産形成" につながる Action とは?
インフラジスティックス・ジャパン株式会社
20200523 冴えないソフトの育てかた
20200523 冴えないソフトの育てかた
hiyohiyo
More Related Content
What's hot
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
アジャイルなソフトウェア設計を目指して
アジャイルなソフトウェア設計を目指して
増田 亨
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
増田 亨
「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう
増田 亨
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
増田 亨
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
増田 亨
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2
増田 亨
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
Tadayoshi Sato
ソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える
増田 亨
毎日が越境だ!
毎日が越境だ!
増田 亨
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
増田 亨
DDD sample code explained in Java
DDD sample code explained in Java
増田 亨
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
増田 亨
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル
増田 亨
なぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのか
Yusuke Suzuki
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨
What's hot
(20)
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
アジャイルなソフトウェア設計を目指して
アジャイルなソフトウェア設計を目指して
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
ソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える
毎日が越境だ!
毎日が越境だ!
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
DDD sample code explained in Java
DDD sample code explained in Java
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル
なぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのか
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
Similar to プロダクトづくりのためのソフトウェア設計スタイル
Developers Summit 2013【15-B-6】開発者の "資産形成" につながる Action とは?
Developers Summit 2013【15-B-6】開発者の "資産形成" につながる Action とは?
インフラジスティックス・ジャパン株式会社
20200523 冴えないソフトの育てかた
20200523 冴えないソフトの育てかた
hiyohiyo
20210828_win32_windows11
20210828_win32_windows11
hiyohiyo
Gnus intro web_2021
Gnus intro web_2021
耕介 長田
ビジネスとデザイン ~ビジネスは悪くない~
ビジネスとデザイン ~ビジネスは悪くない~
Ken Azuma
Do you wanna be a V-ROCK star?
Do you wanna be a V-ROCK star?
Yugo Shimizu
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
増田 亨
最近のQ#について
最近のQ#について
Takayoshi Tanaka
基調講演「データのグループウェア化」
基調講演「データのグループウェア化」
Cybozucommunity
20190706 PO 2019 Summer
20190706 PO 2019 Summer
hiyohiyo
20200429 algyan lt
20200429 algyan lt
hiyohiyo
Arduino で組み込み開発 - 京都TECH オープンキャンパス2021
Arduino で組み込み開発 - 京都TECH オープンキャンパス2021
Yoshitaka Seo
DEMODAY 2019 Spring スポンサーシップ募集要項
DEMODAY 2019 Spring スポンサーシップ募集要項
DIVE INTO CODE Corp.
Web App for Containers のデプロイでつまずいた話
Web App for Containers のデプロイでつまずいた話
Shigenari Ohnuma
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
増田 亨
A04_これがデジタル変革だ!3 か月で B2C の WEB ポータルをスクラッチした Microsoft クラウドネイティブ の開発事例 [Micros...
A04_これがデジタル変革だ!3 か月で B2C の WEB ポータルをスクラッチした Microsoft クラウドネイティブ の開発事例 [Micros...
日本マイクロソフト株式会社
サービス開発における工程
サービス開発における工程
Hidetoshi Mori
デジタル時代の企業変革 2019
デジタル時代の企業変革 2019
Ikuo Misao
Lt40
Lt40
GIG inc.
20190117 teamup
20190117 teamup
Katsuhiro Honda
Similar to プロダクトづくりのためのソフトウェア設計スタイル
(20)
Developers Summit 2013【15-B-6】開発者の "資産形成" につながる Action とは?
Developers Summit 2013【15-B-6】開発者の "資産形成" につながる Action とは?
20200523 冴えないソフトの育てかた
20200523 冴えないソフトの育てかた
20210828_win32_windows11
20210828_win32_windows11
Gnus intro web_2021
Gnus intro web_2021
ビジネスとデザイン ~ビジネスは悪くない~
ビジネスとデザイン ~ビジネスは悪くない~
Do you wanna be a V-ROCK star?
Do you wanna be a V-ROCK star?
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
最近のQ#について
最近のQ#について
基調講演「データのグループウェア化」
基調講演「データのグループウェア化」
20190706 PO 2019 Summer
20190706 PO 2019 Summer
20200429 algyan lt
20200429 algyan lt
Arduino で組み込み開発 - 京都TECH オープンキャンパス2021
Arduino で組み込み開発 - 京都TECH オープンキャンパス2021
DEMODAY 2019 Spring スポンサーシップ募集要項
DEMODAY 2019 Spring スポンサーシップ募集要項
Web App for Containers のデプロイでつまずいた話
Web App for Containers のデプロイでつまずいた話
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
A04_これがデジタル変革だ!3 か月で B2C の WEB ポータルをスクラッチした Microsoft クラウドネイティブ の開発事例 [Micros...
A04_これがデジタル変革だ!3 か月で B2C の WEB ポータルをスクラッチした Microsoft クラウドネイティブ の開発事例 [Micros...
サービス開発における工程
サービス開発における工程
デジタル時代の企業変革 2019
デジタル時代の企業変革 2019
Lt40
Lt40
20190117 teamup
20190117 teamup
More from 増田 亨
ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善
増田 亨
事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述
増田 亨
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
増田 亨
ビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かう
増田 亨
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
増田 亨
SoR 2.0 summary
SoR 2.0 summary
増田 亨
SoR 2.0 基幹システムの再定義と再構築
SoR 2.0 基幹システムの再定義と再構築
増田 亨
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
越境する情シス:進化可能なアーキテクチャを手に入れる
越境する情シス:進化可能なアーキテクチャを手に入れる
増田 亨
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
増田 亨
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
増田 亨
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
増田 亨
More from 増田 亨
(12)
ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善
事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
ビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かう
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
SoR 2.0 summary
SoR 2.0 summary
SoR 2.0 基幹システムの再定義と再構築
SoR 2.0 基幹システムの再定義と再構築
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
越境する情シス:進化可能なアーキテクチャを手に入れる
越境する情シス:進化可能なアーキテクチャを手に入れる
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
プロダクトづくりのためのソフトウェア設計スタイル
1.
プロダクトづくりのための ソフトウェア設計スタイル ギルドワークス 増田 亨 DevLove
#280 プロダクトをつくるとはどういうことなのか? -正しいものを正しくつくる-
2.
2019/7/1 2 祝 出版2周年 いまでも、毎日だれかは買ってくれている 今日の話は、この本の背景にある考え方と思い
3.
プロダクトづくり 2019/7/1 3
4.
プロダクトづくり 不確実性との戦い 終わりのない進化と成長 あらかじめ、要件/期限/予算を固定するソフトウェア開発とは別の世界 2019/7/1 4
5.
ソフトウェア設計という課題 2019/7/1 5
6.
複雑さとの戦い 構成要素の数 構成要素間の関係 拡張と変更の繰り返し 2019/7/1 6 建築や土木とは異質の挑戦
7.
ソフトウェア設計の品質 2019/7/1 7
8.
構造と秩序 2019/7/1 8
9.
進化を続ける構造と秩序 プロダクトづくりに必要な設計品質 2019/7/1 9
10.
ソフトウェア設計のスキル 構造と秩序を生み出し続ける能力 2019/7/1 10
11.
不確実性と戦うための ソフトウェア設計スタイル 2019/7/1 11
12.
柔らかなモジュール構造 創発的な設計活動 20%に投資する 2019/7/1 12
13.
創発的な設計活動 2019/7/1 13
14.
創発的な設計活動 観察 仮説 実験
考察 目の前の設計課題 過去の設計例 他者の設計例 仮決め コードで検証 収まり具合 まわりとの関係性 全体の調和 2019/7/1 14 設計案の列挙 観察と考察の質と量が大きな違いを生む
15.
やわらかなモジュール構造 2019/7/1 15
16.
設計の基本 関心を分離する モジュールに分割する 2019/7/1 16
17.
モジュール分割の方法論 2019/7/1 17
18.
モジュール分割:方法論の違い 機能で分解 型で分解 入力と出力 計算と判定 画面・通信・データベースの操作
導出ロジック/判定ロジックの記述 2019/7/1 18 A. Hoare O. Dahl B. Liskov B. Meyer M. Fowler K. Beck E. Evans … ボトムアップ インクリメンタル(創発的) トップダウン アップフロント ビジネスルール記録と通知 トランザクションスクリプト ドメインオブジェクトモデル 硬直化、レガシー化 進化と成長、創発性
19.
型 ✓ 値の種類の定義(何を計算したいかのアイデアの表現) ➢ 金額、数量、日付、日数、判定区分、対象種別、… ✓
値の範囲の定義 ➢ 上限、下限 ➢ 有限要素を列挙して定義(曜日、会員種別、年齢区分、….) ✓ 値を使った有効な操作の定義 ➢ 同一性判定、大小判定 ➢ 加減乗除 ✓ 値の範囲と有効な操作を一つの入れ物にカプセル化 → クラスの定義 2019/7/1 19 プリミティブな型 int, long boolean BigDecimal LocalDate, LocalTime 配列、List,Set,Map,
20.
設計スタイル 2019/7/1 20 型で分解 機能で分解 ✓ アジャイルなソフトウェア開発の基本スタイル ➢
型の定義の柔軟性/創発性 ➢ 型の組み合わせ方の柔軟性/創発性 ✓ ウォータフォールのソフトウェア開発の基本スタイル ➢ 機能分割によるモジュール構造の固定化 ➢ 計算ロジックの断片化と重複 → 力づくの変更 → 限界
21.
関心事と設計の直接的な写像 2019/7/1 21
22.
怪しげな写像 金額 注文番号 消費税 換算レート 納期 誕生日 割引可能 出荷可能 long型 BigDecimal型 LocalDate型 boolean型 一方通行 N対1 値の範囲 可能な操作 ビジネス活動の関心事 設計実装の関心事 2019/7/1 22
23.
直接的な写像 金額 注文番号 消費税 換算レート 納期 誕生日 割引可能 出荷可能 双方向の対応 1対1 適切な値の範囲 適切な操作 ビジネス活動の関心事 設計実装の関心事 金額型 注文番号型 消費税型 換算レート型 納期型 誕生日型 割引判定型 出荷判定型 2019/7/1 23ビジネスの関心事とソフトウェアの構造が直接つながる
24.
画面やテーブルの見え方の変化 2019/7/1 24 データのかたまり
25.
型と計算に焦点を合わせた時の見え方 2019/7/1 25 分解可能性 ✓
計算の文脈ごとに画面やテーブルが論理ブロックに分かれて見える 価格計算、割引計算、納期設定、リスク判定、… 暗黙の関係性 データのつながり ✓ 計算の文脈から、画面/テーブル間の隠れた関係性に気づく 計算や判断に必要なさまざまなデータの所在/発生タイミング 画面遷移図やER図にはでてこない関連性 重要度の濃淡 ✓ 計算結果・判定結果(知りたいこと)に着眼する ✓ 各データ項目が、どこでどんな計算判断に使われるか気になる 計算や判断に使わないデータは注目度をさげる 重要なデータ、重要な関係だけが浮き上がってみえるようになる
26.
20%に投資する 2019/7/1 26
27.
20% → 80% 2019/7/1
27 重要な20% 全体の80%に影響する 設計の焦点 ここで消耗しない ここで時間を浪費しない 不確実性といっても、中核の要素がぶれまくるわけではない 周辺的な関心事は、ぶれてもよいように設計活動を節約しておく
28.
不確実性と戦うための ソフトウェア設計スタイル 2019/7/1 28
29.
柔らかなモジュール構造 創発的な設計活動 20%に投資する 2019/7/1 29 観察 仮説 実験 考察 型 計算が主役 直接的な写像 中核要素の見極め 周辺で浪費しない 末端で消耗しない
Download now