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
57
CleanArchitecture_31章_32章.pdf
ssknnm
December 16, 2020
Tweet
Share
More Decks by ssknnm
See All by ssknnm
CleanArchitecture23章&24章
ssknnm
0
180
CleanArchitecture17章&18章
ssknnm
0
150
CleanArchitecture第5章&第6章
ssknnm
0
87
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
514
39k
The MySQL Ecosystem @ GitHub 2015
samlambert
243
12k
Building an army of robots
kneath
300
41k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Clear Off the Table
cherdarchuk
84
310k
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
Code Review Best Practice
trishagee
55
15k
The Brand Is Dead. Long Live the Brand.
mthomps
49
28k
The Power of CSS Pseudo Elements
geoffreycrofte
60
5k
The World Runs on Bad Software
bkeepers
PRO
61
6.7k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
104
6.6k
How to name files
jennybc
65
93k
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だと、それありきで考える方向に どうしてもなるため(私は)アーキテクチャと分離しろという言葉は耳が痛かった。