Open4

Architecture

fnecofneco

クリーンアーキテクチャ超入門

https://note.com/cyberz_cto/n/n26f535d6c575

クリーンアーキテクチャの作り方

  • ①: レイヤーを作る(関心の分離)
  • ②: レイヤーに依存方向のルールを作る

クリーンアーキテクチャのメリット

  • 保守性向上(ざっくり)
fnecofneco

ソフトウェアアーキテクチャ超入門

https://speakerdeck.com/snoozer05/sohutoueaakitekutiyafalseji-chu-software-architecture-in-a-nutshell?slide=26

  • ソフトウェアアーキテクチャの構成要素
    • (特定の性質を備える)構造
    • 構造でないもの(システムを構築する上でのルールやガイド)
    • アーキテクチャ特性
  • ソフトウェアアーキテクチャの目的
    • 内外からシステムに作用する力に対してシステムが崩壊しないように保つ
  • アーキテクチャ特性
    • 機能と共に、システムに備わっていることが期待される性質
fnecofneco

ソフトウェアアーキテクチャ超入門

https://gihyo.jp/book/2022/978-4-297-13234-7

  • 設計
    • 広義: アイデアの取捨選択に対する最適な判断
  • (ソフトウェア)アーキテクチャ
    • 広義: 何をどこに配置すれば良いかを決めたもの
    • アーキテクチャの設計はソフトウェアの動作には関係がない
  • クリーンアーキテクチャ
    • 不安定な非本質から安定な本質に依存する概念構造
      • クリーンアーキテクチャはコンセプトであり、機械的にこれを守ればよいといったルールではない
      • 例えるなら、アーキテクチャを設計するためのフレームワーク
        • 決まったルールが与えられないときでも、自主的に優れた設計をしたいときのガイドラインとして使える
    • 依存関係整理のための4つのグループ(下が上に依存する)
      • 人がなんと言おうと事実な部分(ドメインモデル)
      • 人が何をしたいかの部分(ユースケース)
      • アプリケーションの枠組みづくり(インターフェースアアダプター)
      • 下支えとしての動作の実体(インフラストラクチャ)
      • ※ 必ずしも層が 4 つとは限らない
    • 目的: ソフトウェア開発のパフォーマンス向上
      • 変更の影響範囲を認識するための思考負荷の低減
        • 📝 プログラマーは、影響範囲が多すぎると影響範囲のコードを読むことを諦めてしまう。その結果、「ことなかれ主義」的な影響範囲がないことだけを考えた保守性の低いコードが量産されてしまう
    • 開発者が身につけるべき本当の力は、クリーンアーキテクチャの習得そのものではなく、クリーンアーキテクチャを通じて理解を深めたオブジェクト指向設計のスキル