More Related Content
Similar to 第ⅴ部:clean architecture アーキテクチャ Part4 (20)
第ⅴ部:clean architecture アーキテクチャ Part4
- 2. 前回まとめ
- 方針とレベル
- ソフトウェアシステムは方針を示したものである
- 方針は更に小さな方針に分割される
- どのような場合でも、下位レベルから上位レベルへ依存するように設計する
- ビジネスルール
- ビジネスルールとは、手動でもビジネスマネーを生み出したり節約したりするルールや手続きのこと
- 最重要ビジネスルール /最重要ビジネスデータ = エンティティ
- ユースケース = アプリケーション固有のビジネスルール
- 叫ぶアーキテクチャ
- 優れたアーキテクチャはドメイン、ユースケースを中心にしている
- FWは強力で便利だがアーキテクチャを乗っ取られてはいけない
- テストはフレームワークを使うことなく全てのユースケースのユニットテストを実行できる
- 5. - フレームワーク非依存
- アーキテクチャは FWの制約で縛るのではなく、 FWをツールとして利用する
- テスト可能
- ビジネスルールは、 UI/DBなど外部要素がなくてもテストできる
- UI非依存
- UIはシステムの他の部分を変更することなく、簡単に変更できる
- データベース非依存
- ビジネスルールは DBに束縛されないので、 MySQL/PostgreSQL 等いずれにも置き換えれる
- 外部エージェント非依存
- ビジネスルールは外界のインターフェイスについては何も知らない
第1章:クリーンアーキテクチャ
- 7. 第1章:クリーンアーキテクチャ
- 依存性のルール
- 最も重要なルールは「依存性のルール」
- 内側の上位レベルだけに向かっていなければいけない
- エンティティ
- 最重要ビジネスルールをカプセル化したもの
- メソッドを持ったオブジェクトでも、データ構造と関数でも
OK
- 企業にある様々なアプリケーションから使用できるなら、
エンティティは何でも構わない
- ユースケース
- アプリケーション固有のビジネスルールが含まれる
- エンティティに入出力するデータの流れを調節する
- ユースケースの目標を達成できるように、
エンティティに最重要ビジネスルールを
使用するように指示を出す
- インターフェイスアダプター
- 外部とのデータを相互変換するアダプター
- DBについては何も知らない
- DBがSQLであればこのレイヤーに限定する
- フレームワークとドライバ
- FWやツールで構成されている
- 通常このレイヤーにはコードをあまり書かない
- 書くとしても次のレイヤーとやりとりするグルーコード
- 11. - Humble Objectとはデザインパターンの1つである
- PresenterもHumble Objectパターンの一種
- テストしにくい振る舞いと、テストしやすい振る舞いを分離する
- 内容は非常にシンプル
- 一つのモジュールは「 Humble(控えめ)」
- もう一つは残りのテストしやすい振る舞い
- 通常UIのテストは難しい
- しかし、Humble ObjectパターンでPresenterとViewに分けてシンプルに
第二章:プレゼンターとHumble Object
- 12. 第二章:プレゼンターとビュー
- ViewはHumble Object(控えめ)
- イベントと渡ってきたデータの表示のみ
- つまりデータの処理はない
- Presenterはテスト可能なオブジェクト
- appからデータを受け取り、 Presenter用で適切にフォーマットして ViewModelに配置
- PresenterにDataオブジェクトを渡して、画面に日付を表示させる
- PresenterにCurrencyオブジェクトを渡して、適切な桁数と通過記号をつけてフォーマットする
- ボタンをグレーアウトする必要があれば、 PresenterがViewModelに適切なフラグを設定する
- 画面に表示するもの、 appが制御するものは全て、 ViewModelに含まれる文字列・真偽地・列挙型と
して表現する
- 16. 第Ⅴ部:Part4 まとめ
- クリーンアーキテクチャ
- 今まで様々なアーキテクチャが存在した
- 依存性は、より上位レベルの方針にのみ向けよ (一方方向)
- 制御の流れと依存方向は分離し制御せよ
- プレゼンターとHumble Object
- Humble Objectとはデザインパターンの 1つである
- テストしにくい振る舞いと、テストしやすい振る舞いを分離する
- 境界の近くに存在する