Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
CleanArchitecture_31章_32章.pdf
Search
ssknnm
December 16, 2020
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CleanArchitecture_31章_32章.pdf
ssknnm
December 16, 2020
More Decks by ssknnm
See All by ssknnm
CleanArchitecture23章&24章
ssknnm
0
290
CleanArchitecture17章&18章
ssknnm
0
240
CleanArchitecture第5章&第6章
ssknnm
0
120
Featured
See All Featured
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
850
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
410
Design in an AI World
tapps
1
330
A designer walks into a library…
pauljervisheath
211
25k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
300
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
340
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
500
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Deep Space Network (abreviated)
tonyrice
0
320
Transcript
CleanArchitecture 31章&32章 YOURMYSTAR 佐々木
31章 ウェブは詳細 導入 ウェブはこの業界で60年大からずっと続く「振り子」の延長線上にある。振り子の状態は、全ての計算 パワーを中央サーバーにまとめるか、全ての計算パワーを端末に分散させるかを行ったり来たりして いる。 全てのパワーをサーバー側にまとめていてブラウザ側では 何もしていない。 しかしそのうち、ブラウザで実行する 巨大なアプリケーションを書くまでになった。
止まらない振り子 ウェブの歴史:計算機室とパンチカード →緑色の画面→ミニコン、、、、 計算能力がどこに必要になるかを見つけ出さず、 集中と分散の間を行ったり来たりしている アーキテクトとしては長期的な視点で考える。振り子の運動は短期的な問題。 伝えたいこと→ビジネスルールをGUIから切り離す
結論 ウェブ=GUI=詳細、ウェブは入出力デバイスの一種 である。 詳細をビジネスロジックの中心から切り離しておきたい。 UIとアプリケーションの間には教会があり、 抽象化できる。 完成した入力データや結果となる出力データを何らかのデータ構造に格納すれば、ユースケースを実 行するプロセスの入力値及び出力値として利用できる。
まとめ 画面からビジネスロジックを切り離して、画面は使いやすさなどを追求したほうがいいんだと思う。
フレームワークは詳細 フレームワークはアーキテクチャではない。 なかにはそうであろうとしているものもあるが、それでもやはりアーキテクチャではない。
フレームワークの作者たち フレームワークの作者はあなたが何に困っているのか知らない。フレームワークの作者が知っている のは作者自身、同僚、友人が抱える問題のみであり、 彼らの問題を解決するためにフレームワークを 作っている。 あなたが抱える問題と作者たちの抱える問題が重なることはある。 重なる部分がそれなりにあるのならフレームワークは便利なものだ!
一方的な結婚 フレームワークの作者と我々の関係は極めて不釣り合いである。 作者は我々に対して何の義務も負う必要がない。 すべてのリスクと負担を背負うのは我々である。(一方的な結婚) しかしフレームワークの作者は、 FWと我々の作るアプリ、FWと我々自身の強い結合を望んでいる。
リスク • 依存性のルールに違反する傾向がある。円の最も内側に FWを結合させたがっている。イチゴ 入り込んでしまえば外すことができない。 • プロダクトが成長するにつれて FWの提供する機能では手に負えなくなってくる。 • FWが進化する方向があなたの望む道から外れてしまうかもしれない。なんの利益にもならない
バージョンアップ、使っていた機能の廃止、仕様変更。 • 優れたFWに出会った時に乗り換えたくなるかも・・・・
解決策 結論:FWとは一定の距離を保つこと(アーキテクチャの縁の外側にあるものとして扱う) FWはプラグインとして使う。コアのコードにはまぜず、 FWはコンポーネントにまとめて、コアのコードに プラグインする。 Spring ビジネスオブジェクト全体に@ Autowired→NG Main(最下位コンポーネント)に@ Autowired→OK
今あなたたちを夫婦として宣言する どう考えてもFWと結合しなければならない時はある。 C++ →STL,Java→標準ライブラリ そのアプリケーションはFWに縛られることになるのファと認識しておく必要がある。
まとめ FWに出会ったらアーキテクチャの境界から可能な限り遠ざけるようにしよう。
感想 31章 確かにGUIとビジネスルールは切り離して考えるべきだとは思う。ビジネスルールと実際に使うユー ザーは関係ないのだから。 32章 FWに依存しすぎるなという意味かなと思った。しかし使いやすい FWだと、それありきで考える方向に どうしてもなるため(私は)アーキテクチャと分離しろという言葉は耳が痛かった。