🌟

【15分で学ぶ】クリーンアーキテクチャ入門 #1

に公開

はじめに

本解説は以下の4つの記事にチャプターが分かれています

  1. 【15分で学ぶ】クリーンアーキテクチャ入門 #1: なぜアーキテクチャを考えるのか?(本記事)
  2. 【15分で学ぶ】クリーンアーキテクチャ入門 #2: クリーンアーキテクチャの核心
  3. 【15分で学ぶ】クリーンアーキテクチャ入門 #3: 「依存の逆転」で境界を越える
  4. 【15分で学ぶ】クリーンアーキテクチャ入門 #4: まとめ

なぜアーキテクチャを考えるのか?

ソフトウェア開発における、よくある課題

日々の開発において、次のような課題に直面したことはないでしょうか?
これらは多くのプロジェクトで共通して見られる現象です。

1. 変更への弱さ

  • 小さな修正が、予期せぬ不具合を引き起こす
  • コードベースが複雑に絡み合い、影響範囲の予測が困難
  • 開発スピードが低下

2. テストのしにくさ

  • 重要なロジックがUIやフレームワークに密結合
  • 単体でのテストが困難
  • テストが不十分なままリリースせざるを得ない

3. 技術選択の不自由さ

  • ビジネスの成長に応じた技術選定が困難
  • 特定技術への依存が強く、移行コストが高い

これらの課題は、個人の技術力というより、ソフトウェアの 構造(アーキテクチャ) に起因しているケースが少なくありません。


ソフトウェアアーキテクチャの目的

では、そもそも「アーキテクチャ」を設計する目的とは何でしょうか?

クリーンアーキテクチャの提唱者 Robert C. Martin(通称 Uncle Bob) は、その目的を次のように述べています。

良いアーキテクチャの目的は、要求されたシステムを構築・保守するために必要な人員を最小限に抑えることである。

つまり、アーキテクチャの良し悪しは「ただ動くかどうか」だけでは測れません。

  • 将来的な仕様変更や機能追加、保守を
  • いかに少ない労力で続けられるか

これこそが、良いアーキテクチャの本質です。

先ほど挙げた課題は、まさにこの「保守に必要な労力」が増大しているサインです。


課題の根源にあるもの:関心事の混在

では、なぜこのような問題が起きるのでしょうか?

多くの場合、ソフトウェアの中で
「関心事がごちゃ混ぜになっている」 状態に原因があります。

関心事とは?

以下のように分類されます(1例になります):

  • ビジネスの関心事

    • 価格計算ルール
    • ユーザーの権限レベルなどの業務ロジック
  • 技術の関心事

    • 使用するWebフレームワーク
    • データベースの選択
    • UIの表示方法など

これらが密結合になると:

  • 一方の変更がもう一方に悪影響を与える
  • 結果として変更しづらいコードになる

課題解決へのアプローチ

このような課題に対し、構造的にアプローチする考え方が

関心事の分離(Separation of Concerns)

です。

そしてこの「関心事の分離」を
ソフトウェア全体の設計レベルで体系的に実現するための指針こそが、

クリーンアーキテクチャ

なのです。


Next

クリーンアーキテクチャで記載されている目的と原則について解説します。
クリーンアーキテクチャの核心

Discussion