nikkie-ftnextの日記

イベントレポートや読書メモを発信

読書ログ | Clean Architecture 第13章 コンポーネントの凝集性についての3原則

はじめに

ディープラーニングのおじさああああん!!(からあげさん転職おめでとうございます🎉1) nikkieです。

先日ちょうぜつ本(『ちょうぜつソフトウェア設計入門』)第2章で6つのパッケージ原則を知りました。
提唱者 Uncle Bobの『Clean Architecture』に手を伸ばしてみたログ(凝集性に関する原則篇)です。

目次

『Clean Architecture』第13章に至る道

6つのパッケージ原則はUncle Bobの著作で扱われていることに気づき、新しめの『Clean Architecture』に手を伸ばします。

https://www.tumblr.com/asciidwango/176293765750/clean-architecture

13章が凝集性に関する3原則、14章が結合に関する3原則で、今回は13章を読みました。

第13章「コンポーネントの凝集性」

まずコンポーネントですが、12章に定義されています。

コンポーネントとは、デプロイの単位のことである。
システムの一部としてデプロイできる、最小限のまとまりを指す。(Kindle の位置No.1554-1555)

13章で扱うのは、どのクラスをどのコンポーネントにまとめるか
3つの原則

  • 再利用・リリース等価の原則
  • 閉鎖性共通の原則
  • 全再利用の原則

について説かれますが、読み口はちょうぜつ本と大きく異なりました。

3つの原則のバランスを上手くとる

一番の学びは、「どのクラスをどのコンポーネントにまとめるか」は常に変わり続けるものだということ。

プロジェクトのコンポーネントの構造が経過時間や成熟度によって変わる (Kindle の位置No.1781-1782)

  • プロジェクト初期:開発しやすさを優先し、再利用性は劣後
  • プロジェクトが進み、他のプロジェクトから利用される:再利用性が重要になってくる

図13-1にテンション図があり、3原則の影響の及ぼし方が示されます。

  • プロジェクト初期:開発しやすさを優先
    • 閉鎖性共通の原則と全再利用の原則
    • 再利用・リリース等価の原則を無視するコストは「再利用性の低下」(受け入れてますね)
  • プロジェクトが進み、他のプロジェクトから利用される:再利用性が重要になってくる
    • 再利用・リリース等価の原則と全再利用の原則へシフト
    • 閉鎖性共通の原則を無視するコストは「変更すべきコンポーネントの増加

SOLID原則との関係

2つの原則(CCPとCRP)について、SOLID原則との関連も学べました。
結びつくことが示され、またちょっと理解が深まった感...!

  • 閉鎖性共通の原則(CCP)
    • 単一責任の原則の言い換え
    • 閉鎖性とは、オープン・クローズドの原則のクローズドのこと
      • IMO:ひとつのコンポーネントに閉じているが、特定の変更(似た種類の変更)には開いている
  • 全再利用の原則(CRP

終わりに

ちょうぜつ本 2章を機に手を伸ばした『Clean Architecture』13章の読書ログでした。
凝集性に関わる3原則を扱っていて

  • SOLID原則との関係
    • CCPは、単一責任の原則やオープン・クローズドの原則に関係
    • CRPは、インターフェイス分離の原則に関係
  • REP・CCP・CRPのバランスを上手くとる

という学びがありました。

ちょうぜつ本でパッケージ原則を学べた(=前提知識があった)ことで、かわいいイラストがない『Clean Architecture』を読んでも少しは持ち帰れるものがあったなという感覚です🙌

かわいい+技術書が融合したちょうぜつ本が、ほかの技術書への扉を開く...!

P.S. 7/7(金) 第2章「パッケージ原則」のちょうぜつ本_読書py!

次回ちょうぜつ本_読書py(Python使い視点でちょうぜつ本を読む、みんなのアウトプット中心の読書会)は7/7(金)です!
このエントリは予習(寄り道)エントリなのでした。

パッケージ原則に興味ある方、大歓迎です!
ぜひぜひお気軽にお越しください〜


  1. からあげ君なら、どこだって大丈夫だよ。」ここ全俺が泣いた😭