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
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
BlueWX_Introduction
amo0502
0
460
会社説明資料|幸信電気株式会社
260122
0
130
BLUEPRINTエンジニア採用_候補者向け会社説明資料
hik
0
180
about-oha
oha
0
20k
LW_brochure_business
lincwellhr
1
75k
(15枚)NotebookLMのスライド生成機能で「絶対達成」「予材管理」「大量行動」の重要性を解説してもらう
nyattx
PRO
0
180
CC採用候補者向けピッチ資料
crosscommunication
2
57k
キャンバスエッジ株式会社 会社説明資料
canvasedge
0
9.7k
jinjer recruiting pitch
jinjer_official
0
150k
【SRE Kaigi 2026】認知負荷を最小化するオブザーバビリティとSLOの導入 ―4名SREが200名のコードエンジニアを支援
higuchi_takashi
2
1.2k
全社員が使える環境を整える! n8n Enterprise導入と浸透施策の実践
enpipi
0
940
「自我を出さなかった」私がアジャイルに出会って─冷笑を捨て、自分の人生を「経験主義」で動かした話
kaedeyamazaki0820
1
170
Featured
See All Featured
The SEO identity crisis: Don't let AI make you average
varn
0
330
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
67
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Paper Plane (Part 1)
katiecoart
PRO
0
4.3k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
180
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
140
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….
サービス 一般的にコマンドラインや同等のシステムコールで開始されるプロセスのこと。 ローカルプロセスと同じルールが適用される。下位レベルのサービスは上位レベルの サービスにプラグインされるべきである。
まとめ 下位レベルのプロセスを上位レベルのプロセスのプラグインにすることが目的である。 システムの境界を意識して開発をしたことがないので正直ピンとこなかった