---
title: "モジュール結合度とは？6段階を弱い順に整理【基本情報技術者試験】"
description: "モジュール結合度を、データ結合・スタンプ結合・制御結合・外部結合・共通結合・内容結合の6段階で整理し、結合度が弱いほど独立性と保守性が高いという判断軸をFE科目A向けに解説します。"
last_modified_at: "2026-08-14"
canonical_url: "https://stemtazoo.github.io/fe/module-coupling/"
section: "fe"
---

## まず結論

モジュール結合度とは、**モジュール同士がどれだけ強く依存しているかを表す指標**です。

基本情報技術者試験では、結合度は**弱いほどよい**と考えます。

```text
弱い
↑
データ結合
スタンプ結合
制御結合
外部結合
共通結合
内容結合
↓
強い
```

最も弱いのは**データ結合**、最も強いのは**内容結合**です。

## 直感的な説明

モジュール同士の関係は、人同士の仕事の頼み方にたとえると分かりやすいです。

必要な情報だけを渡して仕事を頼むなら、相手の内部事情をほとんど知らなくても済みます。

```text
必要な値だけ渡す
→ 依存が少ない
→ 結合度が弱い
```

一方で、

```text
相手の内部データを直接書き換える
→ 相手の内部構造に強く依存
→ 結合度が強い
```

となります。

つまり、

> **相手の内部をどこまで知る必要があるか**

で考えると、結合度の強弱をイメージしやすくなります。

## 定義・仕組み

モジュール結合度は、モジュール間の情報の受け渡し方によって分類されます。

### データ結合

データ結合は、**処理に必要なデータ項目だけを引数として渡す結合**です。

```text
module_a(x, y)
```

のように、必要な値だけを渡します。

最も結合度が弱く、独立性が高い方式です。

判断キーワードは、

```text
必要なデータだけ
引数
単純なデータ項目
```

です。

### スタンプ結合

スタンプ結合は、**構造体やレコードなど、まとまりのあるデータ構造を渡す結合**です。

```text
顧客データ一式
注文データ一式
```

のように、必要な項目だけでなく、複数項目を含むまとまりを渡します。

データ結合より依存が少し強くなります。

### 制御結合

制御結合は、**相手モジュールの動作を決める制御情報を渡す結合**です。

例えば、

```text
mode = 1
→ 登録処理

mode = 2
→ 削除処理
```

のような制御フラグを渡します。

相手の処理内容を呼出し側が意識する必要があるため、結合度が強くなります。

### 外部結合

外部結合は、**外部宣言されたデータや外部仕様を複数モジュールで共有する結合**です。

例えば、

```text
外部変数
外部ファイル形式
装置との共通インタフェース
```

などに依存します。

### 共通結合

共通結合は、**共通領域に置かれたデータを複数モジュールから参照・更新する結合**です。

いわゆる共有領域やグローバルな共通データに依存します。

```text
共通領域
↓
モジュールA
モジュールB
モジュールC
```

複数モジュールが同じデータを共有するため、影響範囲が広がりやすくなります。

### 内容結合

内容結合は、**あるモジュールが別のモジュールの内部を直接参照・変更する結合**です。

例えば、

```text
他モジュール内部の変数を直接変更
他モジュール内部へ直接分岐
内部処理を直接利用
```

などです。

最も結合度が強く、独立性が低い方式です。

## 科目Aでどう出る？

科目Aでは、説明文から結合の種類を選ぶ問題として出ます。

### 判断表

| 説明 | 結合 |
|---|---|
| 必要なデータ項目だけを引数で渡す | データ結合 |
| レコード・構造体などをまとめて渡す | スタンプ結合 |
| 制御パラメータで相手の動作を決める | 制御結合 |
| 外部宣言したデータを共有する | 外部結合 |
| 共通領域のデータを複数モジュールで参照する | 共通結合 |
| 他モジュールの内部を直接参照・変更する | 内容結合 |

### 試験中の見分け方

迷ったら、まず「何を渡しているか」「どこまで共有しているか」を見ます。

```text
必要な値だけ
→ データ結合

データ構造ごと
→ スタンプ結合

制御情報
→ 制御結合

外部で定義された情報
→ 外部結合

共通領域
→ 共通結合

相手の内部を直接触る
→ 内容結合
```

## どんな場面で使う？

モジュール結合度は、ソフトウェア設計でモジュールの独立性を考えるときに使います。

結合度が弱いと、

- あるモジュールを変更しても他へ影響しにくい
- テストしやすい
- 再利用しやすい
- 保守しやすい

といったメリットがあります。

一方、結合度が強いと、

```text
モジュールAを変更
↓
モジュールBにも影響
↓
モジュールCも修正
```

のように、変更の影響が広がりやすくなります。

## よくある誤解・混同

### 結合度は強いほどよい？

逆です。

```text
結合度が弱い
→ 独立性が高い
→ 保守しやすい

結合度が強い
→ 依存が強い
→ 変更影響が大きい
```

### 共通結合と外部結合は同じ？

似ていますが違います。

```text
外部宣言されたデータ・外部仕様を共有
→ 外部結合

共通領域のデータを複数モジュールで共有
→ 共通結合
```

試験では「共通域」「共通領域」とあれば共通結合を疑います。

### データ結合とスタンプ結合は同じ？

違います。

```text
必要なデータ項目だけ
→ データ結合

構造体・レコードなどをまとめて渡す
→ スタンプ結合
```

必要以上の情報までまとめて渡すほど、相手のデータ構造への依存が強くなります。

### 制御パラメータもデータだからデータ結合？

違います。

```text
値そのものを処理に使う
→ データ結合

値によって相手の動作を決める
→ 制御結合
```

「何のために渡しているか」で切り分けます。

## 確認問題（基本情報技術者試験対策）

モジュール結合度が最も弱い情報の受け渡し方法はどれか。

- ア. 共通域に定義したデータを、複数のモジュールが参照する
- イ. 制御パラメータを引数として渡し、モジュールの実行順序を制御する
- ウ. 処理に必要なデータ項目だけを引数として渡す
- エ. 必要なデータを外部宣言して複数モジュールで共有する

<details markdown="1">
<summary>▶ クリックして答えと解説を見る（ここを開く）</summary>

**正解：ウ**

必要なデータ項目だけを引数として渡すのは、データ結合です。

データ結合は、モジュール間の依存が最も小さく、6段階の中で最も結合度が弱い方式です。

- アは共通結合
- イは制御結合
- エは外部結合

です。

</details>

## まとめ（試験直前用）

- モジュール結合度は、モジュール同士の依存の強さ
- 弱いほど独立性が高く、保守しやすい
- 弱い順は **データ → スタンプ → 制御 → 外部 → 共通 → 内容**
- 必要な値だけ渡すのはデータ結合
- 構造体やレコードをまとめて渡すのはスタンプ結合
- 制御情報を渡すのは制御結合
- 共通領域を使うのは共通結合
- 他モジュールの内部を直接触るのは内容結合
