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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
90
CleanArchitecture23章&24章
ssknnm
0
280
CleanArchitecture第5章&第6章
ssknnm
0
100
Other Decks in Business
See All in Business
【Progmat】Monthly-ST-Market-Report-2026-Jan.
progmat
0
320
MEEM_Company_Deck202512.pdf
info_meem
0
3.9k
セーフィー株式会社(Safie Inc.) 会社紹介資料
safie_recruit
7
410k
akippa株式会社|Company Deck
akippa
0
710
RECRUIT DECK 小平株式会社 会社説明資料
kobira_official
PRO
0
2.7k
会社説明資料
xinghr
0
220
株式会社CINC 会社案内/Company introduction
cinchr
6
74k
enechain company deck
enechain
PRO
10
160k
Nulab Fun Deck 〜チームワークが、世界をもっと『おもしろく』する〜
nulabinc
PRO
1
2.7k
イオンモール新利府・デジタル証券 ~仙台近郊~徹底解説セミナー
c0rp_mdm
PRO
0
1.4k
【SBO勉強会】感謝されるAI活用&ツール導入法
sakiyogoro
1
230
(15枚)NotebookLMのスライド生成機能で「絶対達成」「予材管理」「大量行動」の重要性を解説してもらう
nyattx
PRO
0
180
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
Odyssey Design
rkendrick25
PRO
1
500
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
170
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
94
Crafting Experiences
bethany
1
50
Optimising Largest Contentful Paint
csswizardry
37
3.6k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
98
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
350
Tell your own story through comics
letsgokoyo
1
810
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
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….
サービス 一般的にコマンドラインや同等のシステムコールで開始されるプロセスのこと。 ローカルプロセスと同じルールが適用される。下位レベルのサービスは上位レベルの サービスにプラグインされるべきである。
まとめ 下位レベルのプロセスを上位レベルのプロセスのプラグインにすることが目的である。 システムの境界を意識して開発をしたことがないので正直ピンとこなかった