-
Notifications
You must be signed in to change notification settings - Fork 0
DNET_CleanArchitecture
- 戻る
以下、「DI」「最小構成の依存性反転原則」などの参照先は、いずれも 依存性反転原則の該当節である。
最小構成の依存性反転原則を多層に適用している。
コア・ロジックは外部I/Oインターフェイス(UI、DB等)を使用する際、
- インターフェイス経由で利用することで、コンパチ可能に実装する。
- DIにより、インターフェイスを継承したインスタンスが設定される。
これにより、
- コア・ロジックは
- 外部I/Oインターフェイス(UI、DB等)に
依存しないようにできる。
-
依存性反転原則の注意事項にあった
- なんでもかんでも抽象化するとコードが 複雑化し、混沌となる
- 抽象度を上げる時は、必ず必要最小限にすること
などを超えている感があるのと、
-
ホントにコンパチのシナリオはあり得るのか?
- 疑問と言えば疑問。
- ただし、コンパチ・シナリオの可能性は増えつつある。
- RDB、NoSQL、WebAPI
- エンジニアリングの配管工化
-
MVC系の例が多いが、DesktopやFrontend系では、また別途検討が必要になる。
以下のようなユースケースでハマりそう。
-
EAI/ETL系のデータフロー・オーケストレーションを実行する
プロダクト(Apache NiFiのような)ではなく、フレームワーク。 -
デファクトのフレームワークに
御呪いを書くと繋がる系(ASP.NET の Startup.cs) -
以下の段階があり、どの段階が適合するか、よく検討する必要がある。
- ラッパー
- DI + IoC
- 依存性反転原則
- クリーン・アーキテクチャ
外部I/Oインターフェイス(UI)
- MVCのController
- ユーザの入力を解釈し、UseCaseにそれを伝える。
コア・ロジック
-
MVCでServiceManagerとも呼ばれる。
-
UseCaseがインターフェイスで、Interactorが実装。
-
DIにより、Controllerから呼び出される。
-
コア・ロジックであるInteractorは、
などの外部I/Oインターフェイスを呼び出す。
外部I/Oインターフェイス(DB)
- Storeとも呼ばれ、データ・アクセスをする。
- 同様にインターフェイスと実装に分かれる。
- DIにより、Interactorから呼び出される。
外部I/Oインターフェイス(UI⇔DB)間の情報伝達を行う。
- MVCのViewModelを生成する。
- 同様にインターフェイスと実装に分かれる。
- DIにより、Interactorから呼び出される。
正直、微妙(実践が難しい)かなと。
高位の概念と実践について多数述べられている。
-
複雑なドメインの設計は、モデルベースで行うべき
-
大半のソフトウェアプロジェクトでは、
- システムを実装するための特定の技術ではなく、
- ドメインそのものとドメインのロジックに焦点を置くべき。
- ドメイン駆動設計 - Wikipedia
https://ja.wikipedia.org/wiki/%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E9%A7%86%E5%8B%95%E8%A8%AD%E8%A8%88
- 世界一わかりやすいClean Architecture - nuits.jp blog
https://www.nuits.jp/entry/easiest-clean-architecture-2019-09
- 実装クリーンアーキテクチャ
https://qiita.com/nrslib/items/a5f902c4defc83bd46b8 - フロントエンドでClean Architectureを適用してみる(+サンプルコード)
https://qiita.com/ttiger55/items/50d88e9dbf3039d7ab66
-
DDDに関して思った事(難し過ぎるとOOADの二の舞になるよ。的な話)。
https://www.osscons.jp/jok7exzd5-537/https://twitter.com/openhishopjpo/status/1237548569696985088
-
色々考え、汎用認証サイトのクリーン・アーキテクチャを放棄した件
https://www.osscons.jp/jobvap48p-537/https://twitter.com/openhishopjpo/status/1284107881344757761
正誤
- 「Controller」を指すページ内リンクのアンカ(
#bc3fe389)が、 実際の「Controller」の見出しのアンカ(#m1c9b02b)と一致しておらず 元 Wiki 上でリンク切れになっていたため、正しい見出しへのリンクとした。
移行メモ
- PukiWiki のページ内アンカ(
#xxxxxxxx)は GitHub Wiki では再現できないため、 同一ページ内のアンカは見出しから生成されるアンカに張り替えた。- 「依存性反転原則」ページのアンカを指すリンク(「DI」「DI + IoC」 「最小構成の依存性反転原則」)は多数あるが、GitHub Wiki では アンカを再現できないため、冒頭にまとめて参照を置き本文中はプレーン・テキストとした。
- 同名の見出し(「概要」「参考」)が衝突するため、括弧で文脈を補って一意にした。
Tags: 移行, クリーン・アーキテクチャ, Clean Architecture, 依存性反転原則, DI, DDD, UseCase, Interactor, Repository, Presenter
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。