#記事 / 完了 / 公開
#アーキテクチャ
#三層フラクタルアーキテクチャ
アーキテクチャを学ぶ際には、伝統的な三層、四層、DDD、六角形、MVC、MVP、MVVM など、さまざまなレイヤーアーキテクチャについて学ぶことがあります。さらに、新しいレイヤーメソッドが絶えず登場しています。
本当にこれだけのレイヤーメソッドを継続的に学ぶ必要があるのでしょうか?万能のレイヤーメソッドを学ぶことはできるのでしょうか?
アーキテクチャの方法論 - 三層フラクタルアーキテクチャは、適用可能なレイヤーメソッドを生成するための方法論を試みます。
なぜレイヤー分割が必要なのですか?#
レイヤー分割の本質は焦点の絞り込みです。伝統的な三層はビジネスロジックに焦点を当て、MVC はインタラクションフロー制御に焦点を当て、ORM はデータマッピングに焦点を当て、DDD はドメインサービスに焦点を当てます。
どのようにレイヤー分割を行いますか?#
まず、ソフトウェアシステムの中核はビジネスロジックです。ビジネスロジックに焦点を当てるためには、最初のレイヤーであるビジネスロジックレイヤーが必要です。
ビジネスロジックは直接ユーザーに利用されることはできません。ビジネスロジックを適用するには、インタラクションレイヤー(またはプレゼンテーションレイヤー、アクセスレイヤー)が必要です。
ビジネスロジックは単独で構築することはできません。他のアプリケーションのサポートが必要ですので、基礎レイヤー(またはデータレイヤー)も必要です。
他のレイヤーは必要ですか?
現時点では必要ありません。
ここでの基礎レイヤーは、他のシステムのアプリケーションでもあります。つまり、システムのアプリケーションは他のシステムをサポートし、システムの中核は他のシステムのアプリケーションに依存しています。システムとシステム、システムとユーザーの関係はサポートと依存にすぎないため、これですべてのケースをカバーしています。
三層フラクタルアーキテクチャとは何ですか?#
では、なぜ DDD のレイヤー分割は 4 つのレイヤー、ネットワークは 7 つのレイヤーなど、三層を超える設計が存在するのでしょうか?
3 つ以上のレイヤーの設計は、実際には 3 層の基礎の上に、そのうちの 1 つのレイヤーを再び異なる中核に焦点を当てて再分割したものです。
たとえば、中核レイヤーがエンティティと集約に焦点を当てる場合、アプリケーションドメインエンティティにはアプリケーションサービスレイヤーが必要であり、ドメインエンティティをサポートするためにリポジトリ、ドメインイベントバスなどのサポートが必要です。
インタラクションレイヤーでは、インタラクションフロー制御に焦点を当て、中核レイヤーはコントローラーであり、アプリケーションレイヤーはビューであり、サポートはモデルです。異なる表示方法に焦点を当てるため、中核レイヤーはプレゼンターであり、アプリケーションはビューであり、サポートはモデルです。
三層アーキテクチャは、特定の中核に焦点を当て、サポートとアプリケーションの関係に基づいて三層に分割する方法を指します。
三層フラクタルアーキテクチャは、三層アーキテクチャの方法を適用し、各レイヤーで再帰的に三層アーキテクチャの処理を行うプロセスです。三層アーキテクチャの繰り返し適用であるため、フラクタルのような形状をしており、三層フラクタルアーキテクチャと名付けられています。