---
title: "モジュール強度とは？7種類と論理的強度の見分け方【基本情報技術者試験】"
description: "モジュール強度を「モジュール内の機能同士のまとまり」として整理し、暗合的・論理的・時間的・手順的・連絡的・情報的・機能的強度の違いをFE科目A向けに解説します。"
last_modified_at: "2026-07-27"
canonical_url: "https://stemtazoo.github.io/fe/module-cohesion/"
section: "fe"
---

## まず結論

モジュール強度とは、**1つのモジュール内に含まれる処理同士が、どれくらい強く関係しているか**を表す考え方です。

基本情報技術者試験では、次の順序を押さえます。

```text
弱い
暗合的
↓
論理的
↓
時間的
↓
手順的
↓
連絡的
↓
情報的
↓
機能的
強い
```

強度が高いほど、モジュールの役割が明確になり、修正や再利用がしやすくなります。

特に重要なのは、次の切り分けです。

```text
処理コードや引数で、複数機能のうち1つを選ぶ
→ 論理的強度

同じデータ構造を扱い、機能ごとに入口を分ける
→ 情報的強度
```

## 直感的な説明

モジュール強度は、

> なぜ、その処理を同じ箱に入れたのか

を見る考え方です。

例えば、1つのモジュールに次の処理が入っているとします。

```text
挿入
更新
削除
```

そして、処理コードによって、どれか1つを選んで実行します。

```text
I → 挿入
U → 更新
D → 削除
```

これは、似た種類の処理をまとめ、条件で選んでいるため、**論理的強度**です。

一方、次のように入口を分けている場合は、情報的強度に近づきます。

```text
insert()
update()
delete()
```

## 定義・仕組み

モジュール強度は、英語では **cohesion** と呼ばれます。

1つのモジュールが、どれだけ一貫した目的を持っているかを見る指標です。

### 7種類のモジュール強度

| 種類 | まとめる理由 | 見分ける言葉 |
|---|---|---|
| 暗合的強度 | 関係のない処理をまとめる | 寄せ集め、特別な関係がない |
| 論理的強度 | 同種の機能をまとめ、条件で選ぶ | 処理コード、引数、分岐 |
| 時間的強度 | 同じ時期に実行する処理をまとめる | 起動時、終了時、初期化時 |
| 手順的強度 | 決められた順序で実行する処理をまとめる | 順番、手順、逐次 |
| 連絡的強度 | 同じデータを受け渡しながら処理する | 同じデータ、参照、受け渡し |
| 情報的強度 | 同じデータ構造を扱い、入口を分ける | 同じ資源、機能ごとの入口 |
| 機能的強度 | 1つの明確な機能だけを実現する | 単一機能、1つの目的 |

### 強度が高い方がよい理由

モジュール強度が高いほど、モジュールの役割が明確になります。

```text
1つの役割に集中する
↓
変更範囲が小さくなる
↓
他への影響を抑えやすい
↓
再利用しやすい
```

一方、関係の薄い処理をまとめると、1か所を修正しただけで別の処理へ影響する可能性があります。

## 科目Aでどう出る？

科目Aでは、モジュール設計書や処理内容を読み、どの強度に当たるかを選ぶ問題が出ます。

### 論理的強度

次のような特徴があれば、論理的強度です。

```text
関連する複数の機能を1つにまとめる
＋
パラメータや処理コードで1つを選ぶ
```

例：

```text
process(code)

code = I → 挿入
code = U → 更新
code = D → 削除
```

### 情報的強度

同じデータ構造を扱いますが、機能ごとに入口を分けます。

```text
insert(data)
update(data)
delete(data)
```

判断の違いは次のとおりです。

```text
1つの入口で機能を選ぶ
→ 論理的強度

機能ごとに入口を分ける
→ 情報的強度
```

### 手順的強度と連絡的強度

この2つも混同しやすいです。

```text
順番だけでまとめる
→ 手順的強度

同じデータを受け渡しながら順番に処理する
→ 連絡的強度
```

### 選択肢を切る判断表

| 問題文の表現 | 選ぶ強度 |
|---|---|
| 関係のない機能をまとめる | 暗合的強度 |
| 処理コードで機能を選ぶ | 論理的強度 |
| 起動時や終了時に実行する | 時間的強度 |
| 決められた順に実行する | 手順的強度 |
| 同じデータを受け渡して処理する | 連絡的強度 |
| 同じデータ構造を扱い、別入口を持つ | 情報的強度 |
| 1つの機能だけを実現する | 機能的強度 |

## どんな場面で使う？

モジュール強度は、プログラムを機能ごとに分けるときの判断に使います。

例えば、1つの関数が次の処理をすべて持っているとします。

```text
入力チェック
データ更新
メール送信
ログ出力
画面表示
```

役割が多すぎると、1か所を修正したときの影響範囲が広がります。

そこで、処理を役割ごとに分けます。

```text
validate_input()
update_data()
send_mail()
write_log()
display_result()
```

このように、1つのモジュールを1つの明確な目的に近づけると、機能的強度を高められます。

## よくある誤解・混同

### 複数の関連機能をまとめれば、すべて情報的強度

誤りです。

同じ入口で処理コードにより機能を選ぶ場合は、論理的強度です。

```text
process("I")
process("U")
process("D")
→ 論理的強度
```

機能ごとに入口を分ける場合は、情報的強度です。

```text
insert()
update()
delete()
→ 情報的強度
```

### 処理の順番があれば、すべて連絡的強度

誤りです。

```text
順番だけが共通
→ 手順的強度

同じデータを受け渡す
→ 連絡的強度
```

### モジュール強度は低い方がよい

誤りです。

モジュール強度は、高い方が役割が明確です。

```text
高い強度
→ モジュール内のまとまりが強い
```

なお、モジュール間の依存関係を表す「結合度」は、一般に低い方がよいとされます。

```text
モジュール内のまとまり
→ 強度は高い方がよい

モジュール間の依存
→ 結合度は低い方がよい
```

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

- モジュール強度は、モジュール内部の処理同士のまとまりを表す
- 弱い順は、暗合的→論理的→時間的→手順的→連絡的→情報的→機能的
- 処理コードで機能を選ぶなら論理的強度
- 同じデータ構造を扱い、入口を分けるなら情報的強度
- 順番だけなら手順的、同じデータを受け渡すなら連絡的
- 1つの明確な機能だけなら機能的強度
- モジュール強度は高い方がよい
