エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

Clean Architecture - basicの翻訳を思考を巡らせたメモ

経緯

Clean Architecture について簡素にまとまっていたので、記事を読んで自分の中で考えを巡らせてたので、そのアウトプットとして書くに至る。

内容

原文翻訳

翻訳内容。Deeplにお世話になった。
なお、翻訳内容には、意訳も入っているので、気になる人は原文をあたって。

  • フレームワークに依存しない
    • 機能満載のソフトウェアのライブラリの存在に依存してはいけない。
    • フレームワークの制約の中に自分のシステムを詰め込まない。
    • フレームワークをツールとして利用する
  • テストしやすい
    • UI、データベース、Webサーバー、その他の外部サービスなしでテストできるようにする
  • UIに依存しない
    • システムに影響されてはいけない
    • UIが変わっても、ビジネスルールに影響が出てはいけない
  • データベースに依存しない
    • DBの交換可能な状態にする
    • データベースの種類にビジネスルールが影響されてはいけない
  • 外部サービスに依存しない
    • 外部サービスからビジネスルールへの影響をなくす
    • 外部サービスは、あなたのビジネスルールを知らないことを理解する

所感

  • フレームワークに依存しない
    • 結構難しい気がする。
    • ビジネスルールを書くところは、フレームワークから独立しろってことだな。
    • だから、多層アーキテクチャみたいな考えが乱立している気がしないでもない。
    • でも、多層アーキテクチャって、裏を返すと、フレームワーク変わったら、不要な箇所が出てきたりして、結局、影響の排除はできない気がする。
    • 影響を少なくするくらいしかできないのでは?って思ってる。
  • テストしやすい
    • モック化して、テストしたいところだけテストできるようにしておけってことだね。
    • あとは、テストデータがメンテしやすいとかも関わってきそうな気がする。
  • UIに依存しない
    • 最近のFormベースじゃなく、APIベースの開発をしろってことだな。
    • もしくは、Formとのやり取りをビジネスルールを書く場所に書くなよってことかな?
  • データベースに依存しない
    • ORマッパーないと実現は厳しい
    • 特に、NoSQL系とRDBMS系のDBの付け替え可能にするのは、無理がある気がする。
    • 技術の進歩でどうにかなるか?
  • 外部サービスに依存しない
    • 外部サービス呼ぶ際は、何かでラッピングして、影響をなくせってことかな?
    • デザインパターンの構造関連のパターンの適用を考えろってことか

やはり、難点は環境周りへの影響の排除。
DB、外部サービス、フレームワークへの影響は厳しい。
これだ!っていう解決策が思いつかないのが現状。
やはり、ラッピングして影響をコントロールできるようにするくらいしかないんだが、他にいい方法あるのだろうか?

chatGPTさんと会話して、他に方法ないか模索したけど、思いつかんかった。
依存させないってなると、完全フルスクラッチになるので、生産性と相談だねって結論になった。

参考サイト

Clean Architecture - basic - DEV Community