Submit Search
プロダクトづくりのためのソフトウェア設計スタイル
6 likes
4,657 views
増田 亨
正しいものを正しくつくる プロダクトづくりの不確実性と戦うためのソフトウェア設計 - 創発的な設計活動 - 柔軟なモジュール構造 - 20%に投資する
Software
Related topics:
Object-Oriented Programming
Read more
1 of 29
Download now
Downloaded 30 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
More Related Content
PDF
ソフトウェアの核心にある複雑さに立ち向かう
増田 亨
PDF
ソフトウェア設計の学び方を考える
増田 亨
PDF
アジャイルなソフトウェア設計を目指して
増田 亨
PDF
ドメイン駆動設計 基本を理解する
増田 亨
PDF
正しいものを正しく作る塾-設計コース
増田 亨
PDF
ドメイン駆動設計 本格入門
増田 亨
PDF
ドメイン駆動設計の正しい歩き方
増田 亨
PDF
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
ソフトウェアの核心にある複雑さに立ち向かう
増田 亨
ソフトウェア設計の学び方を考える
増田 亨
アジャイルなソフトウェア設計を目指して
増田 亨
ドメイン駆動設計 基本を理解する
増田 亨
正しいものを正しく作る塾-設計コース
増田 亨
ドメイン駆動設計 本格入門
増田 亨
ドメイン駆動設計の正しい歩き方
増田 亨
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
What's hot
(20)
PDF
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
PDF
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
PPT
ドメインロジックの実装方法とドメイン駆動設計
Tadayoshi Sato
PDF
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
PDF
ドメインオブジェクトの設計ガイドライン
増田 亨
PDF
DDD sample code explained in Java
増田 亨
PPTX
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
Tokoroten Nakayama
PDF
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
PDF
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
PDF
ドメイン駆動設計 思えば遠くにきたもんだ
増田 亨
PDF
実践に向けたドメイン駆動設計のエッセンス
増田 亨
PDF
リーン開発の本質 公開用
ESM SEC
PPTX
ITコミュニティと情報発信に共通する成長と貢献の要素
NISHIHARA Shota
PDF
ドメインオブジェクトの見つけ方・作り方・育て方
増田 亨
PDF
ドメイン駆動設計 複雑さに立ち向かう
増田 亨
PDF
ウォーターフォールとアジャイルのフェアな比較
Yoshitaka Kawashima
PDF
ビジネスパーソンのためのDX入門講座エッセンス版
Tokoroten Nakayama
PDF
TDD のこころ @ OSH2014
Takuto Wada
PDF
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
Koichiro Matsuoka
PDF
開発速度が速い #とは(LayerX社内資料)
mosa siru
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
ドメインロジックの実装方法とドメイン駆動設計
Tadayoshi Sato
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
ドメインオブジェクトの設計ガイドライン
増田 亨
DDD sample code explained in Java
増田 亨
事業の進展とデータマネジメント体制の進歩(+プレトタイプの話)
Tokoroten Nakayama
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
ドメイン駆動設計 思えば遠くにきたもんだ
増田 亨
実践に向けたドメイン駆動設計のエッセンス
増田 亨
リーン開発の本質 公開用
ESM SEC
ITコミュニティと情報発信に共通する成長と貢献の要素
NISHIHARA Shota
ドメインオブジェクトの見つけ方・作り方・育て方
増田 亨
ドメイン駆動設計 複雑さに立ち向かう
増田 亨
ウォーターフォールとアジャイルのフェアな比較
Yoshitaka Kawashima
ビジネスパーソンのためのDX入門講座エッセンス版
Tokoroten Nakayama
TDD のこころ @ OSH2014
Takuto Wada
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
Koichiro Matsuoka
開発速度が速い #とは(LayerX社内資料)
mosa siru
Ad
Similar to プロダクトづくりのためのソフトウェア設計スタイル
(20)
PDF
Developers Summit 2013【15-B-6】開発者の "資産形成" につながる Action とは?
インフラジスティックス・ジャパン株式会社
PDF
20200523 冴えないソフトの育てかた
hiyohiyo
PDF
20210828_win32_windows11
hiyohiyo
PDF
Gnus intro web_2021
耕介 長田
PDF
ビジネスとデザイン ~ビジネスは悪くない~
Ken Azuma
PPTX
Do you wanna be a V-ROCK star?
Yugo Shimizu
PDF
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
増田 亨
PPTX
最近のQ#について
Takayoshi Tanaka
PDF
基調講演「データのグループウェア化」
Cybozucommunity
PDF
20190706 PO 2019 Summer
hiyohiyo
PDF
20200429 algyan lt
hiyohiyo
PDF
Arduino で組み込み開発 - 京都TECH オープンキャンパス2021
Yoshitaka Seo
PDF
DEMODAY 2019 Spring スポンサーシップ募集要項
DIVE INTO CODE Corp.
PPTX
Web App for Containers のデプロイでつまずいた話
Shigenari Ohnuma
PDF
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
増田 亨
PDF
A04_これがデジタル変革だ!3 か月で B2C の WEB ポータルをスクラッチした Microsoft クラウドネイティブ の開発事例 [Micros...
日本マイクロソフト株式会社
PPTX
サービス開発における工程
Hidetoshi Mori
PPTX
デジタル時代の企業変革 2019
Ikuo Misao
PDF
Lt40
GIG inc.
PPTX
20190117 teamup
Katsuhiro Honda
Developers Summit 2013【15-B-6】開発者の "資産形成" につながる Action とは?
インフラジスティックス・ジャパン株式会社
20200523 冴えないソフトの育てかた
hiyohiyo
20210828_win32_windows11
hiyohiyo
Gnus intro web_2021
耕介 長田
ビジネスとデザイン ~ビジネスは悪くない~
Ken Azuma
Do you wanna be a V-ROCK star?
Yugo Shimizu
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
増田 亨
最近のQ#について
Takayoshi Tanaka
基調講演「データのグループウェア化」
Cybozucommunity
20190706 PO 2019 Summer
hiyohiyo
20200429 algyan lt
hiyohiyo
Arduino で組み込み開発 - 京都TECH オープンキャンパス2021
Yoshitaka Seo
DEMODAY 2019 Spring スポンサーシップ募集要項
DIVE INTO CODE Corp.
Web App for Containers のデプロイでつまずいた話
Shigenari Ohnuma
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
増田 亨
A04_これがデジタル変革だ!3 か月で B2C の WEB ポータルをスクラッチした Microsoft クラウドネイティブ の開発事例 [Micros...
日本マイクロソフト株式会社
サービス開発における工程
Hidetoshi Mori
デジタル時代の企業変革 2019
Ikuo Misao
Lt40
GIG inc.
20190117 teamup
Katsuhiro Honda
Ad
More from 増田 亨
(18)
PDF
ソフトウェア開発のやり方の改善
増田 亨
PDF
事業活動モデル・システム機能モデル・ビジネスロジックの記述
増田 亨
PDF
オブジェクト指向プログラミングの現在・過去・未来
増田 亨
PDF
ドメイン駆動設計 コアドメインを語り合ってみよう
増田 亨
PDF
ドメイン駆動設計という設計スタイル
増田 亨
PDF
マイクロサービス 4つの分割アプローチ
増田 亨
PDF
ビジネスルールの複雑さに立ち向かう
増田 亨
PDF
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
PDF
ドメイン駆動設計をゲーム開発に活かす
増田 亨
PDF
SoR 2.0 summary
増田 亨
PDF
毎日が越境だ!
増田 亨
PDF
SoR 2.0 基幹システムの再定義と再構築
増田 亨
PDF
ドメイン駆動設計とは何か 【入門編】
増田 亨
PDF
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
PDF
越境する情シス:進化可能なアーキテクチャを手に入れる
増田 亨
PDF
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
増田 亨
PDF
現場で役立つシステム設計の原則
増田 亨
PDF
現場で役立つシステム設計の原則
増田 亨
ソフトウェア開発のやり方の改善
増田 亨
事業活動モデル・システム機能モデル・ビジネスロジックの記述
増田 亨
オブジェクト指向プログラミングの現在・過去・未来
増田 亨
ドメイン駆動設計 コアドメインを語り合ってみよう
増田 亨
ドメイン駆動設計という設計スタイル
増田 亨
マイクロサービス 4つの分割アプローチ
増田 亨
ビジネスルールの複雑さに立ち向かう
増田 亨
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
ドメイン駆動設計をゲーム開発に活かす
増田 亨
SoR 2.0 summary
増田 亨
毎日が越境だ!
増田 亨
SoR 2.0 基幹システムの再定義と再構築
増田 亨
ドメイン駆動設計とは何か 【入門編】
増田 亨
ドメイン駆動設計のための 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