<?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://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi</link>
	<description>基本情報技術者試験を学習する人のためにつくられた専門メディア。250本以上の記事を掲載し、勉強方法や各分野のポイント、過去問解説など、試験に役立つ情報を発信。試験対策書籍を執筆する著者が、はじめて学ぶ人でもわかりやすく解説します。（2023年度からの新制度に対応済み）</description>
	<lastBuildDate>Wed, 17 Jun 2026 00:43:28 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.9.29</generator>
	<item>
		<title>モジュール結合度｜つまづきやすいポイントと攻略法 徹底解説！</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy08/</link>
		<pubDate>Wed, 10 Jun 2026 00:00:57 +0000</pubDate>
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
				<category><![CDATA[モジュール結合度]]></category>
		<category><![CDATA[学習方法]]></category>
		<category><![CDATA[解法テクニック]]></category>
		<category><![CDATA[過去問の解き方]]></category>
		<category><![CDATA[過去問演習]]></category>

		<guid isPermaLink="false">https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/?post_type=strategy_guide&#038;p=8905</guid>
		<description><![CDATA[<p>この連載は、基本情報技術者試験の受験者を対象としたものです。 毎回1つのテーマにしぼって、多くの受験者がつまづきやすいポイントと攻略法を解説します。 今回のテーマはモジュール結合度です。 モジュール結合度とは？ 大規模な [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy08/">モジュール結合度｜つまづきやすいポイントと攻略法 徹底解説！</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目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://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy08/">モジュール結合度｜つまづきやすいポイントと攻略法 徹底解説！</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
			</item>
		<item>
		<title>RAID｜つまづきやすいポイントと攻略法 徹底解説！</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy07/</link>
		<pubDate>Wed, 20 May 2026 00:30:17 +0000</pubDate>
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
				<category><![CDATA[RAID]]></category>
		<category><![CDATA[勉強方法]]></category>
		<category><![CDATA[科目 A]]></category>
		<category><![CDATA[過去問の解き方]]></category>
		<category><![CDATA[過去問演習]]></category>

		<guid isPermaLink="false">https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/?post_type=strategy_guide&#038;p=8894</guid>
		<description><![CDATA[<p>この連載は、基本情報技術者試験の受験者を対象としたものです。 毎回1つのテーマにしぼって、多くの受験者がつまづきやすいポイントと攻略法を解説します。 今回のテーマはRAIDです。 RAIDとは？ RAID（レイド）は、R [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy07/">RAID｜つまづきやすいポイントと攻略法 徹底解説！</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>この連載は、<strong>基本情報技術者試験</strong>の受験者を対象としたものです。<br />
毎回1つのテーマにしぼって、多くの受験者がつまづきやすいポイントと攻略法を解説します。</p>
<p>今回のテーマは<span style="color: #4b0082;"><strong>RAID</strong></span>です。</p>
<h2>RAIDとは？</h2>
<p>
<strong>RAID</strong>（レイド）は、Redundant Arrays of Inexpensive（またはIndependent） Disksの略であり、直訳すると「安価な（または独立した）ディスクの冗長な配列」という意味です。<br />
1988年に、米国のデイビッド・パターソン氏の論文で、かつて高価だった磁気ディスク装置（以下では、単にディスクと呼びます）が安価になったので、1つのコンピュータシステムで複数台のディスクを使って信頼性を向上させよう、ということで、RAID1からRAID5という5種類の仕組みが提唱されました。<br />
この論文にはありませんが、複数台のディスクを使ってアクセス速度を向上させる仕組みもあり、これもRAIDに含めて、RAID0と呼びます。
</p>
<p>
RAIDには、RAID0からRAID5の6種類があることになりますが、<span style="background-color: lightyellow;">これらの中でよく使われるのは、RAID0、RAID1、RAID5の3種類（および、それらの組合せ）であり、試験にも3種類が出題されています。</span><br />
したがって、RAIDに関する問題の攻略法は、これら3種類の名称と仕組みを対応付けて、しっかりと覚えることです。
</p>
<p>
とはいえ、RAID0、RAID1、RAID5という番号だけでは、仕組みと対応付けるのが困難でしょう。そこで、それぞれに仕組みを意味する別名があることを知ってください。<br />
<strong>RAID0</strong>は「<strong>ストライピング</strong>」、<strong>RAID1</strong>は「<strong>ミラーリング</strong>」、<strong>RAID5</strong>は「<strong>分散パリティ</strong>」です。<br />
これらの別名から仕組みを理解したら、自分流に理由付けをして、仕組みと番号と対応付けて覚えてください。<br />
理由付けの例は、それぞれのRAIDを説明するときに示します。
</p>
<h2>RAID0（ストライピング）の仕組み</h2>
<p>
<strong>RAID0</strong>は、<strong>データをブロックに分割して</strong>、複数のディスクに分散して格納します。<br />
<span style="background-color: lightyellow;">それぞれのディスクは、独立して同時に動作できるので、データを1台のディスクに格納するより、アクセス時間を向上できます。</span><br />
RAID0を実現するには、最低でも2台のディスクが必要です。
</p>
<p>
この仕組みを<strong>ストライピング</strong>と呼ぶのは、データを複数台のディスクに書き込むと、縞模様（stripe）のようになるからです。<br />
図1は、データをA、B、C、D、E、Fという6つのブロックに分けてストライピングした例です。
</p>
<p style="text-align: center;">【図1】RAID0（ストライピング）の例</p>
<figure style="display: block; width: 100%; max-width: 200px; margin: 0 auto;">
<div class="material-placeholder">
    <img src="/dokushuzemi/ec/fe/fenavi/wp-content/uploads/2026/05/f0418e07c53f712246de17d45ad7c8f8.jpg" alt="" style="width: 100%; height: auto; display: block;" />
  </div>
</figure>
<p>
RAIDの本来の目的は、信頼性の向上です。<br />
それに対して、ストライピングは、アクセス速度の向上を目的としています。<br />
<span style="background-color: lightyellow;">「ストライピングは、他のRAIDとは目的が違うので0という特殊な番号なのだ」と理由付けして覚えてください。</span>
</p>
<h2>RAID1（ミラーリング）の仕組み</h2>
<p>
<strong>RAID1</strong>は、複数のディスクに<strong>同じデータを格納</strong>します。<br />
<span style="background-color: lightyellow;">どちらか一方のディスクが故障しても、もう一方のディスクにデータがあるので、信頼性を向上できます。</span><br />
RAID1を実現するには、最低でも2台のディスクが必要です。
</p>
<p>
この仕組みを<strong>ミラーリング</strong>と呼ぶのは、鏡（mirror）に映したように、複数のディスクに同じデータがあるからです。<br />
図2は、A、B、Cというブロックからなるデータをミラーリングした例です。
</p>
<p style="text-align: center;">【図2】RAID1（ミラーリング）の例</p>
<figure style="display: block; width: 100%; max-width: 200px; margin: 0 auto;">
<div class="material-placeholder">
    <img src="/dokushuzemi/ec/fe/fenavi/wp-content/uploads/2026/05/ecf89b214f8587a6a2a28cc774e2732a.jpg" alt="" style="width: 100%; height: auto; display: block;" />
  </div>
</figure>
<p>
ミラーリングは、最もシンプルなRAIDだといえるでしょう。<br />
<span style="background-color: lightyellow;">「ミラーリングは、最もシンプルだから1という先頭の番号なのだ」と理由付けして覚えてください。</span>
</p>
<h2>RAID5（分散パリティ）の仕組み</h2>
<p>
RAID5を実現するには、<strong>最低でも3台のディスクが必要です。</strong><br />
3台のディスクを使う場合は、データを2台のディスクに分散して格納し、それらのパリティ（データを訂正するための符号）をもう1台のディスクに格納します。<br />
<span style="background-color: lightyellow;">3台のディスクに格納されたデータとパリティは、いずれか1台のディスクが故障しても、残りの2台のディスクで復元できるので、信頼性を向上できます。</span>
</p>
<p>
この仕組みを<strong>分散パリティ</strong>と呼ぶのは、パリティ専用に1台のディスクを使うのではなく、それぞれのディスクにパリティを分散させるからです。<br />
図3は、A1とA2に分散されたデータとパリティAp、B1とB2に分散されたデータとパリティBp、およびC1とC2に分散されたデータとパリティCpによる分散パリティの例です。<br />
Ap、Bp、Cpというパリティが3台のディスクに分散されていることに注目してください。
</p>
<p style="text-align: center;">【図3】RAID5（分散パリティ）の例</p>
<figure style="display: block; width: 100%; max-width: 300px; margin: 0 auto;">
<div class="material-placeholder">
    <img src="/dokushuzemi/ec/fe/fenavi/wp-content/uploads/2026/05/c8856789ec11ab8b1013037cef6929f9.jpg" alt="" style="width: 100%; height: auto; display: block;" />
  </div>
</figure>
<p>
分散パリティは、ミラーリング（RAID1）と比べて、かなり複雑です。<br />
<span style="background-color: lightyellow;">「分散パリティは、複雑なので5という大きな番号なのだ」と理由付けして覚えてください。</span>
</p>
<h2>RAIDに関する問題（1）</h2>
<p>
RAIDに関する問題を見てみましょう。<br />
以下は、RAIDの仕組みと番号を対応付ける問題（出典：R01秋問15）です。
</p>
<div class="card-panel mag_h30 c-round">
<h3><span class="bold">問題（出典：R01秋問15）</span></h3>
<p>RAIDの分類において、ミラーリングを用いることで信頼性を高め、障害発生時には冗長ディスクを用いてデータ復元を行う方式はどれか。</p>
<p>ア　RAID1　　　　　イ　RAID2　　　　　ウ　RAID3　　　　　エ　RAID4
</p></div>
<p>
ミラーリングは、RAID1の仕組みを意味する別名です。<br />
したがって、選択肢アが正解です。選択肢には、RAID2、RAID3、RAID4もありますが、これらが試験問題のテーマになったことはないので、気にする必要はありません。<br />
<span style="background-color: lightyellow;">とにかく、「RAID0はストライピング」「RAID1はミラーリング」「RAID5は分散パリティ」の3つを、しっかりと覚えてください。</span>
</p>
<h2>RAIDに関する問題（2）</h2>
<p>
RAIDに関する問題を、もう1つ見てみましょう。<br />
以下は、先ほどの問題とは逆に、RAIDの番号と仕組みを対応付ける問題（出典：H29秋問12）です。
</p>
<div class="card-panel mag_h30 c-round">
<h3><span class="bold">問題（出典：H29秋問12）</span></h3>
<p>RAID5の記録方式に関する記述のうち，適切なものはどれか。</p>
<p>ア　複数の磁気ディスクに分散してバイト単位でデータを書き込み，さらに，1台の磁気ディスクにパリティを書き込む。<br />
イ　複数の磁気ディスクに分散してビット単位でデータを書き込み，さらに，複数の磁気ディスクにエラー訂正符号（ECC）を書き込む。<br />
ウ　複数の磁気ディスクに分散してブロック単位でデータを書き込み，さらに，複数の磁気ディスクに分散してパリティを書き込む。<br />
エ　ミラーディスクを構成するために，磁気ディスク2台に同じ内容を書き込む。
</p></div>
<p>
RAID5の仕組みを意味する別名は、分散パリティです。<br />
したがって、「複数のディスクに分散してパリティを書き込む」と記述している選択肢ウが正解です。</p>
<p>念のため、他の選択肢も見ておきましょう。<br />
選択肢エは、ミラーリングとあるので、RAID1です。<br />
選択肢アとイは、ストライピングのRAID0ではないので、他の番号のRAIDでしょう。<br />
ただし、RAID0、RAID1、RAID5以外のRAIDが問題のテーマになったことはないので、気にする必要はありません。
</p>
<hr class="mag_tp50 mag_bt50" />
<p>
今回は、「RAID」のポイントと攻略法を解説しました。このテーマが苦手だった受験者の参考になれば幸いです。
</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://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy07/">RAID｜つまづきやすいポイントと攻略法 徹底解説！</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
			</item>
		<item>
		<title>MIPS｜つまづきやすいポイントと攻略法 徹底解説！</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy06/</link>
		<pubDate>Mon, 20 Apr 2026 07:00:46 +0000</pubDate>
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
				<category><![CDATA[MIPS]]></category>
		<category><![CDATA[出題傾向]]></category>
		<category><![CDATA[勉強方法]]></category>

		<guid isPermaLink="false">https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/?post_type=strategy_guide&#038;p=8879</guid>
		<description><![CDATA[<p>この連載は、基本情報技術者試験の受験者を対象としたものです。 毎回1つのテーマにしぼって、多くの受験者がつまづきやすいポイントと攻略法を解説します。 今回のテーマはMIPSです。 MIPSを攻略するための知識（その1）  [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy06/">MIPS｜つまづきやすいポイントと攻略法 徹底解説！</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>この連載は、基本情報技術者試験の受験者を対象としたものです。<br />
毎回1つのテーマにしぼって、多くの受験者がつまづきやすいポイントと攻略法を解説します。</p>
<p>今回のテーマは<span style="color: #4b0082;"><strong>MIPS</strong></span>です。</p>
<h2>MIPSを攻略するための知識（その1）</h2>
<p>
<span style="background-color: lightyellow;">MIPS（ミップス）は、<strong>Million Instructions Per Second（百万命令/秒）</strong>の略であり、<strong>CPU（プロセッサ）が1秒間に実行できる命令の数を百万単位で示し</strong>ます。</span><br />
MIPSに関する問題を攻略するポイントは、コンピュータのハードウェアの仕組みと、命令の実行に関わる用語の意味をしっかりと理解することです。
</p>
<p>
まず、コンピュータのハードウェアの仕組みを説明しましょう。<br />
コンピュータの内部は、CPU、メモリ、I/Oという装置から構成されています。<br />
CPU（Central Processing Unit、シーピーユー）は、プログラムを解釈実行して他の装置を制御する機能と、データを演算する機能を持っています。<br />
メモリーは、プログラムの命令やデータを記憶する機能を持っています。<br />
I/O（Input/Output、アイオー）は、キーボードなどの入力装置や、液晶ディスプレイなどの出力装置とコンピュータ本体を接続する機能を持っています。<br />
CPU、メモリ、I/Oという装置および入力装置と出力装置が連携することで、コンピュータというシステムが成り立っているのです（図1）。
</p>
<p style="text-align: center;">【図1】コンピュータのハードウェアの仕組み</p>
<figure style="display: block; width: 100%; max-width: 500px; margin: 0 auto;">
<div class="material-placeholder">
    <img src="/dokushuzemi/ec/fe/fenavi/wp-content/uploads/2026/04/795316b92fc766b0181f6fef074f03fa-1.jpg" alt="" style="width: 100%; height: auto; display: block;" />
  </div>
</figure>
<h2>MIPSを攻略するための知識（その2）</h2>
<p>
次に、命令の実行に関わる用語の意味を説明しましょう。<br />
CPUが解釈実行できる形式の命令を「<strong>マシン語（機械語）</strong>」と呼びます。<br />
世の中には、C言語、Java、Pythonなど、様々なプログラミング言語がありますが、それらの言語で記述されたプログラムは、マシン語に変換されてから実行されます。<br />
マシン語は、命令やデータを2進数で表します。
</p>
<p>
CPUは、時計のようにカチカチと電圧の高低を繰り返す「<strong>クロック信号</strong>」に合わせて動作しています。<br />
1秒間に何個のクロック信号が与えられるかを「<strong>クロック周波数</strong>」と呼び「Hz（ヘルツ）」という単位で示します。<br />
たとえば、クロック周波数が3GHz（3ギガヘルツ）なら、G（ギガ）は10億なので、1秒間に30億個のクロック信号がCPUに与えられます。
</p>
<p>
マシン語の命令の種類によって、それを実行するために要するクロック信号の数が決まっていて、これを「<strong>クロック数</strong>」と呼びます。<br />
クロック信号の電圧が上がって下がっての１回分を「1サイクル」と呼ぶので、<span style="background-color: lightyellow;">クロック数のことを「<strong>CPI（Cycles Per Instruction、サイクル/命令）</strong>」と呼ぶこともあります</span>（図2）。
</p>
<p style="text-align: center;">【図2】CPUに与えられるクロック信号</p>
<figure style="display: block; width: 100%; max-width: 500px; margin: 0 auto;">
<div class="material-placeholder">
    <img src="/dokushuzemi/ec/fe/fenavi/wp-content/uploads/2026/04/2b530e80c7d0de90885e285c5d798063.jpg" alt="" style="width: 100%; height: auto; display: block;" />
  </div>
</figure>
<p>
ここまでの知識があれば、MIPSの意味を明確に理解できるでしょう。<br />
たとえば、100MIPSのCPUは、MIPSのMはMillion（百万）なので、1秒間に100百万命令＝1億命令を実行できます。<br />
1つの命令の実行に要する時間は、1秒÷1億＝1÷100,000,000＝10ナノ秒です。
</p>
<h2>MIPSに関する問題の例（その1）</h2>
<p>
MIPSに関する問題を克服するための知識が得られたので、実際の問題を見てみましょう。<br />
以下は、MIPSを求める問題（出典：H29秋問9）です。
</p>
<div class="card-panel mag_h30 c-round">
<h3><span class="bold">問題（出典：H29秋問9）</span></h3>
<p>平均命令実行時間が20ナノ秒のコンピュータがある。このコンピュータの性能は何MIPSか。</p>
<p>ア　5　　　　　イ　10　　　　　ウ　20　　　　　エ　50
</p></div>
<p>
MIPSが何の略であるかを思い出してください。<br />
<span style="background-color: lightyellow;"><strong>Million Instructions Per Second（百万命令/秒）であり、1秒間に実行できる命令の数を百万単位で示します。</strong></span><br />
この問題では、1つの命令の実行時間が20ナノ秒なので、<strong>1秒間に実行できる命令の数は、1秒÷20ナノ秒＝1,000,000,000ナノ秒÷20ナノ秒＝50,000,000個＝50百万個なので、50MIPS</strong>です。<br />
したがって、選択肢エが正解です。
</p>
<p>
もしも、大きな数や小さな数を意味するメガやナノなどを使った計算が苦手なら、数を3桁ずつカンマで区切るとよいでしょう。<br />
大きな数は、3桁上がるごとに<strong>「キロ」→「メガ」→「ギガ」</strong>となります。<br />
小さな数は、3桁下がるごとに<strong>「ミリ」→「マイクロ」→「ナノ」</strong>となります。<br />
たとえば、先ほどの1秒÷20ナノ秒という計算は、ナノ単位に揃えて計算するために、1秒を1000倍、1000倍、1000倍して1,000,000,000ナノ秒として、1,000,000,000ナノ秒÷20ナノ秒＝50,000,000個と計算し、50,000,000個は3桁が2つあるので50メガ個と計算しました。<br />
メガとミリオンは、どちらも100万を意味するので、50メガ個＝50ミリオン個です。
</p>
<h2>MIPSに関する問題の例（その2）</h2>
<p>
MIPSに関する問題を、もう1つ見てみましょう。<br />
以下は、マシン語の命令のクロック数からMIPSを求める問題（出典：H30秋問9）です。
</p>
<div class="card-panel mag_h30 c-round">
<h3><span class="bold">問題（出典：H30秋問9）</span></h3>
<p>動作クロック周波数が700MHzのCPUで、命令実行に必要なクロック数及びその命令の出現率が表に示す値である場合、このCPUの性能は約何MIPSか。</p>
<figure style="display: block; width: 100%; max-width: 500px; margin: 0 auto;">
<div class="material-placeholder">
    <img src="/dokushuzemi/ec/fe/fenavi/wp-content/uploads/2026/04/fb127d914c59745c3dbdfe2bb12b9883.jpg" alt="" style="width: 100%; height: auto; display: block;" />
  </div>
</figure>
<p>ア　10　　　　　イ　50　　　　　ウ　70　　　　　エ　100
</p></div>
<p>
「命令の種別」に示されているのは、マシン語の命令の種別であり、それぞれの実行に必要なクロック数と出現率が示されています。<br />
まず、出現率から1つの命令の実行に要する平均クロック数を求めます。<br />
これは、確率（この問題で出現率）を掛けて集計する、期待値の計算です。<br />
<strong>平均クロック数は、4×0.3＋8×0.6＋10×0.1＝7クロック</strong>です。<br />
クロック周波数が700MHzなので、1秒間に700百万個のクロック信号が与えられます。<br />
1つの命令の実行に7クロックを要するので、<strong>1秒間に700百万個のクロック信号なら、1秒間に700百万÷7＝100百万個の命令を実行でき、これをMIPSで示すと100MIPS</strong>です。<br />
したがって、選択肢エが正解です。
</p>
<hr class="mag_tp50 mag_bt50" />
<p>
今回は、「MIPS」のポイントと攻略法を解説しました。<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://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy06/">MIPS｜つまづきやすいポイントと攻略法 徹底解説！</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
			</item>
		<item>
		<title>暗号化｜つまづきやすいポイントと攻略法 徹底解説！</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy05/</link>
		<pubDate>Tue, 24 Mar 2026 08:00:48 +0000</pubDate>
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
				<category><![CDATA[解法テクニック]]></category>
		<category><![CDATA[過去問の解き方]]></category>
		<category><![CDATA[過去問演習]]></category>

		<guid isPermaLink="false">https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/?post_type=strategy_guide&#038;p=8840</guid>
		<description><![CDATA[<p>この連載は、基本情報技術者試験の受験者を対象としたものです。 毎回1つのテーマにしぼって、多くの受験者がつまづきやすいポイントと攻略法を解説します。 今回のテーマは暗号化です。 暗号化の2つの方式 暗号化される前の文書を [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy05/">暗号化｜つまづきやすいポイントと攻略法 徹底解説！</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>この連載は、基本情報技術者試験の受験者を対象としたものです。<br />
毎回1つのテーマにしぼって、多くの受験者がつまづきやすいポイントと攻略法を解説します。</p>
<p>今回のテーマは<span style="color: #4b0082;"><strong>暗号化</strong></span>です。</p>
<h2>暗号化の2つの方式</h2>
<p>
暗号化される前の文書を「<strong>平文</strong>」と呼び、暗号化された文書を「<strong>暗号文</strong>」と呼びます。<br />
平文を暗号文にすることを「暗号化」と呼び、暗号文を平文にすることを「復号」と呼びます。<br />
「復号化」と呼ばないのは、暗号化は化けますが、復号は元に戻るのであって化けないからです。<br />
暗号化の計算で使われる数値を「<strong>暗号鍵</strong>」と呼び、復号の計算で使われる数値を「<strong>復号鍵</strong>」と呼びます。<br />
暗号化の方式には、「共通鍵暗号方式」と「公開鍵暗号方式」があります。
</p>
<p>
<span style="background-color: lightyellow;"><strong>共通鍵暗号方式</strong>は、暗号化と復号で同じ値の鍵を使います。</span><br />
たとえば、古代ローマのシーザーが好んで使っていたといわれる「シーザー暗号」では、平文を構成する文字を3文字ずらして暗号化し、暗号文を構成する文字を逆方向に3文字ずらして復号します。<br />
これは、3を共通鍵とした共有鍵暗号方式です。<br />
シーザー暗号をコンピュータで実現するには、図1に示したように、平文の文字コードに3を足すという計算で暗号化して、暗号文の文字コードから3を引くという計算で復号します。
</p>
<p style="text-align: center;">【図1】共通鍵暗号方式の例（シーザー暗号）</p>
<figure style="display: block; width: 100%; max-width: 500px; margin: 0 auto;">
<div class="material-placeholder">
    <img src="/dokushuzemi/ec/fe/fenavi/wp-content/uploads/2026/03/795316b92fc766b0181f6fef074f03fa.jpg" alt="" style="width: 100%; height: auto; display: block;" />
  </div>
</figure>
<p>
<span style="background-color: lightyellow;"><strong>公開鍵暗号方式</strong>は、暗号化と復号で異なる値の鍵を使います。</span><br />
たとえば、「RSA暗号（RSAは、3人の考案者の名前の頭文字を並べたもの）」では、図2に示した計算で暗号化と復号を行います。<br />
Modは、割り算の余りを求める演算を意味します。<br />
ここでは、3と55が暗号鍵であり、7と55が復号鍵です（これらは、あらかじめ決められたルールに従った値であり、実用的な暗号化では、もっと桁数の大きな鍵を使います）。<br />
除数は、同じですが、べき乗する値が異なることに注目してください。
</p>
<p style="text-align: center;">【図2】公開鍵暗号方式の例（RSA暗号）</p>
<figure style="display: block; width: 100%; max-width: 500px; margin: 0 auto;">
<div class="material-placeholder">
    <img src="/dokushuzemi/ec/fe/fenavi/wp-content/uploads/2026/03/2b530e80c7d0de90885e285c5d798063.jpg" alt="" style="width: 100%; height: auto; display: block;" />
  </div>
</figure>
<p>
<span style="background-color: lightyellow;">公開鍵暗号方式では、暗号化の鍵を「<strong>公開鍵</strong>」として、復号の鍵を「<strong>秘密鍵</strong>」とします。</span><br />
受信者が公開鍵と秘密鍵を作成し、送信者にネットワークで公開鍵を知らせます。<br />
ネットワークで知らせることは、公開したのも同然なので、公開鍵と呼ぶのです。<br />
秘密鍵は、送信者しか知らない秘密にするので、秘密鍵と呼ぶのです。<br />
送信者は、平文を公開鍵で暗号化して、暗号文をネットワークで送ります。<br />
受信者は、受信した暗号文を秘密鍵で復号します。<br />
もしも、ネットワークで暗号文が誰かに盗まれても、それを復号する秘密鍵は受信者しか知らないので、復号されることはありません。
</p>
<h2>異なる値の鍵で暗号化と復号ができる仕組み</h2>
<p>
公開鍵暗号方式では、異なる値の鍵で暗号化と復号ができますが、これを不思議に思うでしょう。<br />
数というものは、3を足して変化させたなら3を引けば元に戻り、3を掛けて変化させたなら3で割れば元に戻る、というように、同じ値で逆の演算をすれば元に戻るものだからです。<br />
先ほど例を示した公開鍵暗号方式の計算では、3乗して55で割った余りで変化させて、7乗して55で割った余りで元に戻しています。<br />
どうして、このようなことが実現できるのでしょうか。
</p>
<p>
この仕組みを理解するために、表計算ソフトを使って、図3に示した表を作成しました。<br />
表の左端で上から下に並んだ数字は、平文の文字に割り当てられた文字コードだとします。<br />
表の上端で左から右に並んだ数字は、それらを何乗するかを示しています。<br />
そして、それらが交わったセルには、文字コードをべき乗して55で割った値を示しています。<br />
たとえば、左端の4と上端の5が交わったセルには、4の5乗を55で割った余りの34を示しています。
</p>
<p style="text-align: center;">【図3】異なる値の鍵で暗号化と復号ができる仕組みを理解するための表</p>
<figure style="display: block; width: 100%; max-width: 700px; margin: 0 auto;">
<div class="material-placeholder">
    <img src="/dokushuzemi/ec/fe/fenavi/wp-content/uploads/2026/03/c8856789ec11ab8b1013037cef6929f9.jpg" alt="" style="width: 100%; height: auto; display: block;" />
  </div>
</figure>
<p>
1乗しても値は変化しませんが、2乗以降では異なる値に変化しています。<br />
そして、ここが大注目なのですが、21乗では元の値に戻っています。<br />
21＝3×7なので、3乗してから7乗することで21乗にすることもできます。<br />
3乗すると異なる値に変化するので、暗号化ができます。それを7乗すると元の値に戻るので、復号ができます。<br />
これが、異なる値の鍵で暗号化と復号ができる仕組みです。
</p>
<p>
仕組みがわかると、公開鍵と復号鍵の性質もわかります。<br />
21乗を3乗と7乗に分けるのですから、公開鍵と復号鍵には「ペアで作るものである」という性質があります。<br />
21＝3×7は、21＝7×3と表すこともできるので、公開鍵と秘密鍵には「それぞれを逆に使える」という性質もあります。<br />
これは、公開鍵の3で暗号化すれば秘密鍵の7で復号でき、逆に秘密鍵の7で暗号化すれば公開鍵の3で復号できるということです。<br />
鍵を逆に使えるという性質は、すぐ後で説明するディジタル署名で応用されています。
</p>
<h2>公開鍵暗号方式を応用したディジタル署名</h2>
<p>
公開鍵暗号方式を応用して「<strong>ディジタル署名</strong>」を実現できます。<br />
文書にディジタル署名を添付すると、送信者に「なりすまし」がないことと、文書に「改ざん」がないことを検証できます。<br />
図4にディジタル署名の作成と検証の手順を示します。
</p>
<div class="card-panel mag_h30 c-round">
<h3><span class="bold">【図4】公開鍵暗号方式を応用したディジタル署名の仕組み</span></h3>
<p>①<span style="color: #4b0082;">送信者は、公開鍵と秘密鍵のペアを作成する。</span></p>
<p>②<span style="color: #4b0082;">送信者は、文書の「ハッシュ値（文書を構成するすべてのデータを使って作られた1つの値であり「メッセージダイジェスト」とも呼ばれる）」を求めて、それを自分の秘密鍵で暗号化する。これが、ディジタル署名である。</span></p>
<p>③<span style="color: #4b0082;">送信者は、文書（ここでは、文書は暗号化しません）、ディジタル署名（暗号化されたハッシュ値）、自分の公開鍵を、送信者に送る。</span></p>
<p>④<span style="color: #4b0082;">送信者は、受信した文書のハッシュ値を求め（ハッシュ値の計算方法は秘密ではありません）、さらにディジタル署名を送信者の公開鍵で復号した値（送信者が計算したハッシュ値）を得る。両者が一致したら、なりすましと改ざんがないことを検証できる。なぜなら、送信者しか知らない秘密鍵で暗号化したからこそ送信者の公開鍵で復号できたのであり、文書に改ざんがないからこそハッシュ値が一致したからである。</span>
</div>
<h2>暗号化に関する問題の攻略法（1）</h2>
<p>
暗号化に関する問題を見てみましょう。<br />
以下は、暗号方式の特徴に関するする問題（出典：H30秋問38）です。
</p>
<div class="card-panel mag_h30 c-round">
<h3><span class="bold">問題（出典：H30秋問38）</span></h3>
<p>共通鍵暗号方式の特徴はどれか。</p>
<p>ア　暗号化通信に使用する場合、鍵を相手と共有する必要があり、事前に平文で送付することが推奨されている。<br />
イ　暗号化通信をする相手が1人の場合、使用する鍵の個数は公開鍵暗号方式よりも多い。<br />
ウ　同じ程度の暗号強度をもつ鍵長を選んだ場合、公開鍵暗号方式と比較して、暗号化や複合に必要な時間が短い。<br />
エ　鍵のペアを生成し、一方の鍵で文書を暗号化すると、他方の鍵だけで複合することができる。
</p></div>
<p>
この問題の攻略法は、共通鍵暗号方式と公開鍵暗号方式の長所と短所を理解することです。<br />
暗号化に2つの方式があるのですから、それぞれに他方と比べて長所と短所があります。</p>
<p><span style="background-color: lightyellow;"><strong>共通鍵暗号方式</strong>には、鍵をネットワークで送れないという短所がありますが、計算が単純なので処理が速いという長所があります。</span><br />
<span style="background-color: lightyellow;"><strong>公開鍵暗号方式</strong>には、暗号化の鍵をネットワークで送れるという長所がありますが、計算が複雑なので処理が遅いという短所があります。</span>
</p>
<p>
事前に公開鍵をネットワークで送れるのは、共通鍵暗号方式ではなく、公開鍵暗号方式なので、選択肢アは不適切です。<br />
通信相手が1人の場合、共通鍵暗号式に必要な鍵は1つ（共通鍵）であり、公開鍵暗号方式に必要な鍵は2つ（公開鍵と秘密鍵）なので、選択肢イは不適切です。<br />
共通鍵暗号方式は、公開鍵暗号方式より計算が単純であり処理が速いので、選択肢ウは適切です。<br />
鍵のペアを作成するのは、共通鍵暗号方式ではなく公開鍵暗号方式なので、選択肢エは不適切です。</p>
<p>したがって、選択肢ウが正解です。
</p>
<h2>暗号化に関する問題の攻略法（2）</h2>
<p>
暗号化に関する問題を、もう1つ見てみましょう。<br />
以下は、公開鍵暗号方式を応用したディジタル署名の鍵の使い方に関する問題（出典：R01秋問38）です。
</p>
<div class="card-panel mag_h30 c-round">
<h3><span class="bold">問題（出典：R01秋問38）</span></h3>
<p>メッセージにRSA方式のディジタル署名を付与して2者間で送受信する。そのときのディジタル署名の検証鍵と使用方法はどれか。</p>
<p>ア　受信者の公開鍵であり，送信者がメッセージダイジェストからディジタル署名を作成する際に使用する。<br />
イ　受信者の秘密鍵であり，受信者がディジタル署名からメッセージダイジェストを算出する際に使用する。<br />
ウ　送信者の公開鍵であり，受信者がディジタル署名からメッセージダイジェストを算出する際に使用する。<br />
エ　送信者の秘密鍵であり，送信者がメッセージダイジェストからディジタル署名を作成する際に使用する。
</p></div>
<p>
この問題の攻略法は、公開鍵暗号方式における公開鍵と秘密鍵を誰が作り、どのように使うかを、丸暗記ではなく、きちんと理解することです。</p>
<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://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy05/">暗号化｜つまづきやすいポイントと攻略法 徹底解説！</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
			</item>
		<item>
		<title>IPアドレス｜つまづきやすいポイントと攻略法 徹底解説！</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy04/</link>
		<pubDate>Tue, 24 Feb 2026 00:00:20 +0000</pubDate>
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
				<category><![CDATA[IPアドレス]]></category>
		<category><![CDATA[勉強方法]]></category>
		<category><![CDATA[合格方法]]></category>
		<category><![CDATA[学習方法]]></category>
		<category><![CDATA[過去問演習]]></category>

		<guid isPermaLink="false">https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/?post_type=strategy_guide&#038;p=8830</guid>
		<description><![CDATA[<p>この連載は、基本情報技術者試験の受験者を対象としたものです。 毎回1つのテーマにしぼって、多くの受験者がつまづきやすいポイントと攻略法を解説します。 今回のテーマはIPアドレスです。 IPアドレスの仕組み 「IPアドレス [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy04/">IPアドレス｜つまづきやすいポイントと攻略法 徹底解説！</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>
この連載は、基本情報技術者試験の受験者を対象としたものです。<br />
毎回1つのテーマにしぼって、多くの受験者がつまづきやすいポイントと攻略法を解説します。
</p>
<p>
今回のテーマは<span style="color: #4b0082;"><strong>IPアドレス</strong></span>です。
</p>
<h2>IPアドレスの仕組み</h2>
<p>
「IPアドレス」は、IP（Internet Protocol）を使った通信、つまり<span style="background-color: lightyellow;"><strong>インターネットで、コンピュータやルータなどの通信機器に割り当てられる識別番号</strong></span>です。<br />
IPアドレスには、従来から使われている「IPv4（version 4）アドレス」と、新たに使えるようになった「IPv6（version 6）アドレス」があります。<br />
試験には、IPv4アドレスに関する問題がよく出るので、これ以降ではIPv4アドレスだけを取り上げ、単にIPアドレスと呼びます。
</p>
<p>
IPアドレスは、全体で32ビットの2進数なのですが、32個も0と1を並べたのではわかりにくいので、32ビットを8ビットずつ4つの部分に分け、それぞれの部分を10進数にして、ドット（.）でつなぐ、という表記で示します。</p>
<p class="grey lighten-5 c-round" style="padding: 1em;">
【例】<br />
<strong><span style="color: #4b0082;">01101110111010001100010011101001</span>というIPアドレス</strong></span><br />
→8ビットずつ01101110、11101000、11000100、11101001という4つの部分に分け、それぞれを10進数の110、232、196、233にして、ドットでつないだ110.232.196.233という表記で示します。
</p>
<p>
インターネットは、ネットワークとネットワークの間をつなぐものです。<br />
ここで、ネットワークとは、企業内、オフィス内、家庭内などのLAN（Local Area Network）を意味します。<br />
IPアドレスは、<span style="color: #4b0082;"><strong>上位桁がネットワークを識別する「ネットワークアドレス」</strong></span>になっていて、<span style="color: #4b0082;"><strong>下位桁がホスト（コンピュータやルータなどの通信機器）を識別する「ホストアドレス」</strong></span>になっています。<br />
同じネットワーク内にあるホストのIPアドレスは、上位桁が同じで、下位桁が異なります。IPアドレスの上位桁と下位桁の区切りを示す方法は、すぐ後で説明します。
</p>
<h2>サブネットマスクの役割</h2>
<p>
IPアドレスの上位桁と下位桁の区切りを示す方法として<span style="color: #4b0082;"><strong>「サブネットマスク」</strong></span>があります。</p>
<p>サブネットとは、LAN全体もしくは、LANの中をいくつかのネットワークに区切ったものを意味します。<br />
サブネットマスクも、32ビットの2進数であり、IPアドレスと同様に、255.255.255.0のように表記します。<br />
サブネットマスクを2進数で示すと、11111111111111111111111100000000のように1の並びの後に0が並んだものになり、<span style="color: #4b0082;"><strong>1が並んだ部分が上位桁（ネットワークアドレス）</strong></span>であり、<span style="color: #4b0082;"><strong>0が並んだ部分が下位桁（ホストアドレス）</strong></span>であることを示します。</p>
<p>11111111111111111111111100000000は、上位24ビットがネットワークアドレスであり、下位8ビットがホストアドレスであることを示します。
</p>
<p>
たとえば、IPアドレスが110.232.196.233で、サブネットマスクが255.255.255.0なら、110.232.196までがネットワークアドレスで、残りの233がホストアドレスということになります。<br />
ただし、慣例として、ネットワークアドレスは、110.232.196.0のように、ホストアドレスの部分を0にして示します。</p>
<p>IPアドレスの上位桁と下位桁の区切りを示す別の方法として「CIDR（Classless Inter Domain Routing、サイダー）表記」もあります。<br />
これは、110.232.196.0/24のように、IPアドレスの末尾に「/上位桁数」を付加するという表記です。<br />
110.232.196.0/24は、上位24ビットがネットワークアドレスであることを示します。<br />
IPアドレスは、全体で32ビットなので、残りの32 ー 24 ＝ 8ビットがホストアドレスです。
</p>
<h2>ホストに割り当てられないアドレス</h2>
<p>
IPアドレスの下位桁は、ホストを識別するホストアドレスなのですが、2進数で示したときに、すべてが0になるアドレスと、すべてが1になるアドレスは、用途が決められているので、ホストに割り当てられません。</p>
<p>たとえば、ホストアドレスが8ビットなら、すべてが0の00000000（10進数で0）というアドレスと、すべてが1の11111111（10進数で255）というアドレスは、ホストに割り当てられません。</p>
<p>すべてが0のホストアドレスは、ネットワークアドレスを示すために使います。これは、先ほど「慣例として」と説明したことです。<br />
すべてが1のホストアドレスは、「ブロードキャストアドレス」を示すために使います。「ブロードキャスト（broadcast、一斉同報）」とは、同じネットワーク内にあるすべてのホストに同じデータを送ることです。ネットワークでは、ブロードキャストを行う場面がよくあるのです。
</p>
<p>
たとえば、IPアドレスが110.232.196.233で、サブネットマスクが255.255.255.0なら、110.232.196.0がネットワークアドレスを示し、110.232.196.255がブロードキャストアドレスを示します。<br />
8ビットで表せるアドレスは、全部で256通りありますが、それらの中でホストに割り当てられるのは、ネットワークアドレスとブロードキャストアドレスを除いた、256ー2＝254通りです。
</p>
<h2>IPアドレスに関する問題の攻略法（1）</h2>
<p>
IPアドレスに関する問題を見てみましょう。<br />
以下は、2つのIPアドレスが同一のサブネットかどうかを判断する問題（出典：H28秋問33）です。
</p>
<div class="card-panel mag_h30 c-round">
<h3><span class="bold">問題（出典：H28秋問33）</span></h3>
<p>2台のPCにIPv4アドレスを割り振りたい。サブネットマスクが 255.255.255.240 のとき、両PCのIPv4アドレスが同一サブネットに所属する組合せはどれか。</p>
<p>　ア　　192.168.1.14 と 192.168.1.17<br />
　イ　　192.168.1.17 と 192.168.1.29<br />
　ウ　　192.168.1.29 と 192.168.1.33<br />
　エ　　192.168.1.33 と 192.168.1.49
</p></div>
<p>この問題を攻略するには、IPアドレスの仕組みを知っていることはもちろんですが、10進数を2進数に変換する方法を知っていなければなりません。「10進数を2で割って余りを求めることを、商が0になるまで繰り返すと、変換後の2進数が下位桁から得られる」という方法がよく知られていますが、時間がかかるので面倒でしょう。<br />
IPアドレスのドットで区切られた個々の10進数は、2進数に変換すると8ビットになります。8ビット程度なら「8ビットの2進数の桁の重みを、変換前の10進数と同じ値になるまで上位桁から順に足していき、足した桁を1にして、足さなかった桁を0にすれば、変換後の2進数が得られる」という方法の方が、時間がかからないでしょう。8ビットの2進数の桁の重みは、「128 64 32 16 8 4 2 1」です。</p>
<p>実際にやってみましょう。</p>
<p class="grey lighten-5 c-round" style="padding: 1em;">
まず、<strong>255.255.255.240というサブネットマスクを2進数に変換</strong>します。<br />
↓<br />
255は、128＋64＋32＋16＋8＋4＋2＋1＝255なので、すべての桁が1の11111111です。<br />
サブネットマスクで255はよく出てくるので、<strong>「255は11111111だ」と覚えておくとよいでしょう。</strong><br />
↓<br />
240は、128＋64＋32＋16＝240になるので、「128 64 32 16」の桁を1にして、「8 4 2 1」の桁を0にした11110000です。<br />
↓<br />
以上のことから、<strong>255.255.255.240というサブネットマスクを2進数に変換すると11111111111111111111111111110000になる</strong>ので、<strong>上位28ビットがネットワークアドレスで下位4ビットがホストアドレスだとわかります</strong>。</p>
<p>この問題では、選択肢に示された2つのIPアドレスが同一サブネットに所属するものを答えます。<br />
同一サブネットに所属するなら、ネットワークアドレスが同じなので、上位28ビットが同じであるものを答えます。<br />
どの選択に示されたIPアドレスも192.168.1まで（上位24ビットまで）が同じなので、残りの部分の上位4ビットが同じものを答えればよいのです。<br />
10進数を2進数に変換して上位4ビットを比べてみましょう。</p>
<p>選択肢アの14と17は、14が8＋4＋2＝14なので<span style="background-color: lightgray;">0000</span>1110であり、17が16＋1＝17なので<span style="background-color: lightgray;">0001</span>0001であり、両者の上位4ビットが異なります。<br />
選択肢イの17と29は、17が16＋1＝17なので<span style="background-color: lightgray;">0001</span>0001であり、29が16＋8＋4＋1＝29なので<span style="background-color: lightgray;">0001</span>1101であり、両者の上位4ビットが同じです。したがって、選択肢イが正解です。</p>
<p>念のため、他の選択肢も確認しておきましょう。</p>
<p>選択肢ウの29と33は、29が16＋8＋4＋1＝29なので<span style="background-color: lightgray;">0001</span>1101であり、33が32＋1＝33なので<span style="background-color: lightgray;">0010</span>0001であり、両者の上位4ビットが異なります。<br />
選択肢エの33と49は、33が32＋1＝33なので<span style="background-color: lightgray;">0010</span>0001であり、49が32＋16＋1＝49なので<span style="background-color: lightgray;">0011</span>0001であり、両者の上位4ビットが異なります。</p>
<h2>IPアドレスに関する問題の攻略法（2）</h2>
<p>IPアドレスに関する問題を、もう1つ見てみましょう。<br />
以下は、接続可能なホストの数を求める問題（出典：H31春問32）です。</p>
<div class="card-panel mag_h30 c-round">
<h3><span class="bold">問題（出典：H31春問32）</span></h3>
<p>192.168.0.0/23（サブネットマスク 255.255.254.0）のIPv4ネットワークにおいて、ホストとして使用できるアドレスの個数の上限はどれか。</p>
<p>ア　23　　　　　　イ　24　　　　　　ウ　254　　　　　　エ　510　　　
</p></div>
<p>この問題を攻略するには、ここでもIPアドレスの仕組みを知っていることはもちろんですが、2進数のビット数に応じて何通りのパターンを表現できるかを判断できなければなりません。</p>
<p>1ビットで表せるのは「0」「1」の2通りです。<br />
2ビットで表せるのは「00」「01」「10」「11」の4通りです。<br />
3ビットで表せるのは「000」「001」「010」「011」「100」「101」「110」「111」の8通りです。<br />
このように、2進数で表せるパターンは、1ビット増えると2倍になります。</p>
<p>問題に示されたCIDR表記は、192.168.0.0/23なので、32ビットのIPアドレスの上位23ビットがネットワークアドレスであり、残りの32－23＝9ビットがホストアドレスです。<br />
9ビットで表せるのは、2×2×2×2×2×2×2×2×2＝512通りです。</p>
<p>これらの中で、すべてが0の000000000（ネットワークアドレスを示す）と、すべてが1の111111111（ブロードキャストアドレスを示す）の2通りはホストに割り当てられないので、それらを引いた512－2＝510通りが使えます。</p>
<p>したがって、選択肢エが正解です。</p>
<hr class="mag_tp50 mag_bt50" />
<p>今回は、「IPアドレス」のポイントと攻略法を解説しました。<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://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy04/">IPアドレス｜つまづきやすいポイントと攻略法 徹底解説！</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
			</item>
		<item>
		<title>ネットワークの識別番号｜つまづきやすいポイントと攻略法 徹底解説！</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy03/</link>
		<pubDate>Mon, 26 Jan 2026 01:00:14 +0000</pubDate>
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
				<category><![CDATA[IPアドレス]]></category>
		<category><![CDATA[勉強方法]]></category>

		<guid isPermaLink="false">https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/?post_type=strategy_guide&#038;p=8807</guid>
		<description><![CDATA[<p>この連載は、基本情報技術者試験の受験者を対象としたものです。 毎回1つのテーマにしぼって、多くの受験者がつまづきやすいポイントと攻略法を解説します。 今回のテーマはネットワークの識別番号です。 ネットワークの3つの識別番 [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy03/">ネットワークの識別番号｜つまづきやすいポイントと攻略法 徹底解説！</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>
この連載は、基本情報技術者試験の受験者を対象としたものです。<br />
毎回1つのテーマにしぼって、多くの受験者がつまづきやすいポイントと攻略法を解説します。
</p>
<p>
今回のテーマは<span style="color: #4b0082;"><strong>ネットワークの識別番号</strong></span>です。
</p>
<h2>ネットワークの3つの識別番号</h2>
<p>
職場や家庭からインターネットを利用するときには、そこでやりとりされているデータで、3つのネットワークの識別番号が使われています。<br />
<strong>「MACアドレス」「IPアドレス」「TCPポート番号」</strong>です。
</p>
<div class="card-panel mag_h30 c-round">
<h3><span class="bold">MAC（Media Access Control）アドレス</span></h3>
<p class="grey lighten-5 c-round" style="padding: 1em;">MAC（Media Access Control）アドレスは、<strong>ネットワークの機能を提供するハードウェアに設定された48ビットの識別番号</strong>です。<br />
20-88-10-8A-BC-D7のように、48ビットを8ビットずつ6つの部分に分け、それぞれを2桁の16進数にしてハイフンでつなぐ形式で示されます。<br />
これらのうち、上位24ビットはハードウェアのメーカーの識別番号で、下位24ビットは製品のシリアル番号です。<br />
MACアドレスは、職場や家庭のLAN内で、ホスト（コンピュータやルータなどの通信機器）を識別するために使われます。</p>
<h3><span class="bold">IP（Internet Protocol）アドレス</span></h3>
<p class="grey lighten-5 c-round" style="padding: 1em;">IP（Internet Protocol）アドレスは、<strong>ホストに設定された32ビットの識別番号</strong>です。<br />
ホストの識別番号であることは、MACアドレスと同様ですが、MACアドレスがLAN内の識別番号であるのに対し、IPアドレスは<strong>LANから外に出たインターネットの識別番号</strong>です。<br />
110.232.196.233のように、32ビットを8ビットずつ4つの部分に分け、それぞれを10進数にしてドットでつなぐ形式で示されます。<br />
これらのうち、上位はLANの識別番号で、下位はホストの識別番号です。<br />
なお、現在は、32ビットのIPv4（IP version 4）から128ビットのIPv6（IP version 6）への移行段階にあり、両者が併用されています。IPアドレスの仕組みに関しては、次回の連載で詳しく説明します。</p>
<h3><span class="bold">TCP（Transmission Control Protocol）ポート番号</span></h3>
<p class="grey lighten-5 c-round" style="padding: 1em;">TCP（Transmission Control Protocol）ポート番号は、<strong>通信を行うプログラムに設定された16ビットの識別番号</strong>です。<br />
80や25のように、16ビット全体を10進数にして示します。よく使われるサーバ側のプログラムは、使用するプロトコルによってTCPポート番号が決められています。<br />
たとえば、HTTPプロトコルを使うWebサーバのプログラムは80番であり、SMTPプロトコルを使うメールサーバのプログラムは25番です。<br />
これらは、「well-known（よく知られた）ポート番号」と呼ばれます。クライアント側のプログラムは、ポート番号が決められておらず、1024番以降の番号が設定されます。</p>
</div>
<h2>3つの識別番号の使われ方</h2>
<p>
ネットワークの3つの識別番号が、どのように使われているかを説明しましょう。</p>
<p>たとえば、図1に示したように、パソコンのWebブラウザから、いくつかのルータを経由して、Webサーバのプログラムにデータを送るとします。<br />
パソコンから送出されたデータの宛先と差出人には、どちらも3つの識別番号があります。
</p>
<p>
宛先の識別番号は、MACアドレスがルータ1、IPアドレスがWebサーバ、TCPポート番号がWebサーバのプログラムです。<br />
差出人の識別番号は、MACアドレスがパソコン、IPアドレスがパソコン、TCPポート番号がWebブラウザです。</p>
<p>ここで、注目してほしいのは、ホストを識別するMACアドレスとIPアドレスの使われ方です。<br />
MACアドレスは、直接つながっている相手を識別するので、宛先がルータ1で差出人がパソコンです。<br />
IPアドレスは、いくつかのルータを経由してたどりつく最終的な相手を識別するので、宛先がWebサーバで差出人がパソコンです。
</p>
<div class="card-panel mag_h30 c-round">
<span style="color: #777777;">【図1】ネットワークの3つの識別番号の使われ方の例</span></p>
<figure style="display: block; width: 100%; max-width: 700px; margin: 0 auto;">
<div class="material-placeholder">
    <img src="/dokushuzemi/ec/fe/fenavi/wp-content/uploads/2026/01/795316b92fc766b0181f6fef074f03fa.jpg" alt="" style="width: 100%; height: auto; display: block;" />
  </div>
</figure>
</div>
<h2>ネットワークの階層と識別番号</h2>
<p>
<a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy02/">前回の連載</a>で、OSI基本参照モデルを取り上げました。<br />
これは、ネットワークの仕組みやプロトコルを7つの階層に分けるという考え方です。<br />
7つの階層の一番上にユーザーが乗っていて、階層を上から下にたどってデータが送信され、階層を下から上にたどってデータが受信されます。<br />
ネットワークに3つの識別番号があることを知ると、階層をたどることきに、具体的に何が行われるかを理解できます。
</p>
<p>
OSI基本参照モデルは7階層ですが、現在普及しているLANとインターネットのプロトコルは、4階層です。<br />
図2に示したように、送信時には、アプリケーションの階層でアプリケーションデータ（プログラムの独自のデータ）が作られ、TCPの階層をたどるときにTCPヘッダ（TCPポート番号で宛先と差出人を示した情報など）が付加され、IPの階層をたどるときにIPヘッダ（IPアドレスで宛先と差出人を示した情報など）が付加され、イーサネットの階層でイーサネットヘッダ（MACアドレスで宛先と差出人を示した情報など）が付加され、それらがLANの通信ケーブルから送出されます。<br />
受信時には、逆の順序でヘッダが除去され、アプリケーションデータがアプリケーションに渡されます。これが、階層をたどるときに、具体的に行われていることです。
</p>
<div class="card-panel mag_h30 c-round">
<span style="color: #777777;">【図2】階層をたどるとヘッダの付加と除去が行われる</span></p>
<figure style="display: block; width: 100%; max-width: 700px; margin: 0 auto;">
<div class="material-placeholder">
    <img src="/dokushuzemi/ec/fe/fenavi/wp-content/uploads/2026/01/2b530e80c7d0de90885e285c5d798063.jpg" alt="" style="width: 100%; height: auto; display: block;" />
  </div>
</figure>
</div>
<h2>ネットワークの識別番号に関する問題の攻略法（1）</h2>
<p>
ネットワークの識別番号に関する問題を見てみましょう。<br />
以下は、MACアドレスの構成の問題（出典：H24秋午前問33）です。
</p>
<div class="card-panel mag_h30 c-round">
<h3><span class="bold">問題（出典：H24秋問33）</span></h3>
<p>ネットワーク機器につけられているMACアドレスの構成として、適切な組合せはどれか。</p>
<figure style="display: block; width: 100%; max-width: 400px; margin: 0 auto;">
<div class="material-placeholder">
    <img src="/dokushuzemi/ec/fe/fenavi/wp-content/uploads/2026/01/d4f33bc90e8e7e8d5a832542327d59bc.jpg" alt="" style="width: 100%; height: auto; display: block;" />
  </div>
</figure>
</div>
<p>「ええっ、こんな問題が出るの！」と思われるかもしれませんが、実際に出ているのですから練習しておきましょう。<br />
この記事の冒頭で説明したように、MACアドレスの上位24ビットはハードウェアのメーカーの識別番号で、下位24ビットは製品のシリアル番号です。ところが、問題の選択肢には、これらの言葉がありません。<br />
これは、IT業界に限ったことではありませんが、たいがいの事物には、いくつかの別名があるものなのです。</p>
<p>こういうときは、用語の意味から素直に判断してください。<br />
それが攻略法です。ハードウェアのメーカーの識別番号の別名は、「エリア（地域）ID」より「ベンダ（販売者）ID」の方が適切でしょう。<br />
製品のシリアル番号の別名は、「IPアドレス」ではなく「固有製造番号」でしょう。</p>
<p>したがって、選択肢エが正解です。<br />
なお、ベンダIDの別名として示されている「OUI」は、Organizationally Unique Identifierの略語であり、直訳すると「組織の固有の識別子」という意味です。</p>
<h2>ネットワークの識別番号に関する問題の攻略法（2）</h2>
<p>ネットワークの識別番号に関する問題を、もう1つ見てみましょう。<br />
以下は、ネットワークでやりとりされるデータに付加される情報の問題（出典：H25秋午前問37）です。</p>
<div class="card-panel mag_h30 c-round">
<h3><span class="bold">問題（出典：H25秋午前問37）</span></h3>
<p>1個のTCPパケットをイーサネットに送出したとき、イーサネットフレームに含まれる宛先情報の、送出順序はどれか。</p>
<p>ア　　宛先IPアドレス，宛先MACアドレス，宛先ポート番号<br />
イ　　宛先IPアドレス，宛先ポート番号，宛先MACアドレス<br />
ウ　　宛先MACアドレス，宛先IPアドレス，宛先ポート番号<br />
エ　　宛先MACアドレス，宛先ポート番号，宛先IPアドレス
</p></div>
<p>この問題の攻略法は、先ほどの図2の内容から、データがネットワークの階層をたどるときのイメージをしっかりつかむことです。<br />
「TCPパケット（TCPセグメントという別名もあります）」とは、ネットワークの階層をTCPまでたどったデータのことであり、「アプリケーションデータ」に「TCPヘッダ」が付加されて、「TCPヘッダ」「アプリケーションデータ」という形式になっています。<br />
「イーサネットフレーム」とは、ネットワークの階層をイーサネットまでたどったデータのことであり、TCPパケットに「IPヘッダ」と「イーサネットヘッダ」が付加されて、「イーサネットヘッダ」「IPヘッダ」「TCPヘッダ」「アプリケーションデータ」という形式になっています。</p>
<p>宛先と差出人の識別情報は、イーサネットヘッダがMACアドレス、IPヘッダがIPアドレス、TCPヘッダがTCPポート番号なので、「イーサネットヘッダ」「IPヘッダ」「TCPヘッダ」「アプリケーションデータ」の中にある宛先情報は、「宛先MACアドレス」「宛先IPアドレス」「宛先TCPポート番号」「アプリケーションデータ」です。</p>
<p>したがって、選択肢ウが正解です。<br />
なお、この問題では、TCPポート番号を単に「ポート番号」と呼んでいます。</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://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy03/">ネットワークの識別番号｜つまづきやすいポイントと攻略法 徹底解説！</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
			</item>
		<item>
		<title>OSI基本参照モデル｜つまづきやすいポイントと攻略法 徹底解説！</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy02/</link>
		<pubDate>Fri, 19 Dec 2025 02:00:07 +0000</pubDate>
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
				<category><![CDATA[科目 A]]></category>

		<guid isPermaLink="false">https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/?post_type=strategy_guide&#038;p=8775</guid>
		<description><![CDATA[<p>この連載は、基本情報技術者試験の受験者を対象としたものです。 毎回1つのテーマにしぼって、多くの受験者がつまづきやすいポイントと攻略法を解説します。 今回のテーマはOSI基本参照モデルです。 OSI基本参照モデルとは？  [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy02/">OSI基本参照モデル｜つまづきやすいポイントと攻略法 徹底解説！</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>この連載は、基本情報技術者試験の受験者を対象としたものです。<br />
毎回1つのテーマにしぼって、多くの受験者がつまづきやすいポイントと攻略法を解説します。</p>
<p>今回のテーマは<span style="color: #4b0082;"><strong>OSI基本参照モデル</strong></span>です。</p>
<h2>OSI基本参照モデルとは？</h2>
<p><span style="background-color: lightyellow;">「OSI（Open Systems Interconnection）基本参照モデル」は、ネットワークの機能やプロトコル（通信規約）を、7つの階層に分けて整理するというモデル（考え方）です。</span><br />
それぞれの階層は、「レイヤ1」から「レイヤ7」という番号で呼ぶ場合と、「物理層」から「応用層」という名称で呼ぶ場合があります。</p>
<p>図1にOSI基本参照モデルのイメージを示します。<br />
送信者が送ったデータが7つの階層を上から下にたどって送出され、そのデータが7つの階層を下から上にたどって受信者に届くというイメージです。</p>
<div class="card-panel mag_h30 c-round">
<span style="color: #777777;">【図1】OSI基本参照モデルのイメージ</span></p>
<figure style="display: block; width: 100%; max-width: 800px; margin: 0 auto;">
<div class="material-placeholder">
    <img src="/dokushuzemi/ec/fe/fenavi/wp-content/uploads/2025/12/795316b92fc766b0181f6fef074f03fa.jpg" alt="" style="width: 100%; height: auto; display: block;" />
  </div>
</figure>
</div>
<p>図2に、OSI基本参照モデルの各階層の機能を示します。</p>
<div class="card-panel mag_h30 c-round">
<span style="color: #777777;">【図2】OSI基本参照モデルの各階層の機能</span></p>
<figure style="display: block; width: 100%; max-width: 800px; margin: 0 auto;">
<div class="material-placeholder">
    <img src="/dokushuzemi/ec/fe/fenavi/wp-content/uploads/2025/12/2b530e80c7d0de90885e285c5d798063.jpg" alt="" style="width: 100%; height: auto; display: block;" />
  </div>
</figure></div>
<p>多くの受験者がつまづきやすいポイントは、7つも階層があるので機能を覚えられないということです。<br />
<span style="color: #4b0082;"><strong>各階層の機能を覚えるポイントは、<span style="background-color: lightyellow;">下から上に向かって、階層の名称と機能を結び付けることです。</strong></span></span><br />
次の順序で覚えると良いでしょう。</p>
<p class="grey lighten-5 c-round" style="padding: 1em;">
まず、何でつなぐかを取り決め（<span style="color: #4b0082;"><strong>物理層</strong></span>）<br />
　↓<br />
次に、同じネットワーク（LAN）内で通信を行い（<span style="color: #4b0082;"><strong>データリンク層</strong></span>）<br />
　↓<br />
次に、ネットワークと他のネットワークを中継するインターネットに出て（<span style="color: #4b0082;"><strong>ネットワーク層</strong></span>）<br />
　↓<br />
次に、パケットを確実に届け（<span style="color: #4b0082;"><strong>トランスポート層</strong></span>）<br />
　↓<br />
次に、データの形式を取り決め（<span style="color: #4b0082;"><strong>プレゼンテーション層</strong></span>）<br />
　↓<br />
最後に、ユーザから見た使い方を取り決める（<span style="color: #4b0082;"><strong>応用層</strong></span>）
</p>
<h2>OSI基本参照モデルとプロトコルの対応</h2>
<p>図3に、OSI基本参照モデルと現在広く普及しているのプロトコルの対応を示します。<br />
プロトコルの中には、OSI基本参照モデルの複数の階層の機能を持つものがあるので、<span style="color: #4b0082;">LANとインターネットのプロトコルは、7階層ではなく4階層</span>です。</p>
<div class="card-panel mag_h30 c-round">
<span style="color: #777777;">【図3】OSI基本参照モデルと現在広く普及しているのプロトコルの対応</span></p>
<figure style="display: block; width: 100%; max-width: 800px; margin: 0 auto;">
<div class="material-placeholder">
    <img src="/dokushuzemi/ec/fe/fenavi/wp-content/uploads/2025/12/c8856789ec11ab8b1013037cef6929f9-1.jpg" alt="" style="width: 100%; height: auto; display: block;" />
  </div>
</figure>
</div>
<p>有線LANのイーサネットと無線LANのWi-Fiは、LANのプロトコルですから、物理層とデータシンク層です。<br />
IPは、IPアドレスを参照して中継するプロトコルなので、ネットワーク層です。<br />
TCPとUDPは、パケットを目的地まで届けるプロトコルなので、トランスポート層です。<br />
Webページ閲覧のHTTPやメール転送のSMTPなどは、使用しているプログラムごとのプロトコルであり、セッション層、プレゼンテーション層、応用層にまたがります。</p>
<h2>OSI基本参照モデルとLAN間接続装置の対応</h2>
<p>図4に示したように、OSI基本参照モデルとLAN間接続装置を対応付けることもできます。<br />
<span style="background-color: lightyellow;"><span style="color: #4b0082;">よく出題される装置は、「<strong>リピータ</strong>」「<strong>ブリッジ</strong>」「<strong>ルータ</strong>」「<strong>ゲートウェイ</strong>」です。</span></span></p>
<div class="card-panel mag_h30 c-round">
<span style="color: #777777;">【図4】OSI基本参照モデルとLAN間接続装置の対応</span></p>
<figure style="display: block; width: 100%; max-width: 600px; margin: 0 auto;">
<div class="material-placeholder">
    <img src="/dokushuzemi/ec/fe/fenavi/wp-content/uploads/2025/12/3a4f695a458cb0ac0aceaa2eb13ac2dd-1.jpg" alt="" style="width: 100%; height: auto; display: block;" />
  </div>
</figure>
</div>
<p>リピータは、減衰した信号を回復して伝送距離を延ばす装置です。<br />
ブリッジは、LANにおける識別情報であるMACアドレスを参照して、LAN内でデータを中継します。<br />
ルータは、インターネットにおける識別情報であるIPアドレスを参照して、ネットワーク間でデータを中継します。<br />
ゲートウェイは、複数の階層にまたがって、プロトコルの変換を行います。</p>
<h2>OSI基本参照モデルに関する問題の攻略法</h2>
<p>OSI基本参照モデルに関する問題を見てみましょう。<br />
以下は、OSI基本参照モデルの階層の機能の問題（出典：H24秋問34）です。</p>
<div class="card-panel mag_h30 c-round">
<h3><span class="bold">問題（出典：H24秋問34）</span></h3>
<p>OSI基本参照モデルにおいて、エンドシステム間のデータ伝送の中継と経路制御の機能をもつ層はどれか。</p>
<p>ア　セション層　　　イ　データリンク層　　　ウ　トランスポート層　　　エ　ネットワーク層
</p></div>
<p>この問題の攻略法は、OSI基本参照モデルの各階層の名称と機能を結び付けることです。<br />
以下に覚え方の例を示しますが、自分流に工夫してください。</p>
<p>この問題では、「エンドシステム間のデータ伝送の中継」なので、ネットワーク層が適切であり、選択肢エが正解です。</p>
<div class="card-panel mag_h30 c-round">
<span style="color: #777777;"><strong>●覚え方の例</strong></span></p>
<p><span style="color: #4b0082;">・この上にユーザーが乗っているので「応用層」と覚える。<br />
・プレゼンという言葉からデータ「表現」をイメージして「プレゼンテーション層」と覚える。<br />
・セッションIDで利用者を識別するから「セッション層」と覚える。<br />
・トランスポートという言葉から「運送屋さん」をイメージして、運送屋さんだからパケット（小包）を確実に届けるので「トランスポート層」と覚える。<br />
・ネットワーク間を中継するので「ネットワーク層」と覚える。<br />
・リンクは「つながっている」という意味なので、直接つながっているLAN内の通信を行うので「データリンク層」と覚える。<br />
・物理的に何でつなぐのかを取り決めるので「物理層」と覚える。</span>
</div>
<p>OSI基本参照モデルに関する問題を、もう1つ見てみましょう。<br />
以下は、OSI基本参照モデルの階層とLAN間接続装置を対応付ける問題（出典：H26春問30）です。</p>
<div class="card-panel mag_h30 c-round">
<h3><span class="bold">問題（出典：H26春問30）</span></h3>
<p>OSI基本参照モデルの各層で中継する装置を、物理層で中継する装置、データリンク層で中継する装置、ネットワーク層で中継する装置の順に並べたものはどれか。</p>
<p>ア　ブリッジ、リピータ、ルータ<br />
イ　ブリッジ、ルータ、リピータ<br />
ウ　リピータ、ブリッジ、ルータ<br />
エ　リピータ、ルータ、ブリッジ
</p></div>
<p>この問題の攻略法は、<span style="color: #4b0082;">LAN間接続装置の名称と機能を結び付けること</span>です。<br />
以下に覚え方の例を示しますが、自分流に工夫してください。</p>
<p>この問題では、「物理層、データリンク層、ネットワーク層」の順ですから、選択肢ウの「リピータ、ブリッジ、ルータ」が正解です。</p>
<div class="card-panel mag_h30 c-round">
<span style="color: #777777;"><strong>●覚え方の例</strong></span></p>
<p><span style="color: #4b0082;">・「ルータ」は、ネットワークの間の中継（ルーティング）を行うのでネットワーク層の装置であると覚える。<br />
・「ブリッジ」は、LANをいくつかのグループに分割する橋（ブリッジ）となるのでデータリンク層の装置であると覚える。<br />
・「リピータ」は、減衰した信号を物理的に回復してリピートするので物理層の装置であると覚える。</span>
</div>
<hr class="mag_tp50 mag_bt50" />
<p>今回は、「OSI基本参照モデル」のポイントと攻略法を解説しました。<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://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy02/">OSI基本参照モデル｜つまづきやすいポイントと攻略法 徹底解説！</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
			</item>
		<item>
		<title>関係データベースの正規化｜つまづきやすいポイントと攻略法 徹底解説！</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy01/</link>
		<pubDate>Wed, 26 Nov 2025 04:55:17 +0000</pubDate>
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
				<category><![CDATA[科目 A]]></category>

		<guid isPermaLink="false">https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/?post_type=strategy_guide&#038;p=8762</guid>
		<description><![CDATA[<p>この連載は、基本情報技術者試験の受験者を対象としたものです。 毎回1つのテーマにしぼって、多くの受験者がつまづきやすいポイントと攻略法を解説します。 今回のテーマは関係データベースの正規化です。 関係データベースの正規化 [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy01/">関係データベースの正規化｜つまづきやすいポイントと攻略法 徹底解説！</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目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>関係データベースは、表形式でデータを格納します。<br />
関係データベースの<span style="background-color: lightyellow;"><span style="color: #4b0082;"><strong>正規化（normalization）とは、表を作成する際に、無駄や問題が生じないようにすること</strong></span></span>です。</p>
<p>理論上、無駄や問題が生じない状態の表を「第3正規形」と呼びます。<br />
第3があるのですから、第2や第1などもあります。これらに関しては、後で解説します。<br />
第3正規形の表は、「主キー（表のレコードを一意に識別できるユニークな値を持つ列）」があって、その他のすべての列が主キーに従属する（主キーによって特定できる）表です。</p>
<p>たとえば、図1に示した「社員表」は、「社員番号」が主キーであり、その他の「氏名」「性別」「生年月日」「部署番号」が主キーに従属しているので、第3正規形です。<br />
この記事では、列名の下に下線を引くことで、主キーであることを示します。</p>
<div class="card-panel mag_h30 c-round">
<span style="color: #777777;">【図1】すべての列が主キーに従属していれば第3正規形である</span></p>
<p>社員表</p>
<table style="border-collapse: collapse; border: 2px solid #333; width: 100%; max-width: 600px;">
<tr>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;"><u>社員番号</u></th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">　氏名　　</th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">　性別　　</th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">生年月日</th>
<th style="padding: 6px; text-align: center;">部署番号</th>
</tr>
</table>
</div>
<p>それに対して、図2に示した「社員表」には、「社員番号」に従属しない「商品名」があるので、第3正規形ではありません。<br />
このように説明すると難しく感じるかもしれません。<br />
簡単に言えば、<span style="color: #4b0082;"><strong>「社員表には、社員に関する情報だけがある」という状態になっていれば第3正規形です。</strong></span></p>
<div class="card-panel mag_h30 c-round">
<span style="color: #777777;">【図2】主キーに従属していない列があるので第3正規形ではない</span></p>
<p>社員表</p>
<table style="border-collapse: collapse; border: 2px solid #333; width: 100%; max-width: 600px;">
<tr>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;"><u>社員番号</u></th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">　氏名　　</th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">　性別　　</th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">生年月日</th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">部署番号</th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;"> 商品名 　</th>
</tr>
</table>
</div>
<h2>非正規形と第1正規形</h2>
<p>先ほど説明したように、「社員表には、社員に関する情報だけがある」という状態になっていれば、第3正規形なのですが、そうなっていない状態が、理論上「非正規形」「第1正規形」「第2正規形」に分類されています。</p>
<h4>●非正規形</h4>
<p>非正規形とは、同じ情報の列が繰り返されている（複数ある）状態です。<br />
たとえば、図3に示した「社員表」には、「所有資格」という列が2つあります。<br />
これが、繰り返しであり、この「社員表」は、繰り返しがあるので非正規形です。</p>
<div class="card-panel mag_h30 c-round">
<span style="color: #777777;">【図3】繰り返しがあるので非正規形である</span></p>
<p>社員表</p>
<table style="border-collapse: collapse; border: 2px solid #333; width: 100%; max-width: 600px;">
<tr>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;"><u>社員番号</u></th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">　氏名　　</th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">　性別　　</th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">生年月日</th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">所有資格</th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">所有資格</th>
</tr>
</table>
</div>
<h4>●第1正規形</h4>
<p>理論上、繰り返しは、よろしくないことです。<br />
繰り返しを排除すると、正規化のステップが1つ上がって第1正規形になります。<br />
図4は、図3の「社員表」の「所有資格」を1つだけにして、繰り返しを排除したものです。</p>
<div class="card-panel mag_h30 c-round">
<span style="color: #777777;">【図4】繰り返しを排除すると第1正規形になる</span></p>
<p>社員表</p>
<table style="border-collapse: collapse; border: 2px solid #333; width: 100%; max-width: 600px;">
<tr>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;"><u>社員番号</u></th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">　氏名　　</th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">　性別　　</th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">生年月日</th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">所有資格</th>
</tr>
</table>
</div>
<h2>部分従属性と第2正規形</h2>
<p>第2正規形とは、第1正規形（繰り返しがない）を満たし、さらに部分従属性を排除した状態です。<br />
部分従属性とは、複合キー（複数の列をセットにして主キーとしたもの）の一部分に従属した列があることです。</p>
<h4>●部分従属性</h4>
<p>たとえば、図5の「社員表」では、「社員番号」と「部署番号」が複合キーになっています。<br />
「所属年数（社員が部署に所属した年数）」は、「社員番号」と「部署番号」の両方がそろって特定できるものですが、「氏名」は「社員番号」つまり複合キーの一部分で特定できます。これが、部分従属性です。</p>
<div class="card-panel mag_h30 c-round">
<span style="color: #777777;">【図5】部分従属性がある表の例</span></p>
<p>社員表</p>
<table style="border-collapse: collapse; border: 2px solid #333; width: 100%; max-width: 600px;">
<tr>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;"><u>社員番号</u></th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;"><u>部署番号</u></th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">　氏名　　</th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">所属年数</th>
</tr>
</table>
</div>
<h4>●第2正規形</h4>
<p>理論上、部分従属性は、よろしくないことです。</p>
<p>部分従属性を排除すると、正規化のステップが1つ上がって第2正規形になります。<br />
部分従属性を排除するには、表を分割することになります。</p>
<p>図5の「社員表」では、「社員番号」で「氏名」が特定できるのですから、図6のように、「社員番号」を主キーとして「氏名」という列がある「社員表」と、「社員番号」と「部署番号」を複合キーとして「所属年数」という列がある「所属年数表」に分割します。</p>
<div class="card-panel mag_h30 c-round">
  <span style="color: #777777;">【図6】表を分割して部分従属性を排除する</span></p>
<p>  社員表</p>
<table style="
    border-collapse: collapse;
    border: 2px solid #333;
    display: inline-table;
    width: auto !important;
    max-width: none !important;
  "></p>
<tr>
<th style="border-right: 1px solid #333; padding: 4px 27px; text-align: center;">
        <u>社員番号</u>
      </th>
<th style="border-right: 1px solid #333; padding: 4px 27px; text-align: center;">
        　氏名　
      </th>
</tr>
</table>
<p>  所属年数表</p>
<table style="
    border-collapse: collapse;
    border: 2px solid #333;
    display: inline-table;
    width: auto !important;
    max-width: none !important;
  "></p>
<tr>
<th style="border-right: 1px solid #333; padding: 4px 27px; text-align: center;">
        <u>社員番号</u>
      </th>
<th style="border-right: 1px solid #333; padding: 4px 27px; text-align: center;">
        <u>部署番号</u>
      </th>
<th style="border-right: 1px solid #333; padding: 4px 27px; text-align: center;">
        所属年数　
      </th>
</tr>
</table>
</div>
<h2>推移従属性と第3正規形</h2>
<p>第3正規形とは、第2正規形（繰り返しがない、部分従属性がない）を満たし、さらに推移従属性を排除した状態です。<br />
推移従属性とは、主キーではない列に従属した列があることです。</p>
<h4>●推移従属性</h4>
<p>たとえば、図7の「社員表」は、<strong>「社員番号」が主キーですが、「部署名」は、主キーではない「部署番号」で特定できます。</strong></p>
<p>これが、推移従属性です。<br />
「社員番号」で「部署番号」が特定でき、「部署番号」から移り行く（推移する）ように「部署名」を特定できるので、推移従属性と呼ぶのです。</p>
<div class="card-panel mag_h30 c-round">
<span style="color: #777777;">【図7】推移従属性がある表の例</span></p>
<p>社員表</p>
<table style="border-collapse: collapse; border: 2px solid #333; width: 100%; max-width: 600px;">
<tr>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;"><u>社員番号</u></th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">　氏名　　</th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">　性別　　</th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">生年月日</th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;">部署番号</th>
<th style="border-right: 1px solid #333; padding: 6px; text-align: center;"> 部署名　 </th>
</tr>
</table>
</div>
<h4>●第3正規形</h4>
<p>理論上、推移従属性は、よろしくないことです。<br />
推移従属性を排除すると、正規化のステップが1つ上がって第3正規形になります。</p>
<p>推移従属性を排除するには、表を分割することになります。<br />
図7の「社員表」では、「部署番号」で「部署名」が特定できるのですから、図8のように、「社員番号」を主キーとして「氏名」「性別」「生年月日」「部署番号」という列がある「社員表」と、「部署番号」を主キーとして「部署名」という列がある「部署表」に分割します。</p>
<div class="card-panel mag_h30 c-round">
  <span style="color: #777777;">【図8】表を分割して推移従属性を排除する</span></p>
<p>  社員表</p>
<table style="
    border-collapse: collapse;
    border: 2px solid #333;
    display: inline-table;
    width: auto !important;
    max-width: none !important;
  "></p>
<tr>
<th style="border-right: 1px solid #333; padding: 4px 27px; text-align: center;">
        <u>社員番号</u>
      </th>
<th style="border-right: 1px solid #333; padding: 4px 27px; text-align: center;">
        　氏名　
      </th>
<th style="border-right: 1px solid #333; padding: 4px 27px; text-align: center;">
        　性別　
      </th>
<th style="border-right: 1px solid #333; padding: 4px 27px; text-align: center;">
        生年月日
      </th>
<th style="border-right: 1px solid #333; padding: 4px 27px; text-align: center;">
        部署番号
      </th>
</tr>
</table>
<p>  部署表</p>
<table style="
    border-collapse: collapse;
    border: 2px solid #333;
    display: inline-table;
    width: auto !important;
    max-width: none !important;
  "></p>
<tr>
<th style="border-right: 1px solid #333; padding: 4px 27px; text-align: center;">
        <u>部署番号</u>
      </th>
<th style="border-right: 1px solid #333; padding: 4px 27px; text-align: center;">
        <u> 部署名 </u>
      </th>
</tr>
</table>
</div>
<h2>関係データベースの正規化のまとめ</h2>
<p>ここまでの説明をまとめると、非正規形、第1正規形、第2正規形、第3正規形は、以下のように定義できます。<br />
簡単に言えば、<span style="background-color: lightyellow;"><span style="color: #4b0082;"><strong>よろしくないこととして、繰り返し、部分従属性、推移従属性があり、それらがすべて排除されていれば、第3正規形である</strong></span></span>ということです。<br />
「社員表には、社員に関する情報だけがある」という状態になっていれば、繰り返し、部分従属性、推移従属性がないはずですが、念のためチェックしましょう。</p>
<div class="card-panel mag_h30 c-round">
・非正規形・・・繰り返しがある。<br />
・第1正規形・・・繰り返しが排除されている。<br />
・第2正規形・・・第1正規形を満たし、さらに部分従属性が排除されている。<br />
・第3正規形・・・第2正規形を満たし、さらに推移従属性が排除されている。
</div>
<p>つまづきやすいポイントと言うか、勘違いしないでほしいのは、非正規形→第1正規形→第2正規形→第3正規形の順に、よろしくないことを徐々に排除していくのではなく、<span style="color: #4b0082;"><strong>表の状態に非正規形、第1正規形、第2正規形、第3正規形という分類があるということ</strong></span>です。</p>
<p>理論上は、第3正規形が無駄や問題が生じない状態なのですが、表を分割すると、データをたどるのに時間がかかることになるので、処理速度を優先する場合は、第3正規形ではない状態で、システムを運用することもあります。<br />
これまで、何度も「理論上」と断ってきたのは、<span style="color: #4b0082;"><strong>実際の現場では、理論に従わないこともある</strong></span>からです。</p>
<h2>関係データベースの正規化に関する問題の攻略法</h2>
<p>関係データベースの正規化に関する問題を見てみましょう。<br />
以下は、選択肢に示された表が第3正規形であるかどうかを判断する問題（出典：H21春問32）です。</p>
<div class="card-panel mag_h30 c-round">
<h3><span class="bold">問題（出典：H21春問32）</span></h3>
<p>&#8220;従業員&#8221;表を第3正規形にしたものはどれか。ここで、下線部は主キーを表す。</p>
<p>従業員（従業員番号、従業員氏名、｛技能コード、技能名、技能経験年数｝）<br />
　　　　　　　　　　　　　　　　　　　　　　　　　　　　　（｛ ｝は繰返しを表す）</p>
<figure style="display: block; width: 100%; max-width: 400px; margin: 0 auto;">
<div class="material-placeholder">
    <img src="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/wp-content/uploads/2025/11/25486ad4e541ea9a04632f8c28ba14f8.jpg" alt="" style="width: 100%; height: auto; display: block;" />
  </div>
</figure>
</div>
<p><span style="color: #4b0082;"><strong>第3正規形であることは、<span style="background-color: lightyellow;">主キーがあって、その他のすべての列が主キーに従属すること</span>および<span style="background-color: lightyellow;">繰り返し、部分従属性、推移従属性がないこと</span>で判断します。</strong></span><br />
選択肢に示された表を1つずつチェックしてみましょう。これが、この問題の攻略法です。<br />
　</p>
<p>・選択肢ア<br />
上段の表は、「従業員番号」という主キーによって「従業員氏名」を特定できるので、第3正規形です。<br />
下段の表は、「技能コード」で「技能名」を特定できますが、「技能経験年数」を特定できないので、第3正規形ではありません。</p>
<p>・選択肢イ<br />
上段の表は、「従業員番号」と「技能コード」が複合キーであり、「技能経験年数」は「従業員番号」と「技能コード」の両方で特定できますが、「従業員氏名」は「従業員番号」だけで特定できます。<br />
これは、部分従属性です。したがって、この表は、第3正規形ではありません。<br />
下段の表は、「技能コード」という主キーで「技能名」を特定できるので第3正規形です。</p>
<p>・選択肢ウ<br />
上段の表は、「従業員番号」と「技能コード」の複合キーで「技能経験年数」を特定できるので、第3正規形です。<br />
中段の表は、「従業員番号」という主キーで「従業員氏名」を特定できるので、第3正規形です。<br />
下段の表は、「技能コード」という主キーで「技能名」を特定できるので、第3正規形です。</p>
<p>・選択肢エ<br />
上段の表は、「従業員番号」と「技能コード」の複合キーだけの表です。この表が何の役に立つのかはわかりませんが、理論上は第3正規形です。<br />
中段の表は、「従業員番号」という主キーで「従業員氏名」を特定できますが、「技能経験年数」を特定できないので、第3正規形ではありません。<br />
下段の表は、「技能コード」という主キーで「技能名」を特定できるので、第3正規形です。</p>
<p>以上のことから、すべての表が第3正規形になっている選択肢ウが正解です。</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://www.seplus.jp/dokushuzemi/ec/fe/fenavi/strategy_guide/fe_strategy01/">関係データベースの正規化｜つまづきやすいポイントと攻略法 徹底解説！</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
			</item>
	</channel>
</rss>
