<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>モジュール結合度 | 基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</title>
	<atom:link href="https://fenavi.seplus.jp/tag/%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E7%B5%90%E5%90%88%E5%BA%A6/feed/" rel="self" type="application/rss+xml" />
	<link>https://fenavi.seplus.jp</link>
	<description>基本情報技術者試験を学習する人のためにつくられた専門メディア。250本以上の記事を掲載し、勉強方法や各分野のポイント、過去問解説など、試験に役立つ情報を発信。試験対策書籍を執筆する著者が、はじめて学ぶ人でもわかりやすく解説します。（2023年度からの新制度に対応済み）</description>
	<lastBuildDate>Wed, 10 Jun 2026 00:47:04 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>
	<item>
		<title>モジュール結合度｜つまづきやすいポイントと攻略法 徹底解説！</title>
		<link>https://fenavi.seplus.jp/strategy_guide/fe_strategy08/</link>
		
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
		<pubDate>Wed, 10 Jun 2026 00:00:57 +0000</pubDate>
				<category><![CDATA[モジュール結合度]]></category>
		<category><![CDATA[学習方法]]></category>
		<category><![CDATA[解法テクニック]]></category>
		<category><![CDATA[過去問の解き方]]></category>
		<category><![CDATA[過去問演習]]></category>
		<guid isPermaLink="false">/?post_type=strategy_guide&#038;p=8905</guid>

					<description><![CDATA[<p>この連載は、基本情報技術者試験の受験者を対象としたものです。 毎回1つのテーマにしぼって、多くの受験者がつまづきやすいポイントと攻略法を解説します。 今回のテーマはモジュール結合度です。 モジュール結合度とは？ 大規模な [&#8230;]</p>
<p>The post <a href="https://fenavi.seplus.jp/strategy_guide/fe_strategy08/">モジュール結合度｜つまづきやすいポイントと攻略法 徹底解説！</a> first appeared on <a href="https://fenavi.seplus.jp">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>この連載は、基本情報技術者試験の受験者を対象としたものです。<br />
毎回1つのテーマにしぼって、多くの受験者がつまづきやすいポイントと攻略法を解説します。</p>
<p>今回のテーマは<span style="color: #4b0082;"><strong>モジュール結合度</strong></span>です。</p>
<h2>モジュール結合度とは？</h2>
<p>
大規模なプログラムは、いくつかの部分に分けて作り、それぞれの部分を「<strong>モジュール</strong>（module＝構成要素）」と呼びます。<br />
大規模なプログラムは、いくつかのモジュールから構成され、個々のモジュールが連携して動作し、その際にデータを受け渡すことがあります。</p>
<p>モジュールとモジュールの結び付きの強さを「<strong>モジュール結合度</strong>」と呼びます。<br />
<span style="background-color: lightyellow;"><strong>モジュール結合度は、弱いほど良いとされます。</strong></span><br />
なぜなら、モジュール結合度が強いと、バグの修正や仕様の変更などでプログラムをメンテナンスするときに、1つのモジュールに変更を加えると、それと連携する他のモジュールにも多くの変更が必要になり、コストが上がってしまうからです。<br />
モジュール結合度は、表1に示した分類があり、表の上にあるほど弱くなります。<br />
「<strong>引数</strong>」とは、モジュールを使うときに受け渡すデータです。「<strong>大域変数</strong>（グローバル変数）」とは、すべてのモジュールから共通して利用できるデータです。<br />
大域変数に対して、モジュールの処理の中だけで使われるデータを「<strong>局所変数</strong>（ローカル変数）」と呼びます。<br />
引数も、局所変数です。「制御用の引数」とは、モジュールの処理内容を変える引数です。
</p>
<p><!DOCTYPE html><br />
<html lang="ja"><br />
<head><br />
  <meta charset="UTF-8"><br />
  <title>モジュール結合度 表</title></p>
<style>
    /* 表のタイトルのスタイル */
    .table-title {
      font-weight: bold;
      font-size: 16px;
      margin-bottom: 10px; /* 表との間の余白 */
      font-family: sans-serif;
    }</p>
<p>    table {
      border-collapse: collapse;
      width: 100%;
      max-width: 650px;
      font-family: sans-serif;
      font-size: 15px;
    }
    th, td {
      border: 1px solid #333;
      padding: 10px;
      text-align: left;
    }
    th {
      background-color: #ededed;
    }
    /* 右側の「強度」列のスタイル */
    .intensity-cell {
      text-align: center;
      vertical-align: middle;
      width: 80px;
      padding: 10px 5px;
    }
    /* セル内を縦並びにして、上下いっぱいに広げる */
    .intensity-container {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: space-between;
      height: 100%;
      min-height: 220px; /* 矢印が綺麗に伸びるように高さを確保 */
      box-sizing: border-box;
    }
    /* 下に行くほど太くなる矢印（SVG） */
    .arrow-svg {
      width: 35px;
      flex-grow: 1; /* 縦方向の空きスペースに合わせて伸びる */
      margin: 8px 0;
    }
    .arrow-svg polygon {
      fill: #7f7f7f; /* 矢印の色 */
    }
  </style>
<p></head><br />
<body></p>
<div class="table-title">【表1】モジュール強度の分類</div>
<table>
<thead>
<tr>
<th>分類名</th>
<th>結び付き方</th>
<th>強度</th>
</tr>
</thead>
<tbody>
<tr>
<td>データ結合</td>
<td>単純な引数で結び付く</td>
<td rowspan="6" class="intensity-cell">
<div class="intensity-container">
<div>弱い</div>
<p>          <svg class="arrow-svg" viewBox="0 0 40 100" preserveAspectRatio="none">
            <polygon points="18,0 22,0 27,75 37,75 20,100 3,75 13,75" />
          </svg></p>
<div>強い</div>
</p></div>
</td>
</tr>
<tr>
<td>スタンプ結合</td>
<td>複雑な引数で結び付く</td>
</tr>
<tr>
<td>制御結合</td>
<td>制御用の引数で結び付く</td>
</tr>
<tr>
<td>外部結合</td>
<td>単純な大域変数で結び付く</td>
</tr>
<tr>
<td>共通結合</td>
<td>複雑な大域変数で結び付く</td>
</tr>
<tr>
<td>内部結合</td>
<td>モジュールの内部を部分的に利用する</td>
</tr>
</tbody>
</table>
<p></body><br />
</html></p>
<h2>モジュール結合度の攻略法</h2>
<p>
後で示す問題を見ればわかりますが、試験には「データ結合」や「スタンプ結合」などの分類名ではなく、どうすればモジュール結合度が弱くなるかが出題されます。</p>
<p>分類名を知るよりも、モジュール結合度を弱くする方法を知る方が、重要だからです。<br />
<strong>したがって、<span style="background-color: lightyellow;">モジュール結合度に関する問題の攻略法は、モジュール結合度を弱くする方法をしっかりと理解することです。</span></strong>
</p>
<p>
もう一度、表1に示したモジュール結合度の分類を見てみましょう。分類名ではなく、結び付き方に注目してください。<br />
6つの分類は、大きく分けて「<strong>引数で結び付く</strong>」「<strong>大域変数で結び付く</strong>」「<strong>データで結び付くのではなくモジュールの内部を部分的に利用する</strong>」の3つに分けられます。<br />
これらの中で、「データで結び付くのではなくモジュールの内部を部分的に利用する」は、プログラムをモジュールに分けた意味がないような結び付きであり、一般的にはあり得ないことなので最もモジュール結合度が強い、と覚えてください。
</p>
<p>
「引数で結び付く」と「大域変数で結び付く」は、「引数で結び付く」の方が「大域変数で結び付く」よりモジュール結合度が弱くなります。これは、当然のことです。「引数で結び付く」は、モジュールとそれを使うモジュールの間だけの結び付きです。「大域変数で結び付く」は、すべてのモジュールが大域変数を使えるので、すべてのモジュールが結び付く可能性があります。
</p>
<p>
そして、これも当然のことですが、「引数で結び付く」と「大域変数で結び付く」のどちらの場合も、単純なデータで結び付いた方が、複雑なデータで結び付くより、モジュール結合度が弱くなります。
</p>
<p>
「制御用の引数で結び付く」とモジュール結合度が強くなるのは、計算するための引数よりも、処理内容を変える引数の方が、引数の形式や内容を変更したときにモジュールに与える影響が大きいからです。
</p>
<h2>擬似言語で示したモジュール結合度の例</h2>
<p>
基本情報技術者試験の科目Bで採用されている擬似言語を使って、「引数で結び付く」「大域変数で結び付く」「制御用の引数で結び付く」の例を示しましょう。<br />
擬似言語では、関数、手続き、オブジェクトをモジュールとすることができます。ここでは、関数をモジュールとしています。</p>
<p>リスト1のfunc1関数は、引数aとbの値を加算します。<br />
func1関数と結び付くのは、引数を指定してfunc1関数を呼び出したモジュールだけです。したがって、大域変数で結び付くよりモジュール結合度が弱くなります。</p>
<div style="background-color: #ededed; padding: 15px; border-radius: 5px; margin: 10px 0;">
  <span style="color: #4b0082;"><strong>リスト1　引数で結び付く例</strong></span><br />
  ○実数型：func1(実数型：a, 実数型：b)<br />
  &nbsp;&nbsp;実数型：ret<br />
  &nbsp;&nbsp;ret ← a ＋ b<br />
  &nbsp;&nbsp;return ret
</div>
<p>リスト2のfunc2関数は、大域変数data1とdata2の値を加算します。<br />
すべてのモジュールが大域変数を使えるので、すべてのモジュールがfunc2関数と結び付く可能性があります。したがって、引数で結び付くよりモジュール結合度が強くなります。</p>
<div style="background-color: #ededed; padding: 15px; border-radius: 5px; margin: 10px 0;">
  <span style="color: #4b0082;"><strong>リスト2　大域変数で結び付く例</strong></span><br />
  大域：実数型：data1,data2<br />
  &nbsp;<br />
  ○実数型：func2()<br />
  &nbsp;&nbsp;実数型：ret<br />
  &nbsp;&nbsp;ret ← data1 ＋ data2<br />
  &nbsp;&nbsp;return ret
</div>
<p>リスト3のfunc3関数は、引数aとbの値を、引数opの値に応じて、加算、減算、乗算、除算します。引数opによって処理内容が変わるので、これは制御用引数です。もしも、引数opに剰余やべき乗を指定できるように変更するなら、それに合わせてfunc3関数の内容に多くの変更が必要になります。したがって、計算するための引数で結び付くよりモジュール結合度が強くなります。
</p>
<div style="background-color: #ededed; padding: 15px; border-radius: 5px; margin: 10px 0;">
  <span style="color: #4b0082;"><strong>リスト3　制御用の引数で結び付く例</strong></span><br />
  ○実数型：func3(実数型：a, 実数型：b, 文字列型:op)<br />
  &nbsp;&nbsp;実数型：ret ← 0<br />
  &nbsp;&nbsp;if (op ＝ &#8220;加算&#8221;)<br />
  &nbsp;&nbsp;&nbsp;&nbsp;ret ← data1 ＋ data2<br />
  &nbsp;&nbsp;elseif (op ＝ &#8220;減算&#8221;)<br />
  &nbsp;&nbsp;&nbsp;&nbsp;ret ← data1 － data2<br />
  &nbsp;&nbsp;elseif (op ＝ &#8220;乗算&#8221;)<br />
  &nbsp;&nbsp;&nbsp;&nbsp;ret ← data1 × data2<br />
  &nbsp;&nbsp;elseif (op ＝ &#8220;除算&#8221;)<br />
  &nbsp;&nbsp;&nbsp;&nbsp;ret ← data1 ÷ data2<br />
  &nbsp;&nbsp;endif<br />
  &nbsp;&nbsp;return ret
</div>
<h2>モジュール結合度に関する問題の攻略法（1）</h2>
<p>
モジュール結合度に関する問題を見てみましょう。<br />
以下は、どうすればモジュール結合度が弱くなるか、という問題（出典：R01秋問46）です。
</p>
<div class="card-panel mag_h30 c-round">
<h3><span class="bold">問題（出典：R01秋問46）</span></h3>
<p>モジュール結合度が最も弱くなるものはどれか。</p>
<p>ア　一つのモジュールで，できるだけ多くの機能を実現する。<br />
イ　二つのモジュール間で必要なデータ項目だけを引数として渡す。<br />
ウ　他のモジュールとデータ項目を共有するためにグローバルな領域を使用する。<br />
エ　他のモジュールを呼び出すときに，呼び出したモジュールの論理を制御するための引数を渡す。
</p></div>
<p>
表1の分類にはありませんでしたが、1つのモジュールに多くの機能があると、多くのモジュールと結び付くことになるので、選択肢アはモジュール結合度が強くなります。<br />
選択肢イは、データ項目（計算するためのデータ）を引数で渡す。<br />
選択肢ウは、データ項目をグローバルな領域（大域変数のことです）で渡す。<br />
選択肢エは、モジュールの論理を制御するための引数を渡すです。</p>
<p>これらの中で、モジュール結合度が最も弱くなるのは、データ項目を引数で渡すなので、選択肢イが正解です。
</p>
<h2>モジュール結合度に関する問題の攻略法（2）</h2>
<p>
モジュール結合度に関する問題を、もう1つ見てみましょう。<br />
以下も、どうすればモジュール結合度が弱くなるか、という問題（出典：H28春問47）です。
</p>
<div class="card-panel mag_h30 c-round">
<h3><span class="bold">問題（出典：H28春問47）</span></h3>
<p>モジュールの独立性を高めるには，モジュール結合度を低くする必要がある。モジュール間の情報の受渡し方法のうち，モジュール結合度が最も低いものはどれか。</p>
<p>ア　共通域に定義したデータを関係するモジュールが参照する。<br />
イ　制御パラメータを引数として渡し，モジュールの実行順序を制御する。<br />
ウ　入出力に必要なデータ項目だけをモジュール間の引数として渡す。<br />
エ　必要なデータを外部宣言して共有する。
</p></div>
<p>
選択肢アの共通域に定義したデータとは、大域変数のことです。<br />
選択肢イは、制御用の引数を渡しています。<br />
選択肢ウは、計算するためのデータを引数で渡しています。<br />
選択肢エのデータを外部宣言して共有するというのは、大域変数のことです。</p>
<p>これらの中で、モジュール結合度が最も低くなるのは、計算するためのデータを引数で渡すなので、選択肢ウが正解です。
</p>
<hr class="mag_tp50 mag_bt50" />
<p>
今回は、「モジュール結合度」のポイントと攻略法を解説しました。<br />
このテーマが苦手だった受験者の参考になれば幸いです。
</p>
<p>
それでは、またお会いしましょう！
</p>
<style>
h4 {
  font-size: 1.1rem;
}
h3 + h4 {
  margin: 1em 0 1em;
}
div.card-panel {
  padding: 3rem;
}
@media screen and (orientation: portrait){
div.card-panel {
  padding: 2rem;
}
}
div.card-panel > h3 {
  font-size: 1.2em;
  padding-left: 1em;
  border-left: 5px solid #3f51b5;
}
div.card-panel > h3:first-of-type {
  margin-top: 0;
}
div.card-panel .chip {
    background-color: #3f51b5;
}
</style><p>The post <a href="https://fenavi.seplus.jp/strategy_guide/fe_strategy08/">モジュール結合度｜つまづきやすいポイントと攻略法 徹底解説！</a> first appeared on <a href="https://fenavi.seplus.jp">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
