Upgrade to Pro — share decks privately, control downloads, hide ads and more …

誤解 クリーンアーキテクチャ

satokoki
June 12, 2024
130

誤解 クリーンアーキテクチャ

おれはダーティアーキテクチャだった・・・・・・

satokoki

June 12, 2024
Tweet

Transcript

  1. Sec. 誤解 クリーンアーキテクチャ - 誤解1 クリーンアーキテクチャはすごい クリーンアーキテクチャのでは、 右記の同心円図(通称たまねぎ図)が有名です。 名前がずるいため、なんだか最強のフレームワークの ように感じます。 画像出典:

    
 Robert C. Martin 「The Clean Architecture」 しかし、クリーンアーキテクチャは数ある技術的な概 念なかの一つでしかありません。 むしろ、すごいと思いすぎるとクリーンな実装に振り 回され、結果時間がかかってしまうことになります。
  2. Sec. 誤解 クリーンアーキテクチャ - 誤解3 クリーンアーキテクチャは銀の弾丸である 銀の弾丸とは「どういうケースでも撃てば解決する最強 のソリューション」として扱われることがあります。 クリーンアーキテクチャはそうではありません。 画像出典: 漫画「銀の弾」-

    南 導入すれば複雑性が増し、SPAの実装などでは冗長な設 計となります。 他にも、初期学習フェーズで手間がかかるために短納期 でのプロジェクトにも不向きです。 エンジニア一人ひとりが、ケースごとに設計を考えてい くことが大事になります。
  3. Sec. 誤解 クリーンアーキテクチャ - 誤解4 小規模プロジェクトに向かない 💡 小規模プロジェクトとは ここでは、1〜5人程度のプロジェクトのことを指します。 とはいえ、メンバーが10人までならギリギリ小規模って言えるかも。 大規模に導入することで効果が出ると思われがちですが、

    キックオフの段階で大規模であることはそうありません。 最初から段階的に実装を進める必要があります。 クリーンアーキテクチャは一つの概念だけではなく、 複数の概念で成り立っています。 一つひとつを注視して、 プロジェクトに導入したいものから導入するべきです。
  4. ざっくりこんなのがあるよ ・Entities ・Gateways ・Usecases ・Controller ・Presenter 上記の項目をこれから扱っていきます。 画像出典: 
 Robert

    C. Martin 「The Clean Architecture」 Sec. 実践 クリーンアーキテクチャ 細かい部分はここでは取り扱わないので、 知りたいものは書籍や各種サイトにてご覧ください。
  5. Usecases ユースケースは、 ・アプリケーション固有のビジネスルール ・DDDにおけるアプリケーションサービス などを定義します。 エンティティと含めて、 この部分までがドメイン層になります。 Sec. 実践 クリーンアーキテクチャ -

    アプリケーションビジネスルール また、外部の層が依存するためのインターフェースも ここで作成します。 アプリケーション内のAPI的な役回りが主です。
  6. インターフェースアダプターとは? ドメイン層からフレームワークなどへ求められた データを送る便利な層です。 Sec. 実践 クリーンアーキテクチャ - インターフェースアダプター インターフェースアダプターおばあちゃん 使いやすいように 2本セットにしたから

    ・使いやすいようにデータを変換する ・プロトコル(通信規格)を合わせる ・実装をビジネスロジックから関心を分離する 右記ではおばあちゃんがデータを変換しています。
  7. Controller Controllers は入力をアプリケーションが要求する形に 変更して伝えるのが役目です。 その名の通り、 ゲームのコントローラーのような役割を担います。 Sec. 実践 クリーンアーキテクチャ - インターフェースアダプター

    さっきのおばあちゃんで言うところの、人間の インプットから形式を合わせる外部アダプターです。 おばあちゃん? 0101010… 欲しいものを言う 人間 ABC