Skip to main content
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
EN
Upload
Download free for 30 days
Sign in
Uploaded by
Yoshitaka Kawashima
PDF, PPTX
3,339 views
Grokking Simplicity探訪
2024/6/5のアーキ部で話したスライドです。 Stratified Designの目的を中心に、そのメリットを考えてみます。
Software
◦
Read more
2
Save
Share
Embed
Save to Drive
Download now
Download as PDF, PPTX
1
/ 50
2
/ 50
3
/ 50
4
/ 50
5
/ 50
6
/ 50
7
/ 50
8
/ 50
9
/ 50
10
/ 50
11
/ 50
12
/ 50
13
/ 50
14
/ 50
15
/ 50
16
/ 50
17
/ 50
18
/ 50
19
/ 50
Most read
20
/ 50
More Related Content
PDF
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
by
Yoshitaka Kawashima
58 slides
23.1K views
PDF
強いて言えば「集約どう実装するのかな、を考える」な話
by
Yoshitaka Kawashima
23 slides
9.9K views
PDF
ソフトウェア設計における 意思決定とそのレビューの秘訣
by
Yoshitaka Kawashima
39 slides
5.1K views
PDF
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
28 slides
29.1K views
PDF
フロー効率性とリソース効率性について #xpjug
by
Itsuki Kuroda
62 slides
123K views
PDF
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
by
Koichiro Matsuoka
153 slides
8.4K views
PPTX
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
by
Tokoroten Nakayama
67 slides
178K views
PDF
ソフトウェアにおける 複雑さとは何なのか?
by
Yoshitaka Kawashima
23 slides
2.1K views
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
by
Yoshitaka Kawashima
58 slides
23.1K views
強いて言えば「集約どう実装するのかな、を考える」な話
by
Yoshitaka Kawashima
23 slides
9.9K views
ソフトウェア設計における 意思決定とそのレビューの秘訣
by
Yoshitaka Kawashima
39 slides
5.1K views
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
28 slides
29.1K views
フロー効率性とリソース効率性について #xpjug
by
Itsuki Kuroda
62 slides
123K views
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
by
Koichiro Matsuoka
153 slides
8.4K views
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
by
Tokoroten Nakayama
67 slides
178K views
ソフトウェアにおける 複雑さとは何なのか?
by
Yoshitaka Kawashima
23 slides
2.1K views
What's hot
PPTX
なぜコンピュータを学ばなければならないのか 21世紀の君主論
by
Tokoroten Nakayama
58 slides
97.3K views
PDF
Union find(素集合データ構造)
by
AtCoder Inc.
18 slides
196.8K views
PDF
ドメイン駆動設計サンプルコードの徹底解説
by
増田 亨
41 slides
22.2K views
PDF
Lean coffee
by
Takeshi Arai
42 slides
48.4K views
PDF
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
24 slides
197.2K views
PDF
Tackling Complexity
by
Yoshitaka Kawashima
16 slides
3.4K views
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
by
Mikiya Okuno
59 slides
22.5K views
PDF
ドメインオブジェクトの見つけ方・作り方・育て方
by
増田 亨
95 slides
32.7K views
PDF
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
by
Koichiro Matsuoka
130 slides
24.4K views
PDF
暗号技術の実装と数学
by
MITSUNARI Shigeo
35 slides
13.8K views
PDF
オブジェクト指向できていますか?
by
Moriharu Ohzu
129 slides
243.1K views
PDF
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
by
Koichiro Matsuoka
73 slides
16.5K views
PDF
ドメイン駆動設計のためのオブジェクト指向入門
by
増田 亨
89 slides
49.3K views
PDF
ビジネスパーソンのためのDX入門講座エッセンス版
by
Tokoroten Nakayama
26 slides
56.1K views
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
45 slides
174.7K views
PDF
LayerXのQAチームで目指したい動き方 (社内資料)
by
mosa siru
18 slides
6.4K views
PDF
プログラミングコンテストでの動的計画法
by
Takuya Akiba
59 slides
97.1K views
PDF
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
by
増田 亨
83 slides
31.1K views
PDF
イミュータブルデータモデル(世代編)
by
Yoshitaka Kawashima
16 slides
40.7K views
PPTX
心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein
by
Tokoroten Nakayama
86 slides
163.6K views
なぜコンピュータを学ばなければならないのか 21世紀の君主論
by
Tokoroten Nakayama
58 slides
97.3K views
Union find(素集合データ構造)
by
AtCoder Inc.
18 slides
196.8K views
ドメイン駆動設計サンプルコードの徹底解説
by
増田 亨
41 slides
22.2K views
Lean coffee
by
Takeshi Arai
42 slides
48.4K views
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
24 slides
197.2K views
Tackling Complexity
by
Yoshitaka Kawashima
16 slides
3.4K views
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
by
Mikiya Okuno
59 slides
22.5K views
ドメインオブジェクトの見つけ方・作り方・育て方
by
増田 亨
95 slides
32.7K views
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
by
Koichiro Matsuoka
130 slides
24.4K views
暗号技術の実装と数学
by
MITSUNARI Shigeo
35 slides
13.8K views
オブジェクト指向できていますか?
by
Moriharu Ohzu
129 slides
243.1K views
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
by
Koichiro Matsuoka
73 slides
16.5K views
ドメイン駆動設計のためのオブジェクト指向入門
by
増田 亨
89 slides
49.3K views
ビジネスパーソンのためのDX入門講座エッセンス版
by
Tokoroten Nakayama
26 slides
56.1K views
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
45 slides
174.7K views
LayerXのQAチームで目指したい動き方 (社内資料)
by
mosa siru
18 slides
6.4K views
プログラミングコンテストでの動的計画法
by
Takuya Akiba
59 slides
97.1K views
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
by
増田 亨
83 slides
31.1K views
イミュータブルデータモデル(世代編)
by
Yoshitaka Kawashima
16 slides
40.7K views
心理的安全性と、Veinの紹介 Psychological safety and introduction of Vein
by
Tokoroten Nakayama
86 slides
163.6K views
More from Yoshitaka Kawashima
PDF
ブルックスのいう銀の弾丸とは何か?
by
Yoshitaka Kawashima
28 slides
4.5K views
PDF
Are Design Patterns Dead?
by
Yoshitaka Kawashima
15 slides
875 views
PDF
ソフトウェア開発における『知の高速道路』
by
Yoshitaka Kawashima
18 slides
20.9K views
PDF
本番障害に至る病
by
Yoshitaka Kawashima
13 slides
2.5K views
PDF
システムダウンのひみつ
by
Yoshitaka Kawashima
25 slides
2.3K views
PDF
Mavenの真実とウソ
by
Yoshitaka Kawashima
67 slides
14K views
PDF
アンチフラジャイルの世界
by
Yoshitaka Kawashima
41 slides
5.3K views
PDF
Atomic Architecture
by
Yoshitaka Kawashima
24 slides
17.4K views
PDF
それはYAGNIか? それとも思考停止か?
by
Yoshitaka Kawashima
41 slides
32.5K views
PDF
ウォーターフォールとアジャイルのフェアな比較
by
Yoshitaka Kawashima
24 slides
9.8K views
PDF
How to find tech books
by
Yoshitaka Kawashima
16 slides
1.5K views
PDF
Antifragile Java - Java Day Tokyo 2017 D1-E1
by
Yoshitaka Kawashima
64 slides
6.1K views
PDF
たとえ日本人同士でも必要な異文化理解力
by
Yoshitaka Kawashima
19 slides
19.1K views
PDF
SIerにとっての越境 @ DevLOVE 199
by
Yoshitaka Kawashima
16 slides
3.3K views
PDF
なぜデータモデリングが重要なのか?
by
Yoshitaka Kawashima
15 slides
6.5K views
PDF
Antifragile Clojure
by
Yoshitaka Kawashima
17 slides
3.8K views
PDF
Boilerplate vs Magic
by
Yoshitaka Kawashima
13 slides
2K views
PDF
既婚プログラマの時間捻出術
by
Yoshitaka Kawashima
12 slides
18.2K views
PDF
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
by
Yoshitaka Kawashima
59 slides
9.8K views
PDF
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
by
Yoshitaka Kawashima
53 slides
3.3K views
ブルックスのいう銀の弾丸とは何か?
by
Yoshitaka Kawashima
28 slides
4.5K views
Are Design Patterns Dead?
by
Yoshitaka Kawashima
15 slides
875 views
ソフトウェア開発における『知の高速道路』
by
Yoshitaka Kawashima
18 slides
20.9K views
本番障害に至る病
by
Yoshitaka Kawashima
13 slides
2.5K views
システムダウンのひみつ
by
Yoshitaka Kawashima
25 slides
2.3K views
Mavenの真実とウソ
by
Yoshitaka Kawashima
67 slides
14K views
アンチフラジャイルの世界
by
Yoshitaka Kawashima
41 slides
5.3K views
Atomic Architecture
by
Yoshitaka Kawashima
24 slides
17.4K views
それはYAGNIか? それとも思考停止か?
by
Yoshitaka Kawashima
41 slides
32.5K views
ウォーターフォールとアジャイルのフェアな比較
by
Yoshitaka Kawashima
24 slides
9.8K views
How to find tech books
by
Yoshitaka Kawashima
16 slides
1.5K views
Antifragile Java - Java Day Tokyo 2017 D1-E1
by
Yoshitaka Kawashima
64 slides
6.1K views
たとえ日本人同士でも必要な異文化理解力
by
Yoshitaka Kawashima
19 slides
19.1K views
SIerにとっての越境 @ DevLOVE 199
by
Yoshitaka Kawashima
16 slides
3.3K views
なぜデータモデリングが重要なのか?
by
Yoshitaka Kawashima
15 slides
6.5K views
Antifragile Clojure
by
Yoshitaka Kawashima
17 slides
3.8K views
Boilerplate vs Magic
by
Yoshitaka Kawashima
13 slides
2K views
既婚プログラマの時間捻出術
by
Yoshitaka Kawashima
12 slides
18.2K views
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
by
Yoshitaka Kawashima
59 slides
9.8K views
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
by
Yoshitaka Kawashima
53 slides
3.3K views
Grokking Simplicity探訪
1.
Grokking Simplicity探訪 kawasima アーキ部
2.
Grokking Simplicity 2021年5月 発売 日本語未訳 他Grokkingシリーズは「なっとく!」シリーズと して続々翻訳されているが…
3.
Data, Action, Calculation 計算 アクション データ 実行結果が、何回実行するか、いつ実行するかに依存する 入力から出力を計算する イベントに関する事実 例)
メールを送る、データベースから読み込む 例) 最大値を探す、メールアドレスの妥当性を検証する 例) 最大値を探す、メールアドレスの妥当性を検証する プログラムを以下の3つに分類してみよう
4.
Calcuration 『Grokking Simplicity』の定義 入力から出力を計算する関数 ● 外の世界に影響を与えず、外の世界の影響も受けない ●
例 ○ +, *, -, / ○ Math.abs() ○ 文字列結合 ○ Eメールアドレスのバリデーション
5.
Action 『Grokking Simplicity』の定義 外の世界に影響を与える、または外の世界の影響を受ける関数 したがって純関数でないもの、または副作用のあるもの ● 例: ○
Eメールを送信する ○ データベースから読み込む ○ ファイルに書き込む ● Actionは本番環境で安全に実行するのが難しい ● Actionはデバッグするのが難しい
6.
Calculation 割合を増やしたい Calculations Calculations Actions
Actions こっちの方が安全でデバッグしやすい
7.
https://speakerdeck.com/masuda220/big-ball-of-mud このあたりの話は、増田さんのスライドでも書かれているので、 ぜひご覧になってください。
8.
Action 波及ルール Eric Normand『Stratified
design and functional architecture』より ←これがActionだと…
9.
Action 波及ルール Eric Normand『Stratified
design and functional architecture』より ←呼んでいる関数全体が Actionになり…
10.
Action 波及ルール Eric Normand『Stratified
design and functional architecture』より ←結果全てのコードがAction になる
11.
Action 波及ルールへ 抵抗 できる限りコールツリーのリーフにCalculationを持ってくる必要がある ←Actionを呼んでいるので これもActionになってしまう!
12.
Layered Architectureで どうか? Web層 Application層 Domain層 Data
Access層 リーフがData AccessかDomainかになる Data AccessはActionなので、 CalculationなDomainを作らない限り、 全てがActionになってしまう。 Traditional Layered Architecture
13.
そこまでして純粋性にこだわる必要 ある か? https://www.slideshare.net/slideshow/ss-255489610/255489610 ないかもしれない。何を取りに行きたいのか?
要はバラ(略
14.
終 と、これだけだとよくある話なのですが、 Calculation抽出を追う過程でより深い示唆がえられる というのが今日の話です。
15.
Grokking Simplicity Deep Dive
16.
Calculationを増すのを追い求めるのは、関数の呼び出し階層を作る行為でもある
17.
階層? Web層 Application層 Domain層 Data Access層 すでにレイヤ分けはしているのだが…? 何のためにレイヤを分けているのか?
18.
そもそもレイヤードアーキテクチャと ? ● ソースコードの変更がシステム全体に波及しないようにする。変更は一つのコンポーネント に閉じ込め、他の部分に影響を与えないようにする。 ●
インターフェースは安定しているべきである。 ● システムの一部は交換可能であるべきである。コンポーネントは、システムの他の部分に影 響を与えることなく、代替実装に置き換えられるべきである。 ● 似た責務を持つ要素をグループ化して理解しやすさと保守性を高めるべきである。各コン ポーネントは一貫性を持つべきであり、一つのコンポーネントが異なる問題を実装すると、 その整合性が失われる可能性がある。グループ化と一貫性は時に対立する。 『Pattern-Oriented Software Architecture』
19.
POSA Layered Architecture Layer
N Layer N-1 Layer N-1 抽象度が高い 抽象度が低い 『Pattern-Oriented Software Architecture』 同じ抽象度のコンポーネントをグルーピングする 各レイヤのコンポーネントは、自分と同じか1つ 下のレイヤの機能のみに依存する。 個々のレイヤー内ではすべてのコンポーネントが 同じ抽象レベルで動作することが不可欠。
20.
Traditional Layered Architecture
レイヤ分割基準 ? 抽象度によって分かれている? そもそも抽象とは何か? Web層 Application層 Domain層 Data Access層
21.
A, B, Cの共通項 A
B C 全体 部分 部分 部分 これも含まれることがある 目的 手段 手段 手段 振る舞いにフォーカスすると… 抽象 抽象 抽象
22.
目的-手段 関係 フラクタル 目的A 手段
手段 手段 手段 目的Aの手段 かつ目的B 目的Bの手段 目的Bの手段 手段 手段 目的Bの手段
23.
Action, Calculation コールツリーも 目的-手段
フラクタルで構成されれ … 目的 手段 目的 手段 目的 手段 抽象のレイヤーができる
24.
Stratified Design https://medium.com/clean-code-development/stratified-design-over-layered-design-125727c7e15 さらに、コールツリーを詳細の実装を持 つのはリーフのみにする。ブランチノー ドは、下位層をコールするのみ。 詳細の実装は他のものに依存しないの で、テストがしやすい(テストダブルの必 要がない)。 他のものに依存しないので、だいたい Calculationになる。 これは別に新しい考え方とい うわけでもなく…
25.
Composed Method メソッドを他のメソッドの呼び出しから構成し、それぞれがほぼ同じ抽象度の レベルにあるようにする。 ※ ただしあまり具体的なことは『実装パターン』には書いてはいない ケントベックならそうする
26.
Stratified Designによってもたらされるも Layered Architectureの本来の目的の1つ ●
似た責務を持つ要素をグループ化して理解しやすさと保守性を高めるべき
27.
例題 ナントカPayを作ります。 ● ウォレットにコインをチャージして、利用したり送金したりできます。 ● 銀行口座を登録しておくと、そこからウォレットにチャージできます。これ は必須ではありません。 ●
銀行口座を登録する場合は、本人確認が必要です。本人確認は免許証または マイナンバーで行います(外部API利用) ● 口座番号が実在するか確認する必要があります。(外部API利用) ● メールアドレスがブラックリストに載っていれば登録できません。(ブラック リストはテキストファイルに1行ずつNGメールアドレスが記載されている) ● メールアドレスは全ユーザで一意でなくてはなりません。 ● これまで一度も登録したことのないユーザであれば、ウォレットに500コイン を付与します。 https://bitbucket.org/kawasima/design-kata/src/main/src/example/06_pay/
28.
StratifiedでないDesgin ユーザを登録する 運転免許証を使っ た本人確認 銀行口座 実在 確認 マイナンバーを 使った本人確認 csvから1行読 み出す Eメールが他 ユーザと一致して いないか ユーザをDBに 保存する 初回登録かどうか を判定する ウォレットをDB に保存する どれがドメインロジック ? https://bitbucket.org/kawasima/design-kata/src/main/src/example/06_pay/register.ts
29.
StratifiedなDesign ユーザを登録する 運転免許証を 使った本人確認 銀行口座 実在 確認 マイナンバーを 使った本人確認 csvから1行読 み出す ユーザをDBに保 存する 初回登録 リワード 本人確認する 銀行口座 妥当 性を確認する メールアドレス
妥 当性チェック Eメールが他 ユーザと一致し ていないか Eメールによる ユーザ検索 ブラックリストにメ アドが載っていな い 初回登録か判定 初回登録検索 初回登録コイン 付与 ←大まかな業務ルール ↓詳細の業務ルール https://bitbucket.org/kawasima/design-kata/src/main/src/example/06_pay/register.ts
30.
保守性↑ ユーザを登録する 運転免許証を 使った本人確認 マイナンバーを 使った本人確認 本人確認する ユーザを登録する 運転免許証を 使った本人確認 マイナンバーを 使った本人確認 本人確認する 年金手帳を使っ た本人確認 ← 変更なし 本人確認の手段が増えても、 ユーザを登録する部分は変更しなくても良い ↑追加
31.
理解しやすさ↑ Stratified Non-Stratified
32.
汎化 抽象化することを汎化(Generalization)するということもあるようだが… 抽象化すると汎用的になる、コードの再利用性を高めるってこと?
33.
「汎用」 2つ 意味がある 広範に使われる 広範を扱える 異なる概念 なので前ページのGPT-4oの回答には異を唱えたい
34.
「広範を扱える」 上位は下位の目的になってお り、下位は上位の手段になっ ている。 目的 手段 抽象 具象 汎化 特化 柔軟性や理解容易性に関わってくる いわゆる抽象化の概念
35.
「広範に使われる」 ある手段が複数の目的で使われる。 再利用性に関わってくる
36.
「汎用的なものを作ろう!」と言った場合、 どちらを指しているかを認識することが重要
37.
「広範を扱え」で「広範に使われる」構造 「広範を扱える」と「広範に使われる」が両立するセミラティス構造 それらは両立可能で、両立するとこのような構造になるはず。 ←リーフがCalculationになっている とモアベター ←同じ抽象レベルのコンポーネント
38.
Bad Scenario 1. レイヤごとにコンポーネントを分割し、その責務を考える。 2.
柔軟性を持たせるために汎化できるものを考える (部分的抽象化) 3. 汎化した処理は、よりバリエーションの多いデータを受け付ける。 そのため処理に重複するところが出てくる。 4. 重複するところを共通関数(下請けメソッド)として切り出す。(部分的再利用性) レイヤごとに責務を割り当てる設計からスタート する術しか持っていない場合… よく見かけるヤツ!
39.
Stratified Design 階層
特徴 目的 手段 抽象 具象 特定用途 汎用
40.
Clean Architecture “ソースコードの依存関係は常に内側を指す。内側に進むに つれて、抽象度と方針のレベルが高まる。最も外側の円は 低レベルの具体的な詳細で構成されている。内側に進むに つれて、ソフトウェアはより抽象的になり、高レベルの方 針を包含する。最も内側の円が最も一般的で高いレベルで ある。”
41.
円 中心ほど抽象度が高い? 円 中心ほど抽象度が高いと言って いるが、これが決定的な誤り。 ユースケースが目的で、ビジネス ルール
そ 手段な で、ユース ケース 方がハイレベル、抽象度が 高い、と考える が普通で ?
42.
Controller Repository UseCase Presenter Business Rules Repository Business Rules Repository Impl Presenter Impl もしかしたらDIPによる依存 逆転が ある で、最下層が一番抽象的と 言っている
かもしれない … …が、Business Rules UseCase 手 段であり、ここに関して POSA レ イヤリング 定義にピタッと当て ま る で、UseCase 方が抽象度が高 いだろう…
43.
そもそも実装分離 ため インタフェース
抽象と言える だろうか? Repository RepositoryImpl
44.
抽象化と …? “抽象化とは物事を曖昧にすることではなく、 むしろ 人が絶対的な正確さを発揮できる新しい意味の段階を つくりだすこと” Edsger
W. Dijkstra
45.
実装を切り離す目的 インタフェースを抽象化と呼 ない方が良いかも Repository RepositoryImpl 目的と手段の関係にはなっていないし、 新しい意味の段階を作ってはいない Client 使う側はどちらにインタフェースと実装とどちらにアクセスしても、 その意味は変わらない。
46.
クリーンアーキテクチャ DIP 新しい意味
段階を生み出しているわけで ない で取り除いてみると… Controller Repository UseCase Presenter Business Rules 伝統的なレイヤードアーキテクチャと なんら変わらない。 Repository Business Rules ← 大事なのはこのレイヤのStratified Design
47.
業務ルール 抽象化 同じ振る舞いをグルーピングするだけで なく、大まかに言えば同じ振る舞いと見 なせる新しい意味の段階を意図的に作る ユーザを登録する 運転免許証を 使った本人確認 銀行口座 実在 確認 マイナンバーを 使った本人確認 csvから1行読 み出す ユーザをDBに保 存する 初回登録 リワード 本人確認する 銀行口座
妥当 性を確認する メールアドレス 妥 当性チェック Eメールが他 ユーザと一致し ていないか Eメールによる ユーザ検索 ブラックリストにメ アドが載っていな い 初回登録か判定 初回登録検索 初回登録コイン 付与 ←大まかな業務ルール ↓詳細の業務ルール
48.
業務ルール 抽象化 ● 業務ルールを抽象化しておくと、ルールの追加・変更が下位層に閉じ 柔軟性が増す。一度に脳にロードしておくべきコンポーネントが減 る、認知負荷が減るので、理解容易性が増す。 →
「広範を扱える」ようにするメリット ● 業務ルールを抽象化しておくと、下位層のルールの再利用性が増す。 → 「広範に使える」ようにするメリット ○ ルール自体をコピペするのではなく、詳細ルールを合成して、 新しいルールを作ることもできる。
49.
で Stratified Design当たり前
こと ような に、なぜメジャーじゃない か…? https://ja.wikipedia.org/wiki/凝集度 抽象概念 設計が難しく、ミスると凝集度を下げてしまうため
50.
誤って凝集度を下げることなく、Stratified なDesignをするやり方については、 7/13 の大吉祥寺.pmでお話する予定です! お楽しみに!