😁

コンポーネントの凝集性に関する原則 再利用・リリース等価の原則とは?

2024/09/08に公開

背景

コンポーネントの設計を行う際に、再利用とリリースの適切な単位を考えることは、システムの保守性や拡張性を考える上で重要だと思います。どのクラスを一つのコンポーネントにまとめるべきかを考える際の指針となるのが、再利用・リリース等価の原則です。

再利用・リリース等価の原則とは?

私が読んだ書籍では、以下のように定義されていました。
「再利用の単位とリリースの単位は等価になる」(ロバート・C・マーチン, 2018, 『Clean Architecture 達人に学ぶソフトウェアの構造と設計』, 翔泳社, p.123)

再利用する単位とリリースする単位を同じにする、つまり、再利用しないクラスを同じリリース単位として含めてはいけないという原則です。

違反することによる問題

別のコンポーネントに分けるべきケース

AとBというクラスが一つのコンポーネントとしてリリースされているケースを考えます。前提として、クラスAとクラスBはそれぞれ別の目的で利用されることを想定しています。

クラスAに変更がありリリースされた場合、クラスAとクラスBはまとめてリリースされることになります。これにより、クラスBのみを使用している利用者は、自分が使用しているクラスとは関係のないリリースの内容を確認することになり、無駄な作業が生じてしまいます。

このようなケースでは、再利用される際の目的が異なるAとBのクラスは分けてリリースを行うべきです。

同じコンポーネントにまとめるべきケース

次に、AとBというクラスが別のコンポーネントとしてリリースされているケースを考えます。前提として、クラスAとクラスBは同じ目的で利用されることを想定しています。

この場合、利用者はAとBのバージョンごとの互換性を確認する必要が生まれ、再利用しにくいコンポーネントとなってしまいます。

このようなケースでは、再利用される際の目的が同じAとBのクラスは、まとめてリリースを行うべきです。

まとめ

古い書籍ですが、マイクロサービスアーキテクチャが普及している現代でも大切な原則だと思いました。メンテナンス性を高めようとするとコンポーネントを分割する必要が出てくると思います。その際の一つの指針となるのが、再利用・リリース等価の原則だと思います。

Discussion