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
ssknnm
October 28, 2020
Business
0
210
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
80
CleanArchitecture23章&24章
ssknnm
0
260
CleanArchitecture第5章&第6章
ssknnm
0
94
Other Decks in Business
See All in Business
How to use ‘Economies of Empowerment’ to get the benefits of both speed and scale - AgileAus 2025
matthewskelton
PRO
0
170
組織を AI との協働に最適化する ~ AI と人が補完しあって成長し続ける組織の作り方 ~
yoshizaki
0
500
ChillStack会社紹介資料
chillstack
0
380
企業向けチーム間交渉ゲーム「トレード&グロース」
chibanba1982
PRO
1
140
アウトカムファーストな専門技術組織の構築と運用のための取り組み / Efforts to Build and Operate an Outcome-First Technical Expertise Organization
lycorptech_jp
PRO
1
340
コーポレートストーリー(新規投資家様向け会社説明資料)
gatechnologies
1
13k
Coporation
couxucorp
0
240
AIUX is Agentic UX
kan
0
280
株式会社D2C ID 会社案内 / recruit
d2cid
2
4.3k
Platform Engineering done well: innovation, efficiency, market advantage - Matthew Skelton - ProductTank Auckland
matthewskelton
PRO
0
310
Recruitment Deck_Growth Strategy_202506
sixtypercent
0
300
三井物産グループのデジタル証券〜銀座〜徹底解説セミナースライド(20250630)
c0rp_mdm
PRO
0
1.6k
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
140
7k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Thoughts on Productivity
jonyablonski
69
4.7k
Being A Developer After 40
akosma
90
590k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Why Our Code Smells
bkeepers
PRO
337
57k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
We Have a Design System, Now What?
morganepeng
53
7.7k
Facilitating Awesome Meetings
lara
54
6.4k
A Tale of Four Properties
chriscoyier
160
23k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
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….
サービス 一般的にコマンドラインや同等のシステムコールで開始されるプロセスのこと。 ローカルプロセスと同じルールが適用される。下位レベルのサービスは上位レベルの サービスにプラグインされるべきである。
まとめ 下位レベルのプロセスを上位レベルのプロセスのプラグインにすることが目的である。 システムの境界を意識して開発をしたことがないので正直ピンとこなかった