Ink

Contents related to tech, hobby, etc

クリーンアーキテクチャーについて少し学んだ

|

クリーンアーキテクチャーについて少し学んだ

今迄あまり設計というものに触れてきていなかったのだけど、今回初めて「クリーンアーキテクチャ」という概念を少し学んだ。 実をいうと SOLID原則すら触れていなかった。名前は知ってたけどねぇ...

関数型を使ってることが多いのもあるけど、古いものと考えていた節は正直ある。 いざ触れてみるとやっぱり為になることが多いねぇ...

Cj-bc/3dShellの設計に悩んだ挙句、部分的に考え方を取り入れてみている。

以下は、調べている間に感じたことの個人的なメモで 技術的に但しいかは保証できない ので注意。 何かしら「これは違うぞ!!」というのがあれば、 Twitterにでも直接直リプライ等で指摘していただけるとありがたいです

クリーンアーキテクチャについて軽いメモ

  • クリーンアーキテクチャは「こうやって作ると良い設計になる」というだけであり、別段正解の使い方が一つあるわけではない

  • サンプル実装もあるにはあるがあくまでサンプル

    • 別にもっと層があっても少なくてもいい

  • アーキテクチャはそれぞれの事例に合わせて作るべき

  • SOLID原則をつきつめるとこれになる感じがある。

  • Onion ArchitectureやHexagonal architecure等の共通点を取り出した(ような)もの

    • なので図式には共通点が色々ある

  • 永続化の仕組みやフロントエンド、入力の取得方法等を個別のクラスに切り分けることができるので、パーツ毎の作成が楽

    • 「DB決まってないけどフロント作って!」みたいな無茶ぶりができる

    • テストする時にMockにいれかえたり等できる。

  • インターフェースを介したやりとりには DTO (Data Transfer Object) を作成して行う

    • ただDBとのやりとりに DTO 使ってない例が結構あるのでそこの匙加減わからんなぁ

大事な要素

  • 「ドメイン・ビジネスロジックを守る」 のが何よりも大事

  • 外から内側への依存

  • インターフェースを用いることにより、「具象」ではなく「抽象」への依存にする

参考