Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CleanArchitecture17章&18章
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ssknnm
October 28, 2020
Business
0
220
CleanArchitecture17章&18章
CleanArchitectureの17章と18章です
ssknnm
October 28, 2020
Tweet
Share
More Decks by ssknnm
See All by ssknnm
CleanArchitecture_31章_32章.pdf
ssknnm
0
91
CleanArchitecture23章&24章
ssknnm
0
280
CleanArchitecture第5章&第6章
ssknnm
0
100
Other Decks in Business
See All in Business
【エンジニア採用】IDOM Digital Drive会社説明資料
idomdigitaldrive
0
11k
株式会社ネオキャリア_新卒採用ピッチ資料_20260201
neo_recruit
0
2.6k
Sol Naciente_Try Out_質問項目
solnaciente
0
1.2k
ラクスル会社紹介資料 / RAKSUL Introduction
raksulrecruiting
16
200k
セーフィー株式会社(Safie Inc.) 会社紹介資料
safie_recruit
7
420k
Q4 2025 Earnings release
cmbtech
PRO
0
750
malna-recruiting-pitch
malna
0
16k
Nstock 採用資料 / We are hiring
nstock
29
360k
インキュデータ会社紹介資料
okitsu
3
51k
Как готовить большие стратсессии, которые работают, а не имитируют
alexanderbyndyu
0
130
株式会社カウシェ Company Deck
kauche
2
220k
㈱サンエー 会社 採用資料
uemura2024
0
1.7k
Featured
See All Featured
Everyday Curiosity
cassininazir
0
160
Are puppies a ranking factor?
jonoalderson
1
3.1k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
80
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.1k
Being A Developer After 40
akosma
91
590k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.7k
The Invisible Side of Design
smashingmag
302
51k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
290
Exploring anti-patterns in Rails
aemeredith
2
290
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
140
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
240
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
970
Transcript
CleanArchitecture 17章&18章 Sasaki
17章 バウンダリー:境界線を引く ソフトウェアの要素を分離し、お互いのことがわからないように制限する →依存関係がない方がよいって意味だと解釈した メリット・目的:システム構築・維持の人件費を最小限に抑えることができる 人々のパワーを奪うもの:結合・・・それも早すぎる決定との結合
失敗例 p社 オブジェクトのインスタンスを分ける、サーバの台数の意思決定早すぎた。 →開発の労力がすごくかかった w社 SOAを視野に入れたツールを導入するのが早すぎた →伝播の遅延・キューの待ち時間ができた・いちいちサービスを立ち上げないといけない
成功例 FitNesse データはスタブ→必要になったら本物のDBに接続 ビジネスツールとデータベースの間に境界線を引いたことでDBの洗濯を1年以上遅らせ ることができた。DBを使っていない間厄介な問題(スキーマ、クエリ、パスワードなど)に 18ヶ月も直面することがなく開発を進めることができた。
成功から学ぶ 「重要なもの」と「重要でないもの」を分ける 重要…ビジネルスール 重要ではない…GUIツール(入出力はビジネスルールに直接関係ない)、DB(データの もビジネスルールと直接関係ない、スタブを使えばいい)
プラグインアーキテクチャ プラグインいよってスケーラブルで保守可能なシステムアーキテクチャを確立することが できる! UI・SOAなどをプラグインとして扱うことで様々な技術に置き換え可能 →プラグイン構造を前提に着手することで変更に強いシステムになる そのためには境界線をきちっと引くことが大事である →単一責任の原則が教えてくれる
17章の結論 システムのビジネス要件と関係のないところ(db、フレームワーク、DI)の意思決定は遅く てもいい。 コアのビジネスに関係しないところはプラグインにしておく。
18章 境界線の解剖学 ソフトウェアコンポーネント間の境界を超える通信はいろいろな形のものがある。 • ソースコード • 恐怖のモノリス • デプロイコンポーネント • スレッド
• ローカルプロセス • サービス
ソースコード ソースコードのモジュールを変更すると他のソースコードのモジュールも変更や再コンパ イルをするなどして、デプロイし直す必要があるかもしれないからだ。
恐怖のモノリス .jarや.exeなどの内部的な話?だと解釈した(正直よくわかってない) 下位レベルのクラス→上位レベルのクラス 実行時の依存性とコンパイル時の依存性の両方で同じ方向を向くため
デプロイコンポーネント 動的リンクライブラリのこと
スレッド 実行のスケジュールや順序を整理する方法
ローカルプロセス 上位コンポーネントの一種 ローカルプロセスの境界を超える通信:OSのシステムコール、データのマーシャルとアン マーシャr、プロセス間のコンテキストスイッチetc….
サービス 一般的にコマンドラインや同等のシステムコールで開始されるプロセスのこと。 ローカルプロセスと同じルールが適用される。下位レベルのサービスは上位レベルの サービスにプラグインされるべきである。
まとめ 下位レベルのプロセスを上位レベルのプロセスのプラグインにすることが目的である。 システムの境界を意識して開発をしたことがないので正直ピンとこなかった