【もじゅーるけつごうど】

モジュール結合度 とは?

💡 部品同士の「べったり度」。ゆるくつながるほどメンテナンスしやすい
📌 このページのポイント
モジュール結合度の段階 良い 悪い データ結合 必要なデータだけ渡す スタンプ結合 構造体をまるごと渡す 制御結合 フラグで相手の動きを制御 外部結合 外部のデータ形式に依存 共通結合 グローバル変数を共有 疎結合 A B 変更しやすい 密結合 A B 変更が波及する ※ さらに下にコンテンツ結合(最悪)がある
モジュール結合度のイメージ
ひよこ ひよこ

モジュール結合度って何なの?

ペンギン先生 ペンギン先生

プログラムの部品(モジュール)同士が、どれだけ密接に依存し合っているかを示す指標だよ。結合度が低い=ゆるくつながっている状態が理想なんだ

ひよこ ひよこ

なんでゆるい方がいいの?

ペンギン先生 ペンギン先生

部品Aを修正したときに、部品Bも部品Cも一緒に直さないといけない状態だと大変だよね。結合度が低ければ、一つの部品を変えても他に影響が少ないから、安心して修正できるんだ

ひよこ ひよこ

結合度にはどんな種類があるの?

ペンギン先生 ペンギン先生

弱い順に、データ結合、スタンプ結合、制御結合、外部結合、共通結合、コンテンツ結合の6段階があるよ。データ結合は必要なデータだけ渡す理想的な形、コンテンツ結合は相手の内部を直接いじる最悪の形だね

ひよこ ひよこ

データ結合とスタンプ結合の違いは何なの?

ペンギン先生 ペンギン先生

データ結合は必要な値だけを個別に渡す方式。スタンプ結合はデータ構造オブジェクトレコード)をまるごと渡す方式だよ。スタンプ結合だと、使わないデータまで渡してしまう可能性があるんだ

ひよこ ひよこ

実際の開発で結合度を下げるにはどうすればいいの?

ペンギン先生 ペンギン先生

インターフェースを定義して、モジュール同士が直接お互いの中身を知らなくていいようにするのが基本だよ。APIを介して通信するマイクロサービスも疎結合の考え方そのものだね。あとモジュール凝集度とセットで考えると、より良い設計ができるよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
モジュール結合度」って出てきたら「部品同士の依存の強さ。弱いほど良い設計」と思えればだいたいOK!
📖 おまけ:英語の意味
「Module Coupling」 = モジュールの結合
💬 Couplingは「つなぐ・結合する」という意味。モジュール同士がどれだけつながっているかを測る指標だよ
← 用語集にもどる