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
CleanArchitecture_31章_32章.pdf
Search
ssknnm
December 16, 2020
0
84
CleanArchitecture_31章_32章.pdf
ssknnm
December 16, 2020
Tweet
Share
More Decks by ssknnm
See All by ssknnm
CleanArchitecture23章&24章
ssknnm
0
270
CleanArchitecture17章&18章
ssknnm
0
210
CleanArchitecture第5章&第6章
ssknnm
0
98
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
The World Runs on Bad Software
bkeepers
PRO
72
11k
Unsuck your backbone
ammeep
671
58k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
The Cost Of JavaScript in 2023
addyosmani
55
9k
Done Done
chrislema
185
16k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
920
Agile that works and the tools we love
rasmusluckow
331
21k
Designing for humans not robots
tammielis
254
26k
The Straight Up "How To Draw Better" Workshop
denniskardys
238
140k
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だと、それありきで考える方向に どうしてもなるため(私は)アーキテクチャと分離しろという言葉は耳が痛かった。