クリーンアーキテクチャ - 1m-llc/Flutter-KtoK GitHub Wiki

作成中

図の説明

  1. 依存性は内側だけに向かっていかなければいけない

    注釈 役割 説明 ex.
    Entities Enterprise Business Rules 企業全体のビジネスルールをカプセル化 企業全体の最重要ビジネスルールをカプセル化したものです。メソッドを持ったオブジェクトでも、データ構造や関数でも構いません。
    ex.
    商品情報:特価の商品か判断する
    ユーザ情報:○企業に属するか判断
    Use Cases Application Business Rules アプリケーション固有のビジネスルールをカプセル化 「アプリケーション固有」のビジネスルールが含まれています。エンティティとのデータの流れを組み立てます。
    ex.
    キーワードから商品を検索するユースケース
    ユーザ情報を登録するユースケース
    Controllers
    Presenters
    Gateways
    Interface Adapters 内外へのデータ変換 外部から、ユースケースとエンティティーで使われる内部形式にデータを変換、または内部から外部の機能にもっとも便利な形式に、データを変換する Adapter です。
    ex.
    外→内:MVCのController
    内→外:MVCのView
    Web
    UI
    External Interfaces
    DB
    Devices
    Frameworks & Drivers DBやフレームワークの詳細 クライアントからの入力を受け付けたり、クライアントへの出力を行ったり、データベースのような外部機能に接続したりと、外界とアプリケーションの内側をつなぐ役割を担います。特定のフレームワークやドライバー等に依存するので、このレイヤーに関する知識は Interface Adapters より内側に入らないよう注意します。
    ex.
    DBへの接続設定
    Webフレームワークの設定

Clean Architecture とはあくまでもアプリケーション固有のデータ構造やビジネスルールが、外側の特定のフレームワークやドライバー等に依存しないために、「アプリケーションの内側に外側を依存させようという概念」のことであり、具体的なレイヤー(ディレクトリ階層)を決めるものではありません。

  1. 内側の変化に応じて外側を呼び出したい場合

  2. Clean Architecture の良いところ

    • フレームワークからの独立
    • データベースからの独立
    • UIからの独立
    • テスト可能
  3. Clean Architecture の悪いところ

    • ソースコードのファイルが増える

DIP

アプリケーションの内側(のレイヤー)に外側(のレイヤー)を依存させるため、 「DIP(依存関係逆転の原則)」に従って、実装していきます。 DIP とは Clean Architecture の実装の観点でわかりやすく言えば、あるレイヤーが自分より内側のレイヤーもしくは同じレイヤーの Interface を実装したり使用したりしていいが、その逆、つまり自分より外側のレイヤーの Interface を実装したり使用してはいけないということです。

SOLID原則

ソフトウェアの拡張性、保守性等を担保し、メンテナンスしにくいプログラムになることを防ぐための原則です。

頭文字 略語 原則 説明
S SRP 単一責任の原則 クラスに任せる仕事は1つにするべきだ。
O OCP 開放閉鎖の原則 ソフトウェアのエンティティ(クラス、モジュール、関数)は拡張に対して開き、修正に対して閉じていなければならない。
L LSP リスコフの置換原則 サブクラスは、そのスーパークラスで代用可能でなければならない
I ISP インタフェース分離の原則 顧客に特化した細粒度のインタフェースを作れ、顧客は自分たちが使わないインターフェースに依存することを強いられるべきではない
D DIP 依存性逆転の原則 依存性は、具体化ではなく抽象化でなければならない。
A. 高水準モジュールは低水準モジュールに依存してはならない。両者は、抽象化に依存するべきである。
B. 抽象化は、詳細に依存してはならない。詳細は、抽象化に依存するべきである。

SlideShare

世界一わかりやすいClean Architecture

https://www.slideshare.net/AtsushiNakamura4/clean-architecture-release

大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~

https://www.slideshare.net/monotaro-itd-pr/ss-150331504

引用

API サーバーを Clean Architecture で構築する
https://tech-blog.optim.co.jp/entry/2019/01/29/173000

⚠️ **GitHub.com Fallback** ⚠️