Lesson 2

テクノロジ系

Lesson 2 Chapter 1
基礎理論

基本情報技術者試験についてなんとなく分かってきたでしょうか。
Lesson2では実際に試験範囲の学習を進めていきます。

基本情報技術者試験は大きく分けると、テクノロジ系、マネジメント系、ストラテジ系の3つの分野に分けることができるとLesson1で説明しました。
まずは、1つ目の『テクノロジ系』について学習していきましょう。

テクノロジ系では、基礎理論、コンピュータシステム、技術要素、開発技術、ソフトウェア開発管理技術のような、IT技術に関することを中心に学習します。

離散数学

まずは、基礎理論の中の『離散数学』について学習していきます。

離散数学は数値のように連続的ではなく、整数やグラフのように個別的に扱われる数学を指します。コンピュータの世界では、コンピュータが命令を送ったり、データを管理するなど様々なところで離散数学が使われています。

また、コンピュータはオンの状態を『1』、オフの状態を『0』としか理解することができません。

source5.png

そのため、コンピュータが文字や数字などを表す際は、オンであれば『1』、オフであれば『0』の無数の『0』と『1』を理解して文字や数字等を表しています。 このような特徴から、コンピュータは2進数と深い関係があります。

2進数

『0』と『1』の2個の数字を使って数を表すもの

なぜコンピューターは2進数と関係があるのでしょうか?

それは、コンピューターがICという電子部品から構成されているからです。CPUとかメモリーも実体はICです。 ICにはピンが複数ついており、そのピンに電気によってデータなどが与えられることでコンピューターは動いています。 ピンでは0Vか5Vしか扱えず、それがそれぞれ0と1を表しているためです。

この2進数のように離散数学を学習することは、コンピュータを理解するうえで必要な知識となります。

離散数学を学習する大切さが分かったところで、もう少し2進数について学習していきます。

まずは、2進数をイメージしやすくするために、もっと身近な『10進数』をみてみましょう。

10進数とは、0~9の10個の数字を使って数を表すことです。

source3.png

なので、私たちが日常生活で使用しているのは10進数になります。当たり前のことですが、10進数で『10』を表したい場合は『10』、『100』を表したい場合は、『100』と表すことができます。

では、2進数はどうでしょうか?
2進数は『0』と『1』の2個の数字のみで数を表しますが、『0』と『1』だけでどのように『10』や『100』などの数字を表すのでしょうか。実は10進数と考え方は同じです。
私たちは、0~9までの数字で『10』を表すときに桁を繰り上げて『10』という数字を表しています。

2進数でも考え方は同じです。2進数では、2ずつ桁を繰り上げていきます。

source4.png

このように表すことで、10進数と同様に大きな数字も表すことができます。

また、コンピュータの世界で使われる『n進数』として、他には8進数と16進数などがありますが、8進数も16進数も考え方は同じです。

8進数の場合は、0~7の数字を使います。

source6.png

16進数では、0~9、A~Fを使って数字を表します。

source7.png

このように、8進数でも16進数でも、10進数のように繰り上がっていくということを覚えておきましょう。

ちなみにコンピュータの世界で、2進数の他に8進数と16進数などが使われるのには理由があります。 その理由は、2進数だけではあまりにも桁数が多くなってしまうからです。 そのため、2進数から変換しやすい2の3乗の8進数、2の4乗の16進数がコンピュータの世界では使われています。

ここまで理解できたところで、次は試験に出やすい『基数変換』を学んでいきます。

基数変換

まず、基数とは上記で学習したn進数の『n』にあたる部分です。 その基数を他の基数に変換することを基数変換といいます。基数変換が理解できると、例えば2進数で表している数字を10進数で表したりすることができるようになります。

それでは、実際に2進数から10進数に変換してみましょう。
まず、n進数には、桁の重みというものがあります。その桁の重みを掛け算して合計することで、簡単に10進数に変換することができます。

桁の重みは以下の計算で出すことができます。

整数の1桁目はnの0乗
整数の2桁目はnの1乗
整数の3桁目はnの2乗…
小数点第一位はnの-1乗
小数点第二位はnの-2乗
小数点第三位はnの-3乗…

source8.png

上記から、2進数の各桁の重みは、『n』に『2』を当てはめるのでこのようになります。

source9.png

これだけでは分かりづらいので、実際に2進数の『100.01』という数値を例に10進数に変換してみましょう。

2進数の数値『100.01』を桁の重みで掛け算して、合計することで10進数に変換することができます。

source10.png

上記の計算から2進数の数値『100.01』は、10進数では『4.25』であることがわかりました。

続いて、10進数からn進数に基数変換する方法を学んでみましょう。
10進数からn進数に基数変換するには、上記で学んだ桁の重みを使っていきます。
10進数の数値を桁の重みを使って順番に割り算していくと、商の部分がn進数の数値になります。

先ほどの10進数の数値『4.25』を、2進数に変換してみましょう。

source11.png

上記の計算から10進数の数値『4.25』は、2進数では『100.01』であることがわかりました。

先ほどと比べると難しいように感じますが、最初は解説を見ながらでも問題を解くことで理解ができると思うので、ここではしっかりと理解しなくても大丈夫です。

次に、2進数から8進数、2進数から16進数へ変換する方法を学んでみましょう。
まず、2進数から8進数に変換するには、2進数を3桁ごとに区切り、桁の重みを使って計算します。

先ほどの2進数の数値『100.01』を3桁ごとに区切り、桁の重みを使って計算してみましょう。3桁ごとに区切り、足りなければ『0』を入れるのがポイントです。

source12.png

8進数の場合、『4.2』と出すことができました。

また、2進数から16進数に変換するのも同じ考え方で、2進数を4桁ごとに区切り計算することで、16進数の数値を出すことができます。この変換方法についても、問題を解いて慣れていきましょう。

応用数学

続いて、応用数学について学んでいきます。

応用数学と聞くと難しい数学をイメージされるかもしれませんが、内容としては『確率』や『順列』など馴染みのあるものが含まれています。
まずは応用数学の中でも過去に数問出題されている『確率』について学んでいきます。

確率は以下の公式で求めることができます。

source13.png

イメージしづらいと思うので、コインの表と裏で考えてみましょう。
コインで表が出る確率を求めていきます。
コインで表が出る場合の数は1通り、起こり得る全ての場合の数は2通り(表と裏)です。

先ほどの式に当てはめると以下のようになります。

source14.png

よって、コインで表が出る確率は、1/2となります。
確率について理解できたら、次は『順列』について学んでいきます。
順列の公式は、n個の中からr個を取り出して並べるときに使います。

公式は以下のようになります。

source15.png

これも公式だけだと分かりづらいので、実際に当てはめてみましょう。

例えば、トランプのJ、Q、Kの中から2枚取り出して並べる組み合わせは、トランプのJ、Q、Kという3枚(n)の中から2枚(r)を取り出して並べるので以下のようになります。

source16.png

上記の式から6通りと求めることができました。

順列が理解できたところで、続いて『組み合わせ』を学んでいきます。
n個の中から、r個を取り出した際の組み合わせの公式をみてみましょう。

source17.png

先ほどのように、トランプのJ、Q、Kの中から2枚取り出した際は、トランプのJ、Q、Kという3枚(n)の中から2枚(r)を取り出すので以下のようになります。

source18.png

上記の式から3通りと求めることができました。
先ほどの順列との違いは、組み合わせは取り出したあとに並べないので、JとQ、QとJのように同じペアはカウントしない点です。

source19.png

順列と組み合わせの違いは理解できたでしょうか。
次は情報に関する理論を学んでいきます。

情報に関する理論

情報に関する理論では、情報がどのように伝達されて処理されるかのような、あらゆる情報にまつわる理論が試験範囲となっています。
ここでは、情報に関する理論の中でも出題の多い『逆ポーランド表記法』について説明していきます。

逆ポーランド表記法(後置記法)とは、演算子を非演算子の後ろに書く記法のことです。一方、私たちが日常生活で使用しているのは『中置記法』といいます。

例えば、以下のような数式です。

  ・中置記法:A+B

それに対して、逆ポーランド表記法(後置記法)は演算子を後ろに置きます。

  ・逆ポーランド表記法(後置記法):AB+

また、演算子を前に置く『前置記法』という記法もあります。

  ・前置記法:+AB

逆ポーランド表記法を用いることで、コンピュータは大量の式を高速に計算することができ、処理の負荷を抑えることができるというメリットがあります。

ここまで、理解ができたら実際に例題をみてみましょう。

例題1


1+2-3を逆ポーランド表記法で表現しなさい。


まず、この問題では、『1+2』に注目していきます。

逆ポーランド表記法では、演算子を後に置くので『12+』になります。

source20.png

次に、12+-3の『-』の演算子を後ろに置くので

『12+3-』が答えとなります。

source21.png

なんとなくイメージが沸いてきたでしょうか。

次に、以下の式を逆ポーランド表記法で表してみましょう。

例題2


1+2×3を逆ポーランド表記法で表現しなさい。


数学では掛け算と割り算は優先して計算しますが、ここでも掛け算を優先します。

なので、『2×3』から注目していきましょう。

逆ポーランド表記法では、演算子を後に置くので、『23×』になります。

source22.png

次に、1+23×の『+』の演算子を後ろに置いて

『123×+』が答えとなります。

source23.png

次に、以下の式を逆ポーランド表記法で表してみましょう。

例題3


1+(2-3)を逆ポーランド表記法で表現しなさい。


ここでも括弧の中身を優先して計算していきます。

なので『2-3』から注目していきましょう。

逆ポーランド表記法では、演算子を後に置くので『23-』になります。

source24.png

次に、1+23-の『+』の演算子を後ろに置いて

『123-+』が答えとなります。このとき括弧は不要となります。

source25.png

ここまで理解できたら、次は逆ポーランド表記法から中置表記法に変換していきましょう。

逆ポーランド表記法から中置表記法に変換する方法は、左から右に見ていき、演算子が出てきたら、直前の数字2個を計算していきます。

分かりづらいので、これも例題を解いてみましょう。

例題4


12+3-を中置表記法で表現しなさい。


まず、左から右にみていくと『+』の演算子が出てきました。

その『+』の演算子の直前に『1』と『2』があるので『1+2』になります。

source26.png

次に、左から右にみていくと『-』の演算子が出てきました。

その『-』の演算子の直前に『1+2』と『3』があるので『1+2-3』になります。

source27.png

もう1つ例題を解いてみましょう。

例題5


123×+を中置表記法で表現しなさい。


先ほどと同じように、左から右にみていくと、『×』の演算子が出てきました。

その『×』の演算子の直前に『2』と『3』があるので、『2×3』になります。

source28.png

次に、左から右にみていくと、『+』の演算子が出てきました。

その『+』の演算子の直前に『2×3』と『1』があるので、『1+2×3』になります。

source29.png

ここまで理解できたでしょうか。次は通信に関する理論を学んでいきます。

通信に関する理論

通信に関する理論では、データを伝達するための信号のような、通信にまつわる理論が試験範囲となっています。ここでは、通信に関する理論の中でも出題の多い、誤り検出について説明していきます。

コンピュータを使用しているときにデータの送受信をするときがありますが、データを受信する際にノイズなどの影響によって、データに誤りが発生することがあります。 その際に、元のデータと受けたデータが正しく一致するか調べることを『誤り検出』といいます。

誤り検出はいくつか種類がありますが、代表的なものをここでは説明していきます。

パリティチェック

パリティチェックは、一定単位のデータにパリティビットというビットを1ビット追加します。ビットは『0』か『1』が入る箱のようなものだと思っておきましょう。
例えば、2進数で『01100101』のように 8個の数字があれば、8ビットになります。
また、ビットは『8ビット』で『1バイト』という単位になります。

話を戻すと、パリティチェックでは、ある一定の単位で1ビットを追加します。
さらに、1が偶数個になるように追加するものを『偶数パリティチェック』といい、1が奇数個になるように追加するものを『奇数パリティチェック』といいます。
また、下図のように横方向にパリティビットを追加するものを『垂直パリティチェック』といいます。

source30.png

例えば、奇数パリティチェックでは、上記の図のように『1』が3個だった場合、『0』を設定することで奇数(3個)になります。
データの送り手は、奇数個になるようにパリティビットを設定して送り出します。

これにより、受け手は『1』の個数が偶数になっていた場合(1ビット誤りがあった場合)、データが壊れていると判断できます。そして誤りがあると判断した場合、送り手に再送を指示してもう1度データを受信することができます。

ただし、この方法は偶数個の誤り(例:2ビットの誤り)が発生した場合は、データの誤りに気付くことができません。

また、垂直パリティチェックのほかに『水平パリティチェック』というものもあります。先ほどの垂直パリティチェックのみでは誤り検出の精度が低いため、水平パリティチェックを併用することがあります。

source31.png

上記の図のように、水平パリティチェックと垂直パリティチェックを併用すると、精度を高めることができます。

検出方法は他にもあるので特徴だけ説明します。

CRC方式(巡回冗長検査)

CRC方式も誤り検出の一種です。

送り手はビット列をある生成多項式で割った余りをそのビット列に付加して送信します。受け手は受信したビット列が同じ生成多項式で割り切れるかどうかで、誤りがないかを判断します。

誤りの検出はできますが、誤りの訂正はできないのが特徴の1つです。ちなみに『生成多項式で割る』という特徴は試験に出やすいので覚えてきましょう。

ハミング符号方式

ハミング符号方式は、データを送る際に一定の手順で計算したチェック用データを付加して送ります。受け手はチェックデータを検査して、誤りを検出することができます。また、ハミング符号はデータを訂正できるという特徴もあります。

簡単に特徴を説明しましたが、この特徴の違いが試験で問われるので覚えておきましょう。

次は、計測・制御に関する理論を学んでいきます。

計測・制御に関する理論

ここから計測・制御に関する理論ついて学習していきますが、その中でも出題の多い『PCM方式』を中心に学習していきましょう。

PCM方式と聞くと全くイメージが沸かないと思いますが、アナログやディジタルという用語は聞いたことがあるのではないでしょうか。 PCM方式は、アナログやディジタルが大きく関わってくるので、構えずに学習してみましょう。

普段、私たちはあまり意識していないかもしれませんが、音声等のアナログの情報をコンピュータで扱うためには、実はディジタルデータに変換する必要があります。
そもそも、ディジタルは「区切って数字で表す」という意味があります。音声のアナログの波形データも、ディジタル化することができ、その代表的な方式を『PCM方式』といいます。

アナログの波形をディジタル化するには、標本化→量子化→符号化の順で行っていきます。

まずは標本化(サンプリング)です。
標本化とは、アナログの波形を一定時間ごとに区切る処理のことです。

source32.png

次に量子化です。
標本化したデータは正確に標本化すればするほど、データ量が多くなってしまいます。
そのため、量子化という処理をすることで、標本化したデータを定めた段階数に当てはめて整数値に置き換えます。

CDの量子化

CDは65,536段階で量子化されている

最後に符号化です。
符号化は、量子化した値を2進数に変換していきます。
このような流れでアナログの波形がディジタル化され、この一連の流れをPCM方式といいます。

上記では、PCM方式の流れを簡単に説明しましたが、試験ではサンプリング間隔についての計算問題が出るので、過去問を解いて問題に慣れておきましょう。

演習

上記で学んだ基礎理論の範囲の演習を行います。
学んだことを思い出しながら解いてみましょう。


問1 16進数の小数0.248を10進数の分数で表したものはどれか。

ア 31/32

イ 31/135

ウ 31/512

エ 73/512

(出典:平成30年度 秋期 基本情報技術者試験 午前 問1)



問2 コインを4回投げたときに,表が2回だけ出る確率は幾らか。

ア 0.2

イ 0.375

ウ 0.5

エ 0.625

(出典:平成17年度 春期 基本情報技術者試験 午前 問6)



問3 後置表記法(逆ポーランド表記法)では,

例えば,式 Y=(A-B)×C を YAB-C×= と表現する。

次の式を後置表記法で表現したものはどれか。 Y=(A+B)×(C-(D÷E))

ア YAB+C-DE÷×=

イ YAB+CDE÷-×=

ウ YAB+EDC÷-×=

エ YBA+CD-E÷×=

(出典:平成24年度 春期 基本情報技術者試験 午前 問4)



問4 送信側では,ビット列をある生成多項式で割った余りをそのビット列に付加して送信し,受信側では,受信したビット列が同じ生成多項式で割り切れるか否かで誤りの発生を判断する誤り検査方式はどれか。

ア CRC方式

イ 垂直パリティチェック方式

ウ 水平パリティチェック方式

エ ハミング符号方式

(出典:平成29年度 秋期 基本情報技術者試験 午前 問2)



問5 PCM伝送方式によって音声をサンプリング(標本化)して8ビットのディジタルデータに変換し、圧縮せずにリアルタイムで転送したところ、転送速度は64,000ビット/秒であった。このときのサンプリング間隔は何マイクロ秒か。

ア 15.6

イ 46.8

ウ 125

エ 128

(出典:平成28年度 春期 基本情報技術者試験 午前 問4)


解説

問1 16進数の小数0.248を10進数の分数で表したものはどれか。

正解 エ

これは、n進数から10進数に基数変換する問題です。

n進数から10進数に基数変換するには、各桁の重みで掛け算して、それを合計することで10進数に変換することができると学習しました。

各桁重みは以下になります。

source8.png

上記のnに16を当てはめることで、各桁の重みをだすことができます。
また、その各桁の重みを0.248の各桁で掛け算して合計してみましょう。

2×1/16 + 4×1/256 + 8×1/4096

=2/16 + 4/256 + 8/4096

=512/4096 + 64/4096 + 8/4096 =584/4096

=73/512となり、答えは『エ』となります。


問2 コインを4回投げたときに,表が2回だけ出る確率は幾らか。

正解 イ

これは、組み合わせ数から確率を求める問題です。

まず、コインを4回投げた場合に表裏の出方の数を求めます。

source33.png

上記の計算から16通りあることがわかります。

次に、コインを4回投げた場合、コインが2回だけが表となる組合せ数を求めます。

source17.png

組み合わせの公式は上記だったので、上記の式に当てはめます。

source34.png

そうすると6通りになるので、コインを4回投げたときに表が2回だけ出る確率は

6÷16=0.375となり、答えは『イ』となります。


問3 後置表記法(逆ポーランド表記法)では,

例えば,式 Y=(A-B)×C を YAB-C×= と表現する。

次の式を後置表記法で表現したものはどれか。 Y=(A+B)×(C-(D÷E))

正解 イ

これは、逆ポーランド表記法で表す問題です。

まず、Y=(A+B)×(C-(D÷E))の括弧内を優先して変換していきます。

(A+B)と(D÷E)を変換すると以下のようになります。

source35.png

そうすると、Y=AB+×(C-DE÷)になるので、次に(C-DE÷)を変換します。

source36.png

次に、AB+×CDE÷-を『AB+』と『CDE÷-』のかたまりで考えて変換します。

source37.png

最後に左辺と右辺を"="で演算して終わりです。

よって、YAB+CDE÷-×=となり、答えは『イ』となります。


問4 送信側では,ビット列をある生成多項式で割った余りをそのビット列に付加して送信し,受信側では,受信したビット列が同じ生成多項式で割り切れるか否かで誤りの発生を判断する誤り検査方式はどれか。

正解 ア

これは、誤り検出方式に関する問題です。それぞれの特徴を思い出して回答しましょう。

ア:『CRC方式』は正しいです。CRC方式の特徴は、生成多項式で割った余りをそのビット列に付加して送ります。

イ:『垂直パリティチェック方式』は、データに検査用のパリティビットを付加して送ります。

ウ:『水平パリティチェック方式』も、データに検査用のパリティビットを付加して送ります。

エ:『ハミング符号方式』は、情報ビットに対して検査ビットを付加して誤りを検出し、訂正機能も持っています。


問5 PCM伝送方式によって音声をサンプリング(標本化)して8ビットのディジタルデータに変換し、圧縮せずにリアルタイムで転送したところ、転送速度は64,000ビット/秒であった。このときのサンプリング間隔は何マイクロ秒か。

正解 ウ

これは、PCM伝送方式に関する問題です。

まず、1秒間に何回、サンプリング(標本化)が行われているかを計算します。

転送速度は64,000ビット/秒なので、1回のサンプリング(標本化)で生成されるデータは、8ビットで割って求めます。

64,000÷8=8,000回

最後に、サンプリング間隔を求めるため、1秒÷8,000回を計算します。

1秒÷8,000回=125マイクロ秒

よって、答えは『ウ』となります。


以上で、ここまでの演習は終了です。
次は、アルゴリズムとプログラミングについて学んでいきます。

アルゴリズムとプログラミング

ここから、アルゴリズムとプログラミングの基本的な考え方などを学びます。
この分野は、試験B(午後試験)でも出題範囲なので、しっかり学習していきましょう。

データ構造

まずは、そもそもアルゴリズムとはなにか?というところから学んでいきます。
アルゴリズムとは、簡単に言うと作業手順のことです。
例えば、基本情報技術者の資格取得の手順は以下になります。

source37.png

この手順がアルゴリズムです。

また、この作業手順をコンピュータに理解してもらうには、コンピュータが分かるように変換する必要があります。 このコンピュータが理解できるように変換した命令を『プログラム』といいます。

また、その命令文を書く際は『プログラミング言語』でコンピュータに命令します。
要するにプログラミングとは、コンピュータにも理解できるように命令文を書く作業となります。

なんとなくイメージが沸いてきたでしょうか。イメージできできたら、次はデータ構造について学んでみましょう。

データ構造とは、データを効率的に管理するための形式のことです。このデータ構造はプログラムを書く際に必要な知識となります。
データを効率的に管理するための形式としては、代表的なものとして『木構造(2分木)』という方法があります。

木構造(2分木)とは、階層構造でデータを保持する方法です。

source39.png

上記の図のように、階層構造になっていて、各データに名称がついています。

また、各要素には名前がついており、最上層の部分を『根(ルート)』、その下を『節(ノード)』、最下層を『葉(リーフ)』と呼びます。

ちなみに、節の上下では親子関係があります。

source40.png

また、2分木にはいくつか種類があるので紹介していきます。

まずは『完全2分木』です。
完全2分木は、葉以外の節が全て2つの子を持ちます。
根から葉までの階層の深さが全て等しいのが特徴です。

source41.png

次に『2分探索木』です。
2分探索木は、データの探索を簡単に行うことができるのが特徴です。
2分探索木のデータは、データの大きさが『左の子<親<右の子』の関係になっています。

下の図の『4』と『8』と『10』の関係をみてみましょう。
上にいる『8』が親になり、親の左下の『4』と右下の『10』が子になります。
このように『4<8<10』と『左の子<親<右の子』の関係になっていることが分かると思います。

source42.png

このような関係になっている2分木を『2分探索木』といいます。 この2分探索木は試験にも出題されやすいので、しっかり覚えておきましょう。

次は、アルゴリズムについて説明します。

アルゴリズム

ここから、アルゴリズムについて学んでいきます。
冒頭でアルゴリズムは作業手順のことと言いましたが、もう少し詳しく学習していきましょう。

まず、アルゴリズムを記述する際に使われるものとして、流れ図(フローチャート)があります。流れ図(フローチャート)とは、その名の通り処理の流れを表すものです。
また、流れ図(フローチャート)を作成する際は、自分が好きなように作成するわけではなくルールがあります。

例えば、流れ図(フローチャート)は、基本的に『上から下、左から右』に書いていきます。
このように色々とルールがあるのでここからルールを説明していきます。

まずは使用する記号です。以下のような記号を使用します。

source43.png

そして、流れ図(フローチャート)は、原則3つの構造で作成されています。

1つ目は『順次構造』です。
順次構造とは、上から順番に行っていくことです。

source44.png

2つ目は『選択構造』です。
選択構造とは、2つ以上の処理のいずれかを選択して処理を行うことです。

source45.png

3つ目は『繰り返し構造』です。
繰り返し構造とは、条件が達成されるまで一定の処理を行うことです。

source46.png

流れ図(フローチャート)については理解できたでしょうか。
以上で流れ図(フローチャート)の学習は終わりです。

次は、プログラミングについて学習していきましょう。

プログラミング

ここから、プログラミングについて学習していきます。

冒頭で『プログラミングはアルゴリズムをコンピュータに理解してもらうためにするイメージ』と説明しましたが、まずは試験に出題されやすいプログラムの性質について学習していきます。

内容は少し難しいですが、試験は特徴さえ覚えておけば解ける問題が多いので頑張って覚えていきましょう。

リロケータブル(再配置可能)

リロケータブル(再配置可能)といきなり言われてもなかなかピンとこないと思うので、まずはプログラム内蔵方式を採用しているコンピュータについて説明します。

プログラム内蔵方式を採用しているコンピュータは、プログラムを実行する際にハードディスク等の補助記憶装置に保存してあるプログラムを主記憶装置に読み込んで実行します。

source47.png

ハードディスク等については、まだ学習していない部分なのでイメージが沸きづらいかもしれませんが、「プログラムを実行する場所が違うんだな」と思っておきましょう。

上記を踏まえたうえで話を戻すと、リロケータブル(再配置可能)とは、主記憶上のどこに配置してもプログラムを実行できる性質のことです。どこに配置しても実行できるという特徴を覚えておきましょう。

リユーザブル(再使用可能)

上記でプログラムを実行する際は、ハードディスク等の補助記憶装置に保存してあるプログラムを主記憶装置に読み込んで実行すると説明しました。

リユーザブル(再使用可能)は、主記憶装置に読み込まれたプログラムを再び読み込まなくても繰り返し利用可能な性質のことです。
繰り返し利用可能であるという特徴を覚えておきましょう。

リエントラント(再入可能)

リエントラント(再入可能)は、複数のプログラムが並行で実行される場合に、同時に呼び出されても実行できる性質のことです。
同時に実行しても正常に実行できるという特徴を覚えておきましょう。

リカーシブ(再帰的)

リカーシブ(再帰的)は、プログラムの処理中に自分自身を呼び出すことができる性質のことです。

少しイメージが沸きづらいかもしれませんが、自分自身を呼び出すことができるという特徴を覚えておきましょう。

Ajax

ここから少し話を変えて、ここの分野で出題される、JavaScriptの機能について簡単に説明します。

JavaScriptとは、プログラミング言語の1つで、主に『HTML』、『CSS』のようにフロントエンドで使用されます。 プログラミング言語については後に説明するので、ここではとりあえず『JavaScript』がプログラミング言語の1つであるということを覚えておきましょう。

試験に出題されるJavaScriptの機能として『Ajax』という機能があります。 Ajaxの機能の特徴として、画面遷移をしなくても動的なユーザインタフェースを行うことができるというものがあります。

普段、私たちがWebページを見てる際に、情報を更新するには画面遷移を行う必要があります。 しかし、Ajaxの機能(非同期通信)を使用することで、画面遷移をしなくてもコンテンツを書き換えることができます。

身近な例で言うと、GoogleMapで使用されています。

従来のWeb上の地図では地図の場所を少し動かすために画面の遷移が必要でしたが、例にあげたGoogleMapでは、Ajaxの機能を使用しているので画面の遷移をすることなく地図を動かすことができます。 この画面遷移を伴わずに実現できるという点は、試験に出題されやすいので覚えておきましょう。

次は、もう少し詳しくプログラミング言語について学習していきます。

プログラミング言語

ここからプログラミング言語についてもう少し詳しく学習していきます。

プログラミング言語はコンピュータに命令する際に使用しますが、種類は何百種類もあります。なので、ここでは試験に出題されやすいものを中心に学んでいきます。

C言語

C言語は歴史が長い言語で、数多くのプログラミング言語のもとになった言語です。現在でも基幹システムなどの様々なところで使用されています。

Java

Javaは業務システムやAndroidアプリなどで使用されているプログラミング言語です。大企業のシステム開発などでも使用されており、有名なプログラミング言語の1つです。

JavaScript

JavaScriptはWebサイトで動的な要素を付けたいときに使用されることが多いプログラミング言語です。特にAjaxの機能は様々なところで使用されています。

また、上記の『Java』と名前は似ていますが全く別物なので、注意しましょう。

Python

Pythonは人工知能、機械学習などの分野に強いことが特徴のプログラミング言語です。
汎用性が高いため、人工知能、機械学習以外の分野でも様々なところで使用されています。

PHP

PHPはサーバーサイドの開発で使用されるプログラミング言語です。
Webサイトを制作する際に使用する有名なCMS『WordPress』は、PHPで構成されています。

Javaの特徴

上記では簡単にプログラミング言語の種類を説明しましたが、次は試験に出題されやすい『Java』の特徴について説明していきます。

ガベージコレクション

ガベージコレクションとは、メモリ管理を自動で行ってくれるシステムです。Javaだけでなく、JavaScript、Python、PHP等でも採用されています。

試験では、Javaは『ガベージコレクションの機能がある』という点を出題されることが多いので、その特徴を覚えておきましょう。

JavaBeans

JavaBeansは、よく使われるものを再利用できるように、コンポーネント化するための仕組みです。

Javaのこの特徴も試験に出題されやすいので覚えておきましょう。

Javaサーブレット

Javaサーブレットは、サーバ上でウェブページなどを動的処理することができる技術です。
サーバ上で実行する技術という特徴はしっかり覚えておきましょう。また、JavaScriptと勘違いしやすいので注意してください。

以上が試験に出題されやすいJavaの特徴です。そこまで深く問われることはないので、特徴を掴むことが重要です。

次は、プログラミング言語以外の言語について説明します。

その他の言語

ここからは、プログラミング言語以外の言語について説明していきます。

マークアップ言語

マークアップ言語はプログラミング言語とは異なり、文章を構造化する言語です。

例えば『ここはタイトル』、『ここは本文など』タグを使って文章を構造化します。

試験では、『HTML』、『XML』、『SGML』の特徴が出題されやすいので、順番に学んでいきましょう。

HTML

HTMLは、Hyper Text Markup Languageのことで、Webページを作成するには欠かせない言語とも言われています。

source48.png

また、HTML文書のデザイン(視覚表現の情報)を整えるものとして、『CSS』と呼ばれる、スタイルシートがあります。
実際にこのWebページも、HTMLとCSSで書かれています。

試験では、CSSの特徴も出題されやすいので頭に入れておきましょう。

XML

XMLもHTMLと同じように、広く利用されているマークアップ言語です。
XMLは、利用者が独自のタグを使って、文書の属性情報や論理構造を定義することができます。また、XMLではXSLというスタイル言語が使われます。

SGML

SGMLは、HTMLやXMLのベースになった言語で、電子的な文書の管理や交換を簡単に行うための言語です。最近はXMLがあるのであまり使われていません。

以上で、アルゴリズムとプログラミングについての学習は終わりです。最後に演習問題を解いていきましょう。

演習


問1 2分探索木になっている2分木はどれか。

source48.png

(出典:平成28年度 秋期 基本情報技術者試験 午前 問6)



問2 右の流れ図が左の流れ図と同じ動作をするために,a,bに入るYesとNoの組合せはどれか。

source49.png

source50.png

(出典:平成25年度 秋期 基本情報技術者試験 午前 問8)



問3 複数のプロセスから同時に呼び出されたときに,互いに干渉することなく並行して動作することができるプログラムの性質を表すものはどれか。

ア リエントラント

イ リカーシブ

ウ リユーザブル

エ リロケータブル

(出典:平成31年度 春期 基本情報技術者試験 午前 問8)



問4 JavaScriptの非同期通信の機能を使うことによって,動的なユーザインタフェースを画面遷移を伴わずに実現する技術はどれか。

ア Ajax

イ CSS

ウ RSS

エ SNS

(出典:平成31年度 春期 基本情報技術者試験 午前 問50)



問5 Web環境での動的処理を実現するプログラムであって,Webサーバ上だけで動作するものはどれか。

ア JavaScript

イ Javaアプレット

ウ Javaサーブレット

エ VBScript

(出典:平成28年度 秋期 基本情報技術者試験 午前 問8)



問6 HTML文書の文字の大きさ,文字の色,行間などの視覚表現の情報を扱う標準仕様はどれか。

ア CMS

イ CSS

ウ RSS

エ Wiki

(出典:平成28年度 春期 基本情報技術者試験 午前 問24)



問7 XMLに関する記述のうち,適切なものはどれか。

ア HTMLを基にして,その機能を拡張したものである。

イ XML文書を入力するためには専用のエディタが必要である。

ウ 文書の論理構造と表示スタイルを統合したものである。

エ 利用者独自のタグを使って,文書の属性情報や論理構造を定義することができる。

(出典:平成26年度 秋期 基本情報技術者試験 午前 問8)


解説

問1 2分探索木になっている2分木はどれか。

正解 イ

2分探索木は、『左の子<親<右の子』の関係になっているのが特徴でした。
なので、左から数字を見ていき、昇順になっていれば2分探索木であると分かります。

ア:左から数字を見ていくと、『10→15→14→16→19』となっており、昇順ではないので、2分探索木ではありません。

イ:左から数字を見ていくと、『10→14→16→17→18→19』となっており、昇順なので、2分探索木です。

ウ:左から数字を見ていくと、『15→16→14→18→19→20』となっており、昇順ではないので、2分探索木ではありません。

エ:左から数字を見ていくと、『10→18→14→20→15→19→16』となっており、昇順ではないので、2分探索木ではありません。


問2 右の流れ図が左の流れ図と同じ動作をするために,a,bに入るYesとNoの組合せはどれか。

正解 ア

まず、左の流れ図がどのような状態のときに『処理』に進んでいるかをみていきます。
そうすると、『Pではない又はQ』のときに処理に進んでいることが分かります。
これを右の流れ図でも同じように考えていきます。

『Pではない又はQ』のときに処理に進むようにしたいので、
まず、Pの『a』は、Pではない『No』を選ぶことで処理に進ませることができます。
次に、Qの『b』は処理に進んでいません。
Qのときは処理に進ませたいので、処理に進んでいない『b』は『No』と分かります。

よって、どちらも『No』なので、答えは『ア』となります。


問3 複数のプロセスから同時に呼び出されたときに,互いに干渉することなく並行して動作することができるプログラムの性質を表すものはどれか。

正解 ア

これは、プログラムの性質の問題です。

ア:リエントラント(再入可能)は、複数のプログラムが並行で実行される場合に、同時に呼び出されても実行ができる性質のことです。よって、『ア』が正解です。

イ:リカーシブ(再帰的)は、プログラムの処理中に自分自身を呼び出すことができる性質のことです。

ウ:リユーザブル(再使用可能)は、主記憶装置に読み込まれたプログラムを再度、読み込まずに繰り返し利用可能であるという性質のことです。

エ:リロケータブル(再配置可能)とは、主記憶上のどこに配置してもプログラムを実行できる性質のことです。


問4 JavaScriptの非同期通信の機能を使うことによって,動的なユーザインタフェースを画面遷移を伴わずに実現する技術はどれか。

正解 ア

ア:Ajaxの特徴は、画面遷移をしなくても動的なユーザインタフェースを行うことができます。よって、『ア』が正解です。

イ:CSSは、HTML文書等のデザイン(視覚表現の情報)を整えるスタイルシートです。

ウ:RSSは、各種のウェブサイトの情報を簡単にまとめて配信するための文書フォーマットのことです。

エ:SNSとは、Web上で社会的ネットワークを構築可能にするサービスです。


問5 Web環境での動的処理を実現するプログラムであって,Webサーバ上だけで動作するものはどれか。

正解 ウ

ア:JavaScriptは、Webサイトで動的な要素を付けることができるプログラミング言語です。

イ:Javaアプレットは、Javaアプリケーションプログラムで、ブラウザ上で実行されます。

ウ:Javaサーブレットは、サーバ上でウェブページなどを動的処理することができる技術です。よって、『ウ』が正解です。

エ:VBScriptは、Microsoft Windows上などで動作する言語です。サーバ側、クライアント側のどちらでも動作可能です。


問6 HTML文書の文字の大きさ,文字の色,行間などの視覚表現の情報を扱う標準仕様はどれか。

正解 イ

ア:CMSは、Webサイトのコンテンツを構成するテキストや画像、デザイン情報などを一元的に管理するシステムです。有名なCMSとして、WordPressがあります。

イ:CSSは、HTML文書等のデザイン(視覚表現の情報)を整えるスタイルシートです。よって、『イ』が正解です。

ウ:RSSは、各種のウェブサイトの情報を簡単にまとめて配信するための文書フォーマットのことです。

エ:Wikiは、ユーザー(不特定多数)が共同してコンテンツを編集するシステムです。有名なWikiとしてWikipediaがあります。


問7 XMLに関する記述のうち,適切なものはどれか。

正解 エ

ア:XMLは、SGMLをベースに作られました。

イ:XMLは、普通のテキストエディタで編集等ができます。

ウ:この特徴はHTMLです。

エ:XMLは、利用者が独自のタグを使って、文書の属性情報や論理構造を定義することができます。よって『エ』が正解です。


以上でこのチャプターの学習は終わりです。
次のチャプターでは、コンピュータシステムを学んでいきます。

Lesson 2 Chapter 2
コンピュータシステム

コンピュータ構成要素

このチャプターでは、コンピュータ構成要素、システム構成要素、ソフトウェア、ハードウェアのようなコンピュータシステムに関することを中心に学習します。 まず、コンピュータの構成を理解するために、コンピュータの5大装置について学んでいきましょう。

コンピュータの5大装置

コンピュータは基本的に5つの装置で構成されていて、これを『コンピュータの5大装置』と呼びます。

装置 特徴
制御装置 他の装置に命令をする
演算装置 命令の処理をする
記憶装置 データ等を記憶する
入力装置 データ等を主記憶装置に入力する
出力装置 主記憶装置のデータ等を外部に出力する

これだけ見てもイメージしづらいと思うので、これらの装置がどのようなものに組み込まれているか学習していきましょう。

プロセッサ

まずは、プロセッサについて学んでいきます。
『プロセッサ』とは、データを処理するハードウェアで、人間で例えると頭の役割をしています。
また、コンピュータの脳にあたる部分としては、『CPU』と呼ばれるものがあります。

source51.png

プロセッサとCPUは厳密に言うと異なりますが、『プロセッサ=CPU』と思っておきましょう。

CPUには、チャプターの冒頭で説明した5大装置の『制御装置』と『演算装置』が組み込まれています。 CPUは演算等を行うので処理の速さが求められますが、全てのCPUが同じ性能というわけではなく、CPUによって演算等をする速さが異なります。

CPUの速さを比較するものとしては、『クロック周波数』、 『CPI』、『MIPS』といった指標値があります。

この指標値については試験に出題されやすいので、1つずつ学習していきましょう。

クロック周波数

CPUは、『クロック』と呼ばれる周期信号にあわせて動いています。 1周期の時間が短ければ動く回数も多くなるので、処理をする数も多くなります。

また、クロックが1秒間に繰り返される回数を『クロック周波数』と呼びます。 『クロック周波数』の単位は『Hz(ヘルツ)』で表すことができます。

仮に10HzのCPUがあった場合、1秒間に10回、クロックが繰り返されます。 これを逆に考えると上記のCPUでは、1回のクロックに0.1秒かかると求めることができます。
要するに、クロック周波数で秒数1を割ると、『1回のクロックに何秒かかるか』を求めることができるということです。

この『1回のクロックに何秒かかるか』の時間のことを『クロックサイクル時間』と呼びます。

CPI

CPIとは、『Clock cycles Per Instruction』の略で、1つの命令あたり何クロックサイクル必要かを表します。 なので、1つの命令で5クロックサイクル必要であれば、5CPIというように表すことができます。 また、この『CPI』と先ほど学んだ『クロックサイクル時間』を使って『命令の実行時間』を求めることができます。

では、実際に命令の実行時間を求めてみましょう。
たとえば、1GHzのCPUで、実行するのに5クロックサイクル必要だった場合は、以下のようになります。

まずは、クロックサイクル時間を求めていきます。
『1GHz』=『10億Hz』=『109Hz』なので、このような計算式になります。

source52.png

上記の式でクロックサイクル時間は、『1ナノ秒』と分かったので、
次は『1ナノ秒』に実行するのに必要な5クロックを掛けます。

source53.png

上記の計算によって、命令実行時間は5ナノ秒と求めることができます。

ナノ秒

1秒の10億分の1(10-9)を表すもの

MIPS

最後は『MIPS』について学びます。
MIPSとは『Million Instructions Per Second』の略で、1秒間に何百万個の命令が実行できるかを表します。 MIPSは、1秒を命令実行時間で割ることで求めることができます。

たとえば、1つの命令の実行に4ナノ秒かかるCPUの場合は、以下のようになります。

source54.png

MIPSは『1秒間に何百万個の命令が実行できるか』を表すので、250,000,000個を250MIPSと表します。 MIPSは100万単位で表すということを忘れないようにしましょう。

以上でプロセッサについての学習は終わりです。 次はメモリについて学習していきます。

メモリ

次は、メモリについて学習していきます。
メモリは『主記憶装置』であり、コンピュータの動作に必要なデータ等を記憶するものです。 CPUが『脳』だとすると、メモリは『作業スペース』と例えられることが多いです。

分かりやすく考えるためにキッチンを想像してみましょう。
どんなに手際の良い調理人がいても作業スペース(キッチン)が狭すぎる場合、スピードが遅くなることが想像できると思います。
例えば、料理を作るときに2口のコンロ使えばスムーズに料理できるはずが、1口のコンロしかない場合はスピードが遅くなりますよね。

作業スペースが広ければ、広いほど早くなるということはありませんが、狭いとスピードに影響を及ぼします。

これはメモリでも同じことが言えます。
メモリの容量が多ければ多いほど処理のスピードが早くなるわけではありませんが、余裕があれば遅くなることを防ぐことができます。

なんとなくメモリについてイメージができたところで、次はメモリの種類について学習していきます。

RAMとROM

メモリは大きく分けると『RAM』と『ROM』の2つに分けることができます。 『RAM』は、CPUが主記憶装置のメモリでデータを読み出すときに使われます。

『RAM』は読み書きが自由にできますが、電源を切ると消去される『揮発性』という特徴があります。 それに対して『ROM』は動作に必要なデータ等は、あらかじめメモリ内に書き込めれており、電源を切っても消去されない『非揮発性』という特徴があります。

『ROM』はこのような特徴があるため、家電製品等の一定の動作を行うものに使われています。

また『RAM』と『ROM』は、さらに細かく種類が分かれています。

DRAM

DRAMは、RAMの一種で安価かつ高集積することができるのが特徴です。
ただし、後述の『SRAM』と比べると書き込みスピードは劣ります。

SRAM

SRAMは、RAMの一種で高価かつ高速に書き込みができることが特徴です。
SRAMは、主に『キャッシュメモリ』に用いられます。

マスクROM

マスクROMは、ROMの一種で製造時にデータ等を書き込むという特徴があります。
読み出し専用のメモリで書き換えができません。

PROM

PROMは、データ等を書き換えることができるROMです。
PROMにはいくつか種類あり、紫外線で消去ができる『EPROM』、電磁的に消去できる『EEPROM』などがあります。

さらに『EEPROM』の中でも『フラッシュメモリ』は、ブロック単位でデータを消去して書き換えることができるという特徴を持っています。

ヒット率

メモリ分野でよく出題されるものとして『ヒット率』があります。
ただし、いきなりヒット率について説明するとイメージがしづらいため、その前にCPUとメモリの関係性について説明していきます。

まず、コンピュータを動かすためのプログラムは、補助記憶装置(ハードディスク等)に置いてあり、実行する際に主記憶装置(メモリ等)に移ります。
そして、主記憶装置に移ったものをCPUが取り出して実行していきます。

また、CPUが取り出した命令は『レジスタ』と呼ばれるCPUの中の記憶装置に記憶されています。

ちなみに各装置のアクセス速度は以下のような関係になっています。

source54-1.png

本当はハードディスク等に記憶せずに全てレジスタ等に記憶すれば、スピードが早くなりますが、早ければ早いほど高価なため、どうしても使える容量が限られます。

このような構造になっているため、CPUからメモリにアクセスする際、メモリからハードディスク等にアクセスする際に待ち時間が発生します。
その待ち時間を軽減させる方法として、『キャッシュ』というものがあります。

メモリ(主記憶装置)にCPUに読み込んだ際に、『キャッシュメモリ』にも読み込み、同じデータを読み込む際は、『キャッシュメモリ』から取得することで読み込みを高速にすることができます。

また、キャッシュには、1次キャッシュ、2次キャッシュのように重ねて設置することができるため、 1次キャッシュはCPU内にキャッシュメモリを入れて、2次キャッシュはSRAMを入れるなどして高速化が図られています。

少し前置きが長くなりましたが、ここから『ヒット率』についてです。

CPUからメモリにアクセスする際に、キャッシュメモリに既にデータが入っていれば、メモリからわざわざ読み込む必要はありませんが、全てのデータが入っているとは限りません。

この読み込もうとした際に、キャッシュメモリに既にデータが入っている確率を『ヒット率』と呼びます。
既にキャッシュメモリにデータがあれば、もちろん読み込むスピードは早くなります。

例えるなら、資格勉強をする際に、既に他の資格等で勉強したことがある範囲は理解するスピードが早いと思いますが、全く勉強したことがない範囲は理解するのに時間がかかるのと同じようなイメージです。

また、この『ヒット率』を使うことで『実行アクセス時間』を求めることができます。

source55.png

ヒット率の計算問題は、試験でも出題されるので過去問を解いて慣れておきましょう。

以上でメモリについての学習は終わりです。 次は『バス』について学習していきます。

バス

ここからは、『バス』について学習していきます。

『バス』は、試験の出題率は低いですが、コンピュータの仕組みを理解する上では重要になるのでしっかり学習していきましょう。

ここまでCPUやメモリ(主記憶装置)について学習してきましたが、CPUや主記憶装置は、データをやりとりするために、『バス』というもので繋がれています。

また、CPUが内部で伝送するバスを『内部バス』といいます。それに対し、主記憶装置などの装置を繋げるバスを『外部バス』といいます。

また、バスが一度に送信できるビット数を『バス幅』といいます。

アドレスバス

アドレスバスは、CPUなどがデータのアドレスを伝送するためのバスです。 バス幅によって、扱えるサイズが異なります。

各バスは、『0』か『1』を伝えるので、

8本(ビット)であれば、28で、256種類のアドレス
16本(ビット)であれば、216で、65,536種類のアドレス
32本(ビット)であれば、232で、4,294,967,296種類のアドレス
64本(ビット)であれば、264で、約1,800京種類のアドレスを扱うことができます。

データバス

データバスは、CPUなどが主記憶装置(メモリ)とデータを伝送するためのバスです。

以上でバスについての学習は終わりです。
バスの問題は過去の出題数が少ないですが、簡単な問題が多いので過去問を解いて解けるようにしておきましょう。

次は、入出力デバイスについて学習します。

入出力デバイス

ここから、入出力デバイスについて学習していきます。
入出力装置デバイスは、一見、馴染みのないように感じますが、意外と身近なものです。

例えば、普段使用しているPCで周辺機器を繋いで使用する機会があると思います。その際に異なる周辺機器でも同じケーブルを利用したりしたことはないでしょうか。
同じケーブルを利用できる理由としては、『入出力インターフェイス』という規格によって定められているからです。

例えば、『USB』、『AC100Vコンセント』、『Bluetooth』など、様々な入出力インターフェイスがあります。

また、入出力インターフェイスは、パラレル(並列)の『パラレルインターフェイス』、シリアル(直列)の『シリアルインターフェイス』に分かれています。

パラレルインターフェイス

パラレルインターフェイスは、複数の信号を同時に送受信します。
パラレルインターフェイスの代表的なものとして、『SCSI(スカジー)』、『EIDE』があります。

SCSIはハードディスク、CD-ROM、イメージスキャナなどに使われていました。 数珠つなぎに機器を連結して接続するのが特徴で、これを『デイジーチェーン』といいます。

EIDEはハードディスクを接続するためのIDEが拡張されたもので、ハードディスクやCD-ROMなどの接続に使われています。 最大4台までの機器を接続できるのが特徴です。

シリアルインターフェイス

シリアルインターフェイスは、信号を1つずつ送受信します。 シリアルインターフェイスの代表的なものとして、『USB』、『IEEE1394』があります。

USBは皆さんもご存じの通り、キーボード、マウスなど様々な入出力装置で使われています。 ただし、USBの中でもいくつか規格があり、規格によってスピードも異なります。

規格 モード スピード
USB1.1 ロースピードモード 1.5Mビット/秒
USB1.1 フルスピードモード 12Mビット/秒
USB2.0 ハイスピードモード 480Mビット/秒
USB3.0 スーパースピードモード 5Gビット/秒

IEEE1394は、デジタルビデオカメラなどに使われているもので、FireWireやi.Linkと呼ばれることもあります。

無線インターフェイス

上記ではケーブルを使用したインターフェイスを説明しましたが、無線を使用したインターフェイスもあります。 代表的なものとして『Bluetooth』があります。

マウスやキーボードなど、様々な周辺機器で使用されることが多くなってきたので、皆さんも馴染み深いのではないでしょうか。 Bluetoothは2.4GHzの電波を使って通信を行っているのが特徴です。

ここまでで入出力デバイスについては終わりです。 次は、入出力装置について学習していきます。

入出力装置

上記では主に入出力インターフェイスについて学習しました。 ここからは、入出力装置について学習していきます、

入力装置

まずは『入力装置』についてです。
入力装置の代表的なものとして、『キーボード』があります。
キーボードは文字を打つときに文字入力というので、なんとなくイメージがしやすいかもしれません。

他には、マウス、タッチパネル、タブレットなども入力装置に含まれます。
上記の例から、情報を伝えるものが多いことが分かります。

また、他にはバーコードリーダなども入力装置に含まれます。
バーコードリーダは、その名の通り、バーコードを読み込む装置です。
主にレジで使用されているので、よく見かけるのではないでしょうか。

また、バーコードは、『JANコード』と『QRコード』の2種類に分けられます。
『JANコード』は、商品コードとして使用されており、数字が13桁のタイプと8桁のタイプがあります。

それに比べて『QRコード』は、バーコードより情報量を多く扱うことができる2次元コードです。 3個の検出用シンボルで角度や方向を認識できるのが特徴です。

source56.png

※上記のQRコードは、情報処理推進機構のサイト(https://www.ipa.go.jp)に飛ぶことができます。

出力装置

次は出力装置についてです。
出力装置の代表的な装置として『ディスプレイ』があります。
また、ディスプレイにはいくつか種類があります。

まずは『液晶ディスプレイ』です。
液晶ディスプレイは現代の主流とも言えるディスプレイで、バックライトもしくは外部からの光を取り組むことで、表示する仕組みとなっています。

次は『有機ELディスプレイ』です。
人気ゲーム機にも採用されたことで話題になりました。

有機ELディスプレイは、有機化合物に電圧を加えることで発光する仕組みとなっています。 自ら発光できるため、とても省電力なのが特徴です。

最後は『プラズマディスプレイ』です。プラズマ放電による発光を利用するディスプレイで消費電力は多めです。

上記の他にも種類はありますが、この3種類の特徴は少なくとも覚えておきましょう。

次に、もう1つ代表的な出力装置として『プリンタ』があります。

最近はペーパーレス化が進み、紙を印刷することも少なくなりつつありますが、まだまだ使っている方も多いのではないでしょうか。 実は、このプリンタも印字方法によって種類が分かれているので、それぞれ特徴を覚えておきましょう。

まず、代表的なプリンタの『レーザプリンタ』です。

その名の通り、レーザ光線を印刷に利用するプリンタです。 ページ単位で印刷する技術なので、高速に印刷することができるのが特徴です。 ここ数年で会社用プリンタは、このレーザプリンタが主流になっています。

次に『インクジェットプリンタ』です。

インクジェットプリンタは、インクを直接吹き付ける方式で印刷するのが特徴です。 比較的に単純な構造なため、安価の家庭用プリンタ用で主流になっています。

また、プリンタは紙に印刷するだけでなく『3Dプリンタ』のようなものあります。
『3Dプリンタ』は、熱溶解積層方式などによって立体物を造ることができるプリンタです。

このようにプリンタにもたくさんの種類がありますが、ここで上げたものは最低限覚えておきましょう。

以上でコンピュータ構成要素の学習は終わりです。
この分野は、おおまかな特徴を覚えておくと点が取れるので、それぞれの特徴だけでも覚えておきましょう。

それでは最後に、ここまでの演習問題を解いてみましょう。

演習

上記で学んだコンピュータ構成要素の範囲の演習を行います。
学んだことを思い出しながら解いてみましょう。


問1 平均命令実行時間が20ナノ秒のコンピュータがある。このコンピュータの性能は何MIPSか。

ア 5

イ 10

ウ 20

エ 50

(出典:平成29年度 秋期 基本情報技術者試験 午前 問9)



問2 DRAMの特徴はどれか。

ア 書込み及び消去を一括又はブロック単位で行う。

イ データを保持するためのリフレッシュ操作又はアクセス操作が不要である。

ウ 電源が遮断された状態でも,記憶した情報を保持することができる。

エ メモリセル構造が単純なので高集積化することができ,ビット単価を安くできる。

(出典:令和元年度 秋期 基本情報技術者試験 午前 問20)



問3 A~Dを,主記憶の実効アクセス時間が短い順に並べたものはどれか。

source57.png

ア A,B,C,D

イ A,D,B,C

ウ C,D,A,B

エ D,C,A,B

(出典:平成31年度 春期 基本情報技術者試験 午前 問10)



問4 1Mバイトのメモリを図のようにMPUに接続するとき,最低限必要なアドレスバスの信号線の本数 n はどれか。ここで,メモリにはバイト単位でアクセスするものとし,1Mバイトは1,024kバイト,1kバイトは1,024バイトとする。

ア 18

イ 19

ウ 20

エ 21

(出典:平成28年度 秋期 基本情報技術者試験 午前 問11)



問5 USB3.0の説明として,適切なものはどれか。

ア 1クロックで2ビットの情報を伝送する4対の信号線を使用し,最大1Gビット/秒のスループットをもつインタフェースである。

イ PCと周辺機器とを接続するATA仕様をシリアル化したものである。

ウ 音声,映像などに適したアイソクロナス転送を採用しており,ブロードキャスト転送モードをもつシリアルインタフェースである。

エ スーパースピードと呼ばれる5Gビット/秒のデータ転送モードをもつシリアルインタフェースである。

(出典:平成29年度 春期 基本情報技術者試験 午前 問10)



問6 Bluetoothの説明として,適切なものはどれか。

ア 1台のホストは最大127台のデバイスに接続することができる。

イ 規格では,1,000m以上離れた場所でも通信可能であると定められている。

ウ 通信方向に指向性があるので,接続対象の機器同士を向かい合わせて通信を行う。

エ 免許不要の2.4GHz帯の電波を利用して通信する。

(出典:平成25年度 春期 基本情報技術者試験 午前 問13)



問7 3Dプリンタの機能の説明として,適切なものはどれか。

ア 高温の印字ヘッドのピンを感熱紙に押し付けることによって印刷を行う。

イ コンピュータグラフィックスを建物,家具など凹凸のある立体物に投影する。

ウ 熱溶解積層方式などによって,立体物を造形する。

エ 立体物の形状を感知して,3Dデータとして出力する。

(出典:平成31年度 春期 基本情報技術者試験 午前 問12)


解説

問1 平均命令実行時間が20ナノ秒のコンピュータがある。このコンピュータの性能は何MIPSか。

正解 エ

これは、MIPSの計算問題です。
MIPSは、1秒を平均命令時間で割ることで出すことができます。
なので、1秒/20ナノ秒を計算していきます。計算すると以下になります。

1秒/20ナノ秒

=1/20×109

=0.05×109

=50,000,000

MIPSは百万単位なので、50MIPSとなり、『エ』が正解となります。


問2 DRAMの特徴はどれか。

正解 エ

これは、メモリの種類についての問題です。

ア:DRAMは、ブロック単位ではなく、アドレス単位です。

イ:これは、DRAMではなく、SRAMの説明です。

ウ:DRAMは、電源が遮断された場合、記憶内容を失います。

エ:DRAMの説明なので正しいです。


問3 A~Dを,主記憶の実効アクセス時間が短い順に並べたものはどれか。

正解 イ

これは、実行アクセス時間を求める問題です。
AとBは、キャッシュメモリがないので、CとDを計算していきます。

実行アクセス時間は、(キャッシュメモリのアクセス時間×ヒット率)+主記憶のアクセス時間×(1-ヒット率)で求めることができるので、

Cは、(20×0.6)+(70×0.4)=12+28=40

Dは、(10×0.9)+(80×0.1)=9+8=17

となり、実行アクセス時間の短い時間順に並べると、A→D→B→Cとなるので、『イ』が正解です。


問4 1Mバイトのメモリを図のようにMPUに接続するとき,最低限必要なアドレスバスの信号線の本数 n はどれか。ここで,メモリにはバイト単位でアクセスするものとし,1Mバイトは1,024kバイト,1kバイトは1,024バイトとする。

正解 ウ

これは、バスについての問題です。

各バスは、『0』か『1』を伝えるので、

8本(ビット)であれば、28で、256種類のアドレス、
16本(ビット)であれば、216で、65,536種類のアドレス、
32本(ビット)であれば、232で、4,294,967,296種類のアドレス、
64本(ビット)であれば、264で、約1,800京種類のアドレスを扱うことができます。

今回の問題のメモリは、1Mバイトで、1,024×1,024のアドレスを扱うことができる必要があるので、

210(1,024)×210(1,024)=220で、20本あればアドレスを表現することができます。

よって、答えは『ウ』となります。


問5 USB3.0の説明として,適切なものはどれか。

正解 エ

これは、USB3.0についての問題です。

ア:これは、1000BASE-Tという規格の説明です。

イ:これは、Serial ATAという規格の説明です。

ウ:これは、IEEE1394の説明です。

エ:USB3.0の説明なので、これが正解です。


問6 Bluetoothの説明として,適切なものはどれか。

正解 エ

これは、Bluetoothについての問題です。

ア:Bluetoothは、最大7台の対応デバイスと接続できます。

イ:Bluetoothは、最大100m程度です。

ウ:Bluetoothは、レイアウトや向きを変更することができます。

エ:Bluetoothは、2.4GHz帯の電波を利用して通信するのが特徴なので、正しいです。


問7 3Dプリンタの機能の説明として,適切なものはどれか。

正解 ウ

これは、プリンタについての問題です。

ア:これは、感熱式プリンタの特徴です。

イ:これは、プロジェクションマッピングの説明です

ウ:3Dプリンタは、熱溶解積層方式などによって,立体物を造形するのが特徴なので、正しいです。

エ:3Dとなっていますが、これは、3Dスキャナの説明です。


以上で、コンピュータ構成要素の学習は終わりです。

システム構成要素

ここから、『システム構成要素』について学習していきます。
まず、これまでに何度かハードディスク(補助記憶装置)というものがでてきましたが、説明できていなかったので説明していきます。

ハードディスク

ハードディスクは補助記憶装置の代表的なもので、データの保存等を行います。CPUを『脳』、メモリを『作業スペース』と例えましたが、ハードディスクを例えると『収納BOX』のイメージです。 キッチンの例で言うと『冷蔵庫』などもイメージに近いでしょう。なんとなく、保存をしておく場所と考えておけば大丈夫です。

そのハードディスクですが、複数のハードディスクを組み合わせることによって、ハードディスクの速度等を上げたりすることができます。

複数のハードディスクを1つにまとめて運用する技術をして『RAID』というものがあります。 また、RAIDは7種類ありますが、特に試験に出題されやすいものを学習していきましょう。

RAID0

RAID0は『ストライピング』とも呼ばれ、1つのデータを複数のハードディスクに分散させます。 分散させて書き込むので速度は上がりますが、1台でもハードディスクが故障するとデータを失ってしまうので、信頼性の面では低いとされています。

RAID1

RAID1は『ミラーリング』とも呼ばれ、常にバックアップをしているイメージです。 複数のハードディスクに同じデータを書き込むので、1台が故障してもデータは残っているので、信頼性の面では高いとされています。 ただし、ハードディスクが複数あっても同じ内容を書き込んでいるので、使用領域の面ではメリットを受けることができません。

RAID5

RAID5は3台以上のハードディスクを使ってデータを書き込む際にパリティ(誤り訂正符号)も同時に書き込みます。 パリティも同時に書き込むことによって、1台が故障してもパリティを使ってデータを復元することができます。

ここまでは、ハードディスクについて説明しましたが、システムも同じような考えの手法があるので説明していきます。

システムは様々なところで導入されていますが、システムが止まったりすると大問題となります。
〇〇会社がシステム障害…のような、ニュース等を最近よく見かけますね。

『RAID』でデータを分散させたように、システムにもいくつか手法がいくつかあるので、これから説明していきます。

デュアルシステム

デュアルシステムは、全く同じ処理をするシステムを2つ用意して、処理結果を互いに監視する手法です。 どちらかのシステムが故障した場合でも、もう1つのシステムで処理を継続することが可能です。

デュプレックスシステム

デュプレックスシステムも、デュアルシステムのように全く同じ処理をするシステムを2つ用意します。 ただし、デュプレックスシステムはメインが正常運転している間、サブは待機(他の処理)をしています。 そして、メインが故障した際に切り替えて対応するのが特徴です。

また、デュプレックスシステムの待機方法は、『ホットスタンバイ』と『コールドスタンバイ』の2種類があります。

ホットスタンバイ

ホットスタンバイは、オンライン処理プログラムをあらかじめ起動して待機している待機方法です。 メインが故障してもスムーズにサブに切り替えることができるのが特徴です。

コールドスタンバイ

コールドスタンバイは、別の処理をしていたり電源がオフで待機していたりする待機方法です。 ホットスタンバイと比べてコストを抑えることができますが、切り替えに時間を要するのが特徴です。

フォールトトレラント

上記では色々な手法について学習しましたが、次は考え方について学習していきます。

まずは『フォールトトレラント』です。
フォールトトレラントとは、システムに障害が発生しても全体としては停止することなく稼働を続けることができるように対策をはかる考え方です。 また、フォールトトレラントを実現する方法もいくつかあるので、代表的なものの特徴を覚えておきましょう。

フールプルーフ

フールプルーフとは、人がミスをしてもミスできないようにする工夫です。
有名な例として、電子レンジのドアを閉めないと起動しないというものがあります。

フェールセーフ

フェールセーフは、『安全を最優先に』という考え方です。
故障が発生したときに、安全を第一に考えて停止するように工夫します。
例としては、ストーブ転倒時に電源が切れる仕組み等があります。

フェールソフト

フェールソフトは、『継続を最優先に』という考え方です。
フェールソフトは、故障した際にシステム全体ではなく、一部を切り離して動作を継続します。

以上で『システムの構成』についての学習は終わりです。
次は『システムの評価指標』について学習していきます。

システムの評価指標

ここからは『システムの評価指標』について学習していきます。
『システムの評価指標』の分野では、稼働率の問題の出題率が高いので、そこを重点的に学習していきましょう。

システム稼働率とは、システムが問題なく稼働していた割合のことです。
システム稼働率の計算に用いるものとして、『平均故障間隔(MTBF)』や『平均修理時間(MTTR)』というものがあるので、1つずつ学習していきましょう。

平均故障間隔(MTBF)

平均故障間隔(MTBF)とは、その名の通り故障の間隔を表したものです。つまり、「このシステムは、だいたい〇〇時間は故障せずに稼働できる」といったものを計算で出します。

平均故障間隔(MTBF)は、正常稼働している時間を足して、それを割ることで出すことができます。

例えば、以下のようなシステムがあったとします。

source58.png

上記のシステムの場合、平均故障間隔(MTBF)の計算は、以下になります。

source59.png

上記の計算から、このシステムは、だいたい40時間経過すると故障するということが分かります。

平均修理時間(MTTR)

次は平均修理時間(MTTR)ついてです。
平均修理時間(MTTR)もその名の通り、修理時間の平均を表します。
もう一度、先ほどのシステムで計算してみましょう。

source58.png

上記のシステムの場合、平均修理時間(MTTR)の計算は、以下になります。

source60.png

上記の計算から、このシステムは復旧におおよそ2時間かかるということが分かります。

システム稼働率

次はシステム稼働率についてです。
システム稼働率もその名の通り、全体でシステムが正常に稼働している割合のことです。 システム稼働率は、上記で学んだ『MTBF』と『MTTR』を使って計算を行います。

システム稼働率の計算は以下になります。

source61.png

これを先ほどと同様に、先ほどの例のシステムで計算してみましょう。

source58.png

上記のシステムの場合、システム稼働率はこのように計算できます。

"40時間÷(40時間+2時間)= 約95%"

よって、上記システムのシステム稼働率は95%となります。

直列と並列のシステム稼働率

次は複数のシステムで構成されている場合のシステム稼働率の求め方を学習していきます。

システムが複数で構成されている場合、接続方法として『直列接続』と『並列接続』があります。

source62.png

まずは、直列接続のシステム稼働率の計算方法を学習していきましょう。

直列接続のシステム稼働率

直列接続の場合、片方のシステムが故障した際に、システム全体に影響を及ぼします。 そのため、以下のような計算式でシステム稼働率を求めます。

"直列接続のシステム稼働率=システムAの稼働率×システムBの稼働率"

仮にシステムAの稼働率が80%、システムBの稼働率が80%だった場合は、以下のように計算します。

"0.80(A)×0.80(B)=0.64"

上記の計算から、システム稼働率は64%と求めることができます。

次は、並列接続のシステム稼働率の計算方法を学習していきます。

並列接続のシステム稼働率

並列接続の場合、片方のシステムが故障した際は、システム全体には影響は及ぼしません。 そのため、全体から両方が故障している状態を引いてシステム稼働率を求めます。

まず、片方ずつ故障率を求めます。故障率の求め方は以下のようになります。

"故障率=1-稼働率"

それぞれの故障率が分かった後に、以下の計算で全体の故障率を求めます。

"全体の故障率=システムAの故障率×システムBの故障率"

上記の計算で全体の故障率を求めることができたら、最後に全体から全体の故障率を引きます。

"システム稼働率=1-全体の故障率"

仮にシステムAの稼働率が80%、システムBの稼働率が80%だった場合は、以下のように計算します。

1-((1-0.80)×(1-0.80))

=1-(0.20×0.20)

=1-0.04

=0.96

上記の計算から、システム稼働率は96%と求めることができます。

以上で、システム構成要素の学習は終わりです。
最後に演習問題を解いていきましょう。

演習

上記で学んだシステム構成要素の範囲の演習を行います。
学んだことを思い出しながら解いてみましょう。


問1 RAIDの分類において,ミラーリングを用いることで信頼性を高め,障害発生時には冗長ディスクを用いてデータ復元を行う方式はどれか。

ア RAID1

イ RAID2

ウ RAID3

エ RAID4

(出典:令和元年度 秋期 基本情報技術者試験 午前 問15)



問2 デュアルシステムの説明として,最も適切なものはどれか。

ア 同じ処理を行うシステムを二重に用意し,処理結果を照合することで処理の正しさを確認する。どちらかのシステムに障害が発生した場合は,縮退運転によって処理を継続する。

イ オンライン処理を行う現用系と,バッチ処理などを行いながら待機させる待機系を用意し,現用系に障害が発生した場合は待機系に切り替え,オンライン処理を続行する。

ウ 待機系に現用系のオンライン処理プログラムをロードして待機させておき,現用系に障害が発生した場合は,即時に待機系に切り替えて処理を続行する。

エ プロセッサ,メモリ,チャネル,電源系などを二重に用意しておき,それぞれの装置で片方に障害が発生した場合でも,処理を継続する。

(出典:平成29年度 秋期 基本情報技術者試験 午前 問13)



問3 コンピュータを2台用意しておき,現用系が故障したときは,現用系と同一のオンライン処理プログラムをあらかじめ起動して待機している待機系のコンピュータに速やかに切り替えて,処理を続行するシステムはどれか。

ア コールドスタンバイシステム

イ ホットスタンバイシステム

ウ マルチプロセッサシステム

エ マルチユーザシステム

(出典:平成30年度 春期 基本情報技術者試験 午前 問14)



問4 稼働率Rの装置を図のように接続したシステムがある。このシステム全体の稼働率を表わす式はどれか。ここで,並列に接続されている部分はどちらかの装置が稼働していれば良く,直列に接続されている部分は両方の装置が稼働していなければならない。

ア (1-(1-R2))2

イ 1-(1-R2)2

ウ (1-(1-R)2)2

エ 1-(1-R)4

(出典:平成29年度 春期 基本情報技術者試験 午前 問14)



問5 2台の処理装置から成るシステムがある。少なくともいずれか一方が正常に動作すればよいときの稼働率と,2台とも正常に動作しなければならないときの稼働率の差は幾らか。ここで,処理装置の稼働率はいずれも0.9とし,処理装置以外の要因は考慮しないものとする。

ア 0.09

イ 0.10

ウ 0.18

エ 0.19

(出典:令和元年度 秋期 基本情報技術者試験 午前 問16)


解説

問1 RAIDの分類において,ミラーリングを用いることで信頼性を高め,障害発生時には冗長ディスクを用いてデータ復元を行う方式はどれか。

正解 ア

これは、RAIDの特徴についての問題です。

ア:問題文はRAID1の説明なので、これが正解です。

イ:RAID2は、ハミングコードを生成して、複数のディスクに書き込みます。

ウ:RAID3は、パリティビットを使用し、データの分割がバイト単位で行われます。

エ:RAID4は、パリティビットを使用し、データの分割がブロック単位で行われます。


問2 デュアルシステムの説明として,最も適切なものはどれか。

正解 ア

これは、システムの特徴についての問題です。

ア:デュアルシステムの説明なので、これが正解です。

イ:これは、デュプレックスシステムの特徴です。

ウ:これは、ホットスタンバイの特徴です。

エ:これは、フォールトトレラントシステムの特徴です。


問3 コンピュータを2台用意しておき,現用系が故障したときは,現用系と同一のオンライン処理プログラムをあらかじめ起動して待機している待機系のコンピュータに速やかに切り替えて,処理を続行するシステムはどれか。

正解 イ

これは、システムの特徴についての問題です。

ア:コールドスタンバイは、別の処理をしていたり、電源がオフの状態で待機しているので誤りです。

イ:問題文は、ホットスタンバイの特徴なので、これが正解です。

ウ:マルチプロセッサシステムは、複数のプロセッサを動作させるシステムなので誤りです。

エ:マルチユーザシステムは、同時に複数のユーザーが使用できるシステムなので誤りです。


問4 稼働率Rの装置を図のように接続したシステムがある。このシステム全体の稼働率を表わす式はどれか。ここで,並列に接続されている部分はどちらかの装置が稼働していれば良く,直列に接続されている部分は両方の装置が稼働していなければならない。

正解 ウ

これは、システム稼働率についての問題です。
まずは、問題文のシステムを左右に分けて考えていきます。
左右に分けたあと、左と右のシステムは、それぞれ並列システムになります。
問題文のシステムに並列システムの公式を当てはめると以下のようになります。

1-(1-R)2

その後、左のシステムと右のシステムは直列接続のため、以下のようになります。

1-(1-R)2×1-(1-R)2

上記を計算すると、『(1-(1-R)2)2』になるので、答えは『ウ』になります。


問5 2台の処理装置から成るシステムがある。少なくともいずれか一方が正常に動作すればよいときの稼働率と,2台とも正常に動作しなければならないときの稼働率の差は幾らか。ここで,処理装置の稼働率はいずれも0.9とし,処理装置以外の要因は考慮しないものとする。

正解 ウ

これは、システムの稼働率についての問題です。
この問題は直列接続と並列接続の稼働率の差を聞かれています。
まず、公式を当てはめると、直列接続の稼働率は、『0.9×0.9=0.81』です。
次に、公式を当てはめると、並列接続の稼働率は、『1-(1-0.9)2=1-0.12=0.99』

よって、稼働率の差は、『0.99-0.81』で、0.18となるので、『ウ』が正解です。


以上で、システム構成要素の学習は終わりです。
次は、ソフトウェアを学んでいきます。

ソフトウェア

まずは、オペレーティングシステムについてです。

オペレーティングシステム

オペレーティングシステム(OS)とは、コンピュータの運用(operating)をするソフトウェアです。

デスクトップPCやノートPCではWindows, macOS, Linuxなどが、スマートフォンではAndroid, iOSなどが有名なOSです。

OSはハードウェア(CPU、メモリ、外部記憶装置など)の管理をしており、ユーザーやアプリケーションプログラムはOSを介してハードウェアを利用します。

ここではOSのタスク管理と記憶管理について学びます。

タスク管理

PCやスマートフォンでは複数のアプリケーションが並行して実行されていますが、通常1つしかないCPUを複数のアプリケーションが同時に使うことはできないため、どう『タスク』が実行されるのかを決めなくてはなりません。

タスク

CPUからみた仕事の単位。

タスクの実行方式はOSがCPUを管理してタスクを割り当てるプリエンプティブ方式と、OSがCPUを管理せずアプリケーションに任せるノンプリエンプティブ方式がありますが、現在プリエンプティブ方式が主流です。

プリエンプティブ方式ではOSがディスパッチ(CPU割り当て)とプリエンプション(CPU取り上げ)を行い、タスクを実行していきます。

タスクを実行する順番については、『優先度順方式』や『ラウンドロビン方式』があります。

source64.png

優先度順方式

各タスクを優先度の高い順に実行させる方式。

ラウンドロビン方式

各タスクに、均等にCPU時間を割り当てて実行させる方式。

記憶管理

OSは主記憶装置(メモリ)や補助記憶装置(HDD、SSD)へのデータの割り当ての管理もしています。

これを記憶管理と呼び、『実記憶管理』と『仮想記憶管理』の2種類があります。2つは組み合わせて使うこともできます。

実記憶管理

実記憶管理では主記憶そのものを効果的に管理します。実記憶管理の固定区画方式と可変区画方式の特徴を見てみましょう。

source65.png

固定区画方式では記憶領域に固定長の区画を作り、そこにプログラムをロードします。

1つの区画だけを作る単一区画方式と、複数の区画を作る多重区画方式があります(上図は多重区画方式)。

区画が固定長のため記憶領域に無駄な部分が出ますが、処理時間が一定で速いのが特徴です。

可変区画方式では固定区画方式と異なり、可変長の区画を作ります。

固定区画方式とは対照的に記憶領域の使用効率は良いですが、処理時間が比較的遅くなります。

また、記憶領域の使用効率は良いのですが、区画の確保や解放を繰り返していると、空き領域が飛び飛びに細かく分割されてしまう、『フラグメンテーション』という現象が起きてしまいます。

そこで、確保した区画の再配置などを行いフラグメンテーションの解消を行うことを『コンパンクション』と呼びます。

メモリの確保された領域のうち、不要になった領域を自動的に解放する仕組みを『ガベージコレクション』と呼びます。

これによって不要になった領域が解放されないままとなってしまう、『メモリリーク』という現象を防ぐことができます。

仮想記憶管理

仮想記憶管理では主記憶と補助記憶の一部を使って主記憶空間よりも大きな記憶空間(仮想記憶空間)をつくります。

これによって大きなプログラムも扱うことができるようになります。

ここでは出題率の高い仮想記憶管理のページング方式について学びましょう。

ページング方式とは、仮想記憶空間と主記憶空間を固定長の領域(ページ)に分割し、対応付けて管理する方式です。

ページ置換え手順は次のようになっています。ページング方式の3つの用語(『ページフォールト』、『ページイン』、『ページアウト』)もあわせて覚えましょう。

  1. 必要となるページが主記憶上に存在しない状態(ページフォールト)が起きる
  2. ページ置換えアルゴリズムによって置換えるページを決定する
  3. 置換えるページを主記憶から補助記憶に移動させる(ページアウト)
  4. 必要となるページを補助記憶から主記憶に移動させる(ページイン)

代表的なページ置換えアルゴリズムとしては、『FIFO方式』、『LRU方式』、『LFU方式』があります。

FIFO方式(First In First Out)

ページが読み込まれた順にページアウトさせる方式。

LRU方式(Least Recently Used)

最後に参照された時間が古い順にページアウトさせる方式。

LFU方式(Least Frequently Used)

参照された回数が少ない順にページアウトさせる方式。

また、仮想記憶システムで主記憶の容量が十分でない場合に、ページングが頻繁に発生してシステムの性能が低下することを『スラッシング』と呼びます。

ミドルウェア

ミドルウェアとは、OSとアプリケーションの中間に位置するソフトウェアのことです。

例としてはWebサーバやデータベース(DBMS)などがあります。

アプリケーションは『API(Application Programming Interface)』を通じてOSやミドルウェアの機能を利用します。

API

ソフトウェアやプログラムが持つ機能を利用するための仕組み。

ファイルシステム

ファイルシステムの『絶対パス』、『相対パス』を使ったファイルの特定方法について学びましょう。

まず、ファイルシステムでは、ディレクトリ(WindowsやMacではフォルダとも呼ばれます)と呼ばれるファイルの置き場所が、下図のように階層構造で管理されています。

source66.png

ディレクトリやファイルの場所を示す文字列を『パス』と呼び、

<ディレクトリ名1>/<ディレクトリ名2>/<ディレクトリ名3>/<ファイル名>

のように表記します。

Windowsではスラッシュ(/)ではなく円マーク(¥)を使って

<ディレクトリ名1>¥<ディレクトリ名2>¥<ディレクトリ名3>¥<ファイル名>

のように表記します。

階層構造の一番上にあるディレクトリを『ルートディレクトリ』と呼び、ルートディレクトリからのパスを絶対パスと呼びます。

また、現在作業中のディレクトリを『カレントディレクトリ』と呼び、カレントディレクトリからのパスを相対パスと呼びます。

カレントディレクトリは"."で表し、1階層上のディレクトリは".."で表します。

例えば、上図でカレントディレクトリが「ディレクトリ1」のとき、「ディレクトリ6」の絶対パスは

"ルートディレクトリ/ディレクトリ1/ディレクトリ3/ディレクトリ6"、

相対パスは

"ディレクトリ3/ディレクトリ6"になり("./ディレクトリ3/ディレクトリ6"でも可)、

「ディレクトリ5」の絶対パスは

"ルートディレクトリ/ディレクトリ2/ディレクトリ5"、

相対パスは

"../ディレクトリ2/ディレクトリ5"になります("./../ディレクトリ2/ディレクトリ5"でも可)。

開発ツール

ここからはソフトウェア開発に使うツールについて学んでいきましょう。

開発ツールにはテストツールや、開発作業全体を一貫して工程を支援する IDE(Integrated Development Environment、統合開発環境)などがありますが、特に出題が多い『コンパイラ』や『インタプリタ』などの言語処理ツールについて説明していきます。

まず、プログラミング言語は大きく分けてコンパイル方式とインタプリタ方式の2種類に分類できます。

コンパイル方式では、プログラムをコンピュータに実行させるために、ソースコードを『機械語』と呼ばれる、コンピュータ(CPU)が理解できる言語に翻訳します。

この処理をコンパイルと呼び、これを行うプログラムをコンパイラと呼びます。また、ソースコードは『原始プログラム』と呼び、コンパイルで生成されるプログラムは『目的プログラム』と呼びます。

コンパイル時にはコンパイラによって『最適化』が行われ、プログラムの実行効率が高められます。

コンパイル方式はコンピュータが直接理解できる機械語に翻訳されるため、プログラムの実行速度は速いです。

しかし、OSやCPUが異なる場合はそれぞれ別々にコンパイルしてプログラムを生成しなければなりません。

コンパイラが動作している以外のプラットフォームにコンパイルすること(例えばWindowsでLinux向けのプログラムをコンパイルすること)を、『クロスコンパイル』と呼びます。

複数のコンパイル済みプログラムを利用するプログラムを作る場合には『リンカ』と呼ばれる開発ツールを使います。

コンパイル方式のプログラミング言語の例としては、C/C++、Rust、Goなどがあります。

Javaはコンパイル方式の言語ですが、特定のOSやCPU向けではなく、Java仮想マシン向けにコンパイルされます。

そのためJava仮想マシンさえあれば、どのOSでも同じプログラムを実行できます。

続いて、インタプリタ方式についてです。

インタプリタ方式では、コンパイル方式のように機械語に翻訳してコンピュータに直接実行させるのではなく、ソースコードを解釈し実行するプログラム(インタプリタ)に実行させます。

インタプリタ方式はソースコードを解析しながら実行するため、コンパイル方式と比較して実行速度が遅くなります。

しかし、コンパイル方式と違い、ソースコードと実行環境(インタプリタ)があればどこでもプログラムを実行させることができます。

実行時にコンパイルを行う、『JIT(Just-In-Time)コンパイル』と呼ばれる手法を使って実行速度を上げることができます。

インタプリタ方式のプログラミング言語の例としては、Python、Javascript、Ruby、PHPなどがあります。

オープンソースソフトウェア

ここからは、オープンソースソフトウェア(OSS)について、説明していきます。

まずは少し長いですが、過去問にも出ているOSI(オープンソース・イニシアティブ)による「オープンソースの定義」(のOpen Source Group Japanによる翻訳)を見てみましょう。

オープンソースの定義

  1. 再頒布の自由
  2. ソースコード
  3. 派生ソフトウェア
  4. 作者のソースコードの完全性(integrity)
  5. 個人やグループに対する差別の禁止
  6. 利用する分野(fields of endeavor)に対する差別の禁止
  7. ライセンスの分配(distribution)
  8. 特定製品でのみ有効なライセンスの禁止
  9. 他のソフトウェアを制限するライセンスの禁止
  10. ライセンスは技術中立的でなければならない
(参照:https://opensource.jp/osd/osd19/

過去問では上記の定義についての知識が問われているので目を通しておきましょう。

また、オープンソースでは著作権は放棄されていないこと、有償での販売することもできるということに注意してください。

続いて、代表的なOSSについて学んでいきます。
数は多いですが、試験では名前と用途だけわかれば充分なのでがんばって覚えましょう。

OS

Linux、Android

Webサーバ

Apache HTTP Server、Apache Tomcat

データベース

MySQL、PostgreSQL

プログラミング言語

PHP、Perl、Python、Ruby

その他

  • PEAR(PHPのライブラリ)
  • CPAN(Perlのライブラリ)
  • jQuery(Javascriptのライブラリ)
  • Eclipse(統合開発環境)
  • GCC(コンパイラのセット)
  • Apache Hadoop(大規模データの分散処理用ミドルウェア)

OSにLinux、WebサーバにApache、データベースにMySQL、プログラミング言語にPHP/Perl/Pythonを使い、OSSのみでWebアプリケーション開発することができます。

このソフトウェアのセットを、それぞれの頭文字を取って『LAMP』と呼びます。
データベースにPostgresSQLを使う場合は『LAPP』と呼びます。

演習


問1 優先度に基づくプリエンプティブなスケジューリングを行うリアルタイムOSで,二つのタスクA,Bをスケジューリングする。Aの方がBより優先度が高い場合にリアルタイムOSが行う動作のうち,適切なものはどれか。

ア Aの実行中にBに起動がかかると,Aを実行可能状態にしてBを実行する。

イ Aの実行中にBに起動がかかると,Aを待ち状態にしてBを実行する。

ウ Bの実行中にAに起動がかかると,Bを実行可能状態にしてAを実行する。

エ Bの実行中にAに起動がかかると,Bを待ち状態にしてAを実行する。

(出典:令和元年度 秋期 基本情報技術者試験 午前 問18)



問2 OSにおけるAPI(Application Program Interface)の説明として,適切なものはどれか。

ア アプリケーションがハードウェアを直接操作して,各種機能を実現するための仕組みである。

イ アプリケーションから,OSが用意する各種機能を利用するための仕組みである。

ウ 複数のアプリケーション間でネットワークを介して通信する仕組みである。

エ 利用者の利便性を図るために,各アプリケーションのメニュー項目を統一する仕組みである。

(出典:平成20年度 春期 基本情報技術者試験 午前 問29)



問3 ファイルシステムの絶対パス名を説明したものはどれか。

ア あるディレクトリから対象ファイルに至る幾つかのパス名のうち,最短のパス名

イ カレントディレクトリから対象ファイルに至るパス名

ウ ホームディレクトリから対象ファイルに至るパス名

エ ルートディレクトリから対象ファイルに至るパス名

(出典:平成30年度 春期 基本情報技術者試験 午前 問17)



問4 インタプリタの説明として,適切なものはどれか。

ア 原始プログラムを,解釈しながら実行するプログラムである。

イ 原始プログラムを,推論しながら翻訳するプログラムである。

ウ 原始プログラムを,目的プログラムに翻訳するプログラムである。

エ 実行可能なプログラムを,主記憶装置にロードするプログラムである。

(出典:平成31年度 春期 基本情報技術者試験 午前 問19)



問5 OSIによるオープンソースソフトウェアの定義に従うときのオープンソースソフトウェアに対する取扱いとして,適切なものはどれか。

ア ある特定の業界向けに作成されたオープンソースソフトウェアは,ソースコードを公開する範囲をその業界に限定することができる。

イ オープンソースソフトウェアを改変し再配布する場合,元のソフトウェアと同じ配布条件となるように,同じライセンスを適用して配布する必要がある。

ウ オープンソースソフトウェアを第三者が製品として再配布する場合,そのオープンソースソフトウェアの開発者は第三者に対してライセンス費を請求することができる。

エ 社内での利用などのようにオープンソースソフトウェアを改変しても再配布しない場合,改変部分のソースコードを公開しなくてもよい。

(出典:平成31年度 春期 基本情報技術者試験 午前 問20)


解説

問1 優先度に基づくプリエンプティブなスケジューリングを行うリアルタイムOSで,二つのタスクA,Bをスケジューリングする。Aの方がBより優先度が高い場合にリアルタイムOSが行う動作のうち,適切なものはどれか。

正解 ウ

Aの方がBより優先度が高いので、Aが実行状態、Bが実行可能状態になるようにスケジューリングされます。待ち状態は入出力待ちなどになるため、今回はAもBも待ち状態にはなりません。

ア:Aが実行状態、Bが実行可能状態のままです。

イ:Aが実行状態、Bが実行可能状態のままです。

ウ:正しいです。

エ:Aが実行状態、Bは実行可能状態にされます。


問2 OSにおけるAPI(Application Program Interface)の説明として,適切なものはどれか。

正解 イ

ア:これは、デバイスドライバの特徴です。

イ:正しいです。

ウ:これは、プロセス間通信の特徴です。

エ:これは、CUA(Common User Access)の特徴です。


問3 ファイルシステムの絶対パス名を説明したものはどれか。

正解 エ

絶対パスはルートディレクトリからのパスになるので、『エ』が正解です。


問4 インタプリタの説明として,適切なものはどれか。

正解 ア

ア:正しいです。

イ:これは、トランスレータの特徴です。

ウ:これは、コンパイラの特徴です。

エ:これは、ローダの特徴です。


問5 OSIによるオープンソースソフトウェアの定義に従うときのオープンソースソフトウェアに対する取扱いとして,適切なものはどれか。

正解 エ

ア:定義の5(個人やグループに対する差別の禁止)に反しています。

イ:定義の3(派生ソフトウェア)に反しています。

ウ:定義の1( 再頒布の自由)に反しています。

エ:正しいです。


以上で、ソフトウェアの学習は終わりです。
次は、ハードウェアについて学んでいきます。

ハードウェア

ハードウェアについては『コンピュータ構成要素』で少し学習しましたが、もう少し詳しく学習していきます。

まずは、試験に出題されやすい『論理回路』についてです。

論理回路とは、コンピュータが演算や記憶を行うための電子回路です。
なかなかピンとこないとは思いますが、試験ではそこまで深堀はされないので過去問が解けるようになれば大丈夫です。

試験では回路の特徴を抑えていれば回答ができる問題が多いので、ここでは回路の種類について学習していきましょう。

論理積回路(AND回路)

論理回路について学習する前に、少し『離散数学』の分野の復習をしましょう。

1番最初に「コンピュータは、オンの状態を『1』、オフの状態を『0』としか理解することができない」と説明したのを覚えているでしょうか。

source5.png

論理回路でも、この前提が重要になります。
この前提を思い出したうえで、論理積回路(AND回路)をみてみましょう。

論理積回路(AND回路)は、入力ABがどちらも『1』だった場合『1』を出力します。

source67.png

積は掛け算の答えなので、1×1=1をイメージすれば分かりやすいかもしれません。

これだけだと、まだ分かりにくいと思うので、他の種類もみてみましょう。

論理和回路(OR回路)

次は、論理和回路(OR回路)についてです。

論理和回路(OR回路)は、入力ABがどちらかでも『1』だった場合『1』を出力します。

source68.png

これも和は足し算の答えなので、1+0=1をイメージすれば分かりやすいもしれません。

さらに、もう1つみてみましょう。

否定回路(NOT回路)

否定回路(NOT回路)は、入力Aが『0』なら『1』を出力、入力Aが『1』なら『0』を出力します。

source69.png

これは、否定という名の通りなので覚えやすいと思います。
次は、上記の3つを組み合わせた論理回路を学習していきます。

否定論理積回路(NAND回路)

否定論理積回路(NAND回路)は、上記で学習した、論理積回路(AND回路)と否定回路(NOT回路)を合わせたものです。

一見、難しくみえますが、分けて考えると単純なので順に考えていきましょう。

まず、 論理和回路(OR回路)は、入力ABがどちらかでも『1』だった場合『1』を出力します。
次に、否定回路(NOT回路)なので、入力が『1』なら『0』を出力します。

source70.png

もし、入力が『0』なら『1』を出力します。

他の組み合わせもみてみましょう。

否定論理和回路

否定論理積回路(NAND回路)は、論理和回路(OR回路)と否定回路(NOT回路)を合わせたものです。

これも分けて考えてみましょう。
論理和回路(OR回路)は、入力ABがどちらかでも『1』だった場合『1』を出力を出力します。
次に、否定回路(NOT回路)なので、入力が『1』なら『0』を出力します。

source71.png

排他的論理和回路(XOR回路)

最後は排他的論理和回路(XOR回路)です。
排他的論理和回路(XOR回路)は上記のものと比べると考え方が複雑です。
なので、ここではシンプルに、入力ABのどちらか片方のみが『1』のときに『1』を出力すると覚えておきましょう。

source72.png

以上で、基本論理回路については終わりです。
論理回路は試験に出やすいので過去問を解いて解けるようにしておきましょう。

フリップフロップ回路

メモリの分野で学習した「SRAM」は『フリップフロップ回路』という電子回路を使用しています。

フリップフロップ回路とは、1ビットの情報を保持できる順列回路です。特徴としては、2つの安定状態をもつという点があります。

深く理解する必要はありませんが、SRAMで使用されているという点については、試験に出題されやすいので覚えておきましょう。

アクチュエータ

ここから少し話しは変わりますが、『アクチュエータ』について学習します。

アクチュエータとは、コンピューターが出力した電子信号や、入力されたエネルギーを物理的動作に変換するものです。
例えば、電気等のエネルギーを回転等の物理的操作に変換することができます。
上記の通り、エネルギーだけでなく、コンピューターが出力した電子信号も物理的動作に変換できるので覚えておきましょう。

試験では深く問われることはないので、特徴をしっかり抑えておいてください。
以上でハードウェアについての学習は終わりです。
最後に演習問題を解いてみましょう。

演習


問1 二つの入力と一つの出力をもつ論理回路で,二つの入力A,Bがともに1のときだけ,出力Xが0になるものはどれか。

source73.png

ア AND回路

イ NAND回路

ウ OR回路

エ XOR回路

(出典:平成31年度 春期 基本情報技術者試験 午前 問22)



問2 メモリセルにフリップフロップ回路を利用したものはどれか。

ア DRAM

イ EEPROM

ウ SDRAM

エ SRAM

(出典:平成31年度 春期 基本情報技術者試験 午前 問21)



問3 二つの安定状態をもつ順序回路はどれか。

ア NANDゲート

イ 加算器

ウ コンデンサ

エ フリップフロップ

(出典:平成26年度 秋期 基本情報技術者試験 午前 問22)



問4 アクチュエータの説明として,適切なものはどれか。

ア 与えられた目標量と,センサから得られた制御量を比較し,制御量を目標量に一致させるように操作量を出力する。

イ 位置,角度,速度,加速度,力,温度などを検出し,電気的な情報に変換する。

ウ エネルギー発生源からのパワーを,制御信号に基づき,回転,並進などの動きに変換する。

エ マイクロフォン,センサなどが出力する微小な電気信号を増幅する。

(出典:平成30年度 春期 基本情報技術者試験 午前 問21)



問5 アクチュエータの機能として,適切なものはどれか。

ア アナログ電気信号を,コンピュータが処理可能なディジタル信号に変える。

イ キーボード,タッチパネルなどに使用され,コンピュータに情報を入力する。

ウ コンピュータが出力した電気信号を力学的な運動に変える。

エ 物理量を検出して,電気信号に変える。

(出典:平成29年度 秋期 基本情報技術者試験 午前 問22)


解説

問1 二つの入力と一つの出力をもつ論理回路で,二つの入力A,Bがともに1のときだけ,出力Xが0になるものはどれか。

正解 イ

これは、論理回路の問題です。

ア:論理積回路(AND回路)は、入力ABがどちらも『1』だった場合、『1』を出力します。

イ:否定論理積回路(NAND回路)は、論理積回路(AND回路)と否定回路(NOT回路)を合わせたものです。論理積回路(AND回路)は、入力ABがどちらも『1』だった場合、『1』を出力。次に否定回路(NOT回路)がくるので、出力は『0』。なので、これが正解です。

ウ:論理和回路(OR回路)は、入力ABがどちらかでも『1』だった場合、『1』を出力します。

エ:排他的論理和回路(XOR回路)は、入力ABのどちらか片方のみが『1』のときに『1』を出力します。


問2 メモリセルにフリップフロップ回路を利用したものはどれか。

正解 エ

ア:主記憶装置として使用されているメモリです。フリップフロップ回路は利用されていません。

イ:電磁的に消去できるメモリです。フリップフロップ回路は利用されていません。

ウ:DRAMの1種です。フリップフロップ回路は利用されていません。

エ:正しいです。フリップフロップ回路を利用しています。


問3 二つの安定状態をもつ順序回路はどれか。

正解 エ

ア:否定論理積の論理回路です。

イ:演算装置で、2進数の加算を行います。

ウ:蓄電器とも呼ばれ、電気を蓄えたり、放出したりできる電子部品です。

エ:正しいです。


問4 アクチュエータの説明として,適切なものはどれか。

正解 ウ

ア:これは、フィードバック制御の特徴です。

イ:これは、センサの特徴です。

ウ:アクチュエータの特徴なので正しいです。

エ:これは、アンプの特徴です。


問5 アクチュエータの機能として,適切なものはどれか。

正解 ウ

ア:これは、A/Dコンバータの特徴です。

イ:これは、静電センサーの特徴です。

ウ:アクチュエータの特徴なので正しいです。

エ:これは、センサの特徴です。


以上で、このチャプターの学習は終わりです。
次のチャプターでは、技術要素について学んでいきます。

Lesson 2 Chapter 3
技術要素

このチャプターでは、ヒューマンインタフェース、マルチメディア、データベース、ネットワーク、セキュリティのような技術要素に関することを中心に学習します。

ヒューマンインタフェース

まず、技術要素の中のヒューマンインタフェースについて学習していきます。

この分野はそこまで出題率は高くないですが、問題は解きやすいものが多いので簡単に抑えておきましょう。

ヒューマンインタフェース技術

ヒューマンインターフェイスとは、人とコンピュータ(機械)が情報をやり取りするための手段のことです。 例えば、ヒューマンインターフェイスによって、人とコンピュータが情報をやり取りする際の操作性を向上させたりすることができます。

では、実際にどのようなヒューマンインターフェイスがあるかを学んでいきましょう。

GUI

GUIとは、Graphical User Interfaceの略で、ユーザー操作を直観的に行うことができるユーザーインターフェースのことです。
Windowsはマウスやアイコン等を用いて操作を行うことができるので、GUIベースのOSと言われています。

ラジオボタン

ラジオボタンとは、排他的な幾つかの選択項目から1つを選ぶGUIウィジェットです。

例えば、以下のようなものがラジオボタンです。

-------------------------------------------------------

あなた受験する試験はどれですか?
ITパスポート試験
基本情報技術者試験
応用情報技術者試験

※クリックで選択できます

-------------------------------------------------------

おそらく皆さん1度は見たことがあるのではないでしょうか。
ただし、試験では「排他的な幾つかの選択項目から1つを選ぶ」というように、聞きなじみのない表現で聞いてくるので注意しましょう。

プルダウンメニュー

プルダウンメニューは、複数の選択肢の中から1つを選択させるGUIの1種です。

例えば、以下のようなものがプルダウンメニューです。

-------------------------------------------------------

あなた受験する試験はどれですか?

※クリックで選択できます

-------------------------------------------------------

こちらも皆さん1度は見たことがあると思います。
プルダウンメニューの特徴としては、ラジオボタンと同様に入力するより簡単に選択できるという点があります。

ただし、選択肢が多すぎるものや、選択肢の文字数が長すぎるものなどには適していないという点は抑えておきましょう。

インタフェース設計

次はインターフェイス設計について学んでいきます。
まずは、Webコンテンツに関する試験に出やすい用語を抑えておきましょう。

ユーザビリティ

ユーザビリティは、使い勝手を意味するので、ユーザーが使いやすいものという意味になります。 Webコンテンツを作成するうえで、ユーザビリティの高さはとても重要視されます。

ユニバーサルデザイン

ユニバーサル(Universal)は、「普遍的な」という意味があります。
そのため、ユニバーサルデザインは、年齢・性別・能力などが異なっても、多くの人が利用できるデザインを指します。

アクセシビリティ

アクセシビリティは、障碍者や高齢者でも円滑に利用できる機能のことです。

ウェブアクセシビリティ基盤委員会(WAIC)は、Web Content Accessibility Guidelines (WCAG)というガイドラインを公開しています。

バリアフリー設計

バリアフリー設計は、障碍者や高齢者に負担を与えない優しい設計のことです。

上記の用語は試験に出題される可能性があるので、違いを覚えておきましょう。

インターフェイス設計のチェック

次に、インターフェイス設計の分野では、入力データ等のチェック方法に関する出題が多いので、その部分を学習していきましょう。

入力データ等を検査する方法として以下のような方法があります。

論理チェック

論理チェックとは、入力されたデータ等が適切かどうか論理的に調べることです。
適切か論理的に調べるので、普通に考えたら間違えといえる入力データを発見することができます。

例えば、生年月日が未来の日付になっている場合は不適切と判断します。

重複チェック

これもその名の通り、重複をチェックします。
例えば、同じものが複数あるとおかしい伝票番号で考えてみましょう。 伝票番号が重複することは、誤りなので不適切と判断できます。

シーケンスチェック

シーケンス(sequence)とは、連続・順序という意味があります。
そのため、シーケンスチェックとは、入力データ等が順番通りに並んでいるかをチェックします。

例えば、受験番号を順番に並べているようなデータで、順番通りに並んでいるかをチェックして順番通りでなければ誤りと判断します。

フォーマットチェック

これもその名の通り、フォーマット通りかどうかをチェックします。

例えば、電話番号は基本的に数字のみなので、数字のみをフォーマットとします。その際に、数字以外が入力されている場合は誤りと判断します。

チェックディジット

チェックディジットの問題は出題されやすいので、解けるようにしておきましょう。

チェックディジットとは、入力誤りなどを見つけるために元の符号に付加される数字のことです。 有名なものとしては、運転免許証の免許証番号に使用されています。

source74.png

実は運転免許証の免許証番号の11桁目は、その前の10桁の数字から計算で求めることができます。

計算方法としては、次の通りです。

① 1桁目から5、4、3、2、7、6、5、4、3、2を各桁に掛けて足す
② 足した合計を11で割る
③ その余りを11から引く

このように運転免許証の免許証番号には、チェックディジットが使用されています。 チェックディジットを使用することで、番号の入力ミスや偽造を瞬時に判断できる等のメリットがあります。

上記で簡単な計算をしたように試験でも簡単な計算問題が出るので、過去問で慣れておきましょう。

以上で、インタフェース設計についての学習は終わりです。
最後に演習問題を解いてみましょう。

演習


問1 GUIの部品の一つであるラジオボタンの用途として,適切なものはどれか。

ア 幾つかの項目について,それぞれの項目を選択するかどうかを指定する。

イ 幾つかの選択項目から一つを選ぶときに,選択項目にないものはテキストボックスに入力する。

ウ 互いに排他的な幾つかの選択項目から一つを選ぶ。

エ 特定の項目を選択することによって表示される一覧形式の項目の中から一つを選ぶ。

(出典:平成31年度 春期 基本情報技術者試験 午前 問24)



問2 ある商店では,約200品目の商品を取り扱っている。商品データの新規登録画面の入力項目のうち,入力方式としてプルダウンメニューを用いるのが適しているものはどれか。

source75.png

(出典:平成25年度 秋期 基本情報技術者試験 午前 問26)



問3 次のような注文データが入力されたとき,注文日が入力日以前の営業日かどうかを検査するために行うチェックはどれか。

source76.png

ア シーケンスチェック

イ 重複チェック

ウ フォーマットチェック

エ 論理チェック

(出典:平成30年度 春期 基本情報技術者試験 午前 問24)



問4 Webコンテンツのユーザビリティの説明として,適切なものはどれか。

ア 障がい,年齢,性別,国籍などにかかわらず,だれもが使える設計をいう。

イ 障がい者や高齢者がサービスを支障なく操作又は利用できる機能をいう。

ウ 障がい者や高齢者に負担を与えない設計をいう。

エ どれだけ利用者がストレスを感じずに,目標とする要求が達成できるかをいう。

(出典:平成21年度 春期 基本情報技術者試験 午前 問27)



問5 次の方式によって求められるチェックディジットを付加した結果はどれか。ここで,データを7394,重み付け定数を1234,基数を11とする。

source77.png

ア 73940

イ 73941

ウ 73944

エ 73947

(出典:平成29年度 秋期 基本情報技術者試験 午前 問24)


解説

問1 GUIの部品の一つであるラジオボタンの用途として,適切なものはどれか。

正解 ウ

これは、GUIについての問題です。
ラジオボタンは、排他的な幾つかの選択項目から1つを選ぶGUIウィジェットです。

-------------------------------------------------------

あなた受験する試験はどれですか?
ITパスポート試験
基本情報技術者試験
応用情報技術者試験

-------------------------------------------------------

ア:これは、チェックボックスの特徴です。

イ:これは、コンボボックスの特徴です。

ウ:正しいです。

エ:これは、リストボックスの特徴です。


問2 ある商店では,約200品目の商品を取り扱っている。商品データの新規登録画面の入力項目のうち,入力方式としてプルダウンメニューを用いるのが適しているものはどれか。

正解 ウ

これは、GUIについての問題です。
プルダウンメニューは、複数の選択肢の中から、1つを選択させるGUIです。

-------------------------------------------------------

あなた受験する試験はどれですか?

-------------------------------------------------------

ア:商品番号は約200あるので、プルダウンメニューは適していません。

イ:商品名は約200あるので、プルダウンメニューは適していません。

ウ:10文字以内で5区分なので、もっとも適していると言えます。

エ:価格は約200あるので、プルダウンメニューは適していません。


問3 次のような注文データが入力されたとき,注文日が入力日以前の営業日かどうかを検査するために行うチェックはどれか。

正解 エ

一般的に考えて、『注文データの入力』→『注文』なので、論理チェックが適切と判断できます。

ア:シーケンスチェックは、入力データ等が順番通りに並んでいるかをチェックします。

イ:重複チェックは、データの重複をチェックします。

ウ:フォーマットチェックは、フォーマット通りかどうかをチェックします。

エ:正しいです。


問4 Webコンテンツのユーザビリティの説明として,適切なものはどれか。

正解 エ

ア:これは、ユニバーサルデザインの特徴です。

イ:これは、アクセシビリティの特徴です。

ウ:これは、バリアフリー設計の特徴です。

エ:正しいです。


問5 次の方式によって求められるチェックディジットを付加した結果はどれか。ここで,データを7394,重み付け定数を1234,基数を11とする。

正解 ア

これは、チェックディジットの問題です。
一見、難しく見えますが、指示通りに計算していくことで、答えを出すことができます。

まず(1)を計算します。

"(7×1)+(3×2)+(9×3)+(4×4)=7+6+27+16=56"

『56』と分かったので、次に(2)を計算します。

"56÷11=5あまり1"

最後に(3)を計算します。

"11-1=10"

チェックディジットは、『10』の1の位の『0』と分かったので「73940」が答えと分かります。


以上で、技術要素についての学習は終わりです。
次は、マルチメディアについて学んでいきます。

マルチメディア

ここから、マルチメディアについて学習していきます。
マルチメディアとは、文字、音、映像などの複数の情報を組み合わせて扱うことを指します。

とはいえ、マルチメディア技術の分野で出題されるのは、ほとんどが「音声サンプリング」の問題なので、今回はそこを重点的に学習していきます。

サンプリングは、基礎理論(chapter1)で学習したので少し復習になりますが、標本化のことです。 標本化とは、アナログの波形を一定時間ごとに区切る処理のことでしたね。

source32.png

マルチメディア技術の分野では、音声のサンプリングに関する計算問題が出題されるので、ここから解き方を学習していきましょう。

まずは、1分間のデータ量の解き方です。

例えば、以下のような条件だったとします。


  • 音声のサンプリング:1秒間に20,000回行う
  • サンプリングした値をそれぞれ8ビットのデータとして記録

上記の条件の場合、1秒間に20,000回行い、1つのデータを8ビットで記録するので、

"20,000回×8ビット×60秒=9,600,000ビット"

このように計算して1分間のデータ量を求めます。

次は、ある容量のメモリに最大何分記録できるかを求めてみましょう。

例えば、以下の条件だったとします。


  • 1分間のデータ量:9,600,000ビット
  • フラッシュメモリの容量:1,024×106バイト

まず、上記の条件の場合、ビット単位からバイト単位に変換します。

1バイト=8ビットなので以下のように計算します。

"9,600,000ビット÷8=1,200,000バイト=1.2Mバイト"

次に、フラッシュメモリの容量が、1,024×106バイトなので、

"1,024×106バイト=1,024Mバイト" となります。

1,024Mのフラッシュメモリに最大何分記録できるかを求めるので、以下のような計算になります。

"1,024Mバイト÷1.2Mバイト=約853分"

このような計算問題が出題率が高いので、過去問を何度か解いて慣れておきましょう。

次は、マルチメディア応用について学習していきます。

マルチメディア応用

マルチメディア応用の分野では、用語の意味を問われる問題が多いです。 暗記要素が強いですが、どのようなものなのかイメージしながら覚えていきましょう。

VR

最近は、VRという用語をよく耳にすることが多いのではないでしょうか。 VRもマルチメディアの1つです。

そもそもVRとは、Virtual Realityの略で仮想現実を意味します。 3次元の仮想空間を構成して、まるでその場所にいるかのような間隔を得られるのが特徴です。

source78.png

最近はVRゴーグルをかけてゲームを行う、VRゲームも増えてきています。

AR

VRと似たものとして、ARがあります。

ARとは、Augmented Realityの略で拡張現実を意味します。

拡張現実という名の通り、現実の一部を拡張するのが特徴です。 最近はスマートグラス等も少しずつ販売されてきているため、注目されつつあります。

SR

SRとは、Substitutional Realityの略で代替現実を意味します。
SRは、現実世界で録画された過去の映像等を視聴し、まるで目の前で起きている現実と錯覚させます。

上記のように、VR、AR、SRで特徴が異なるので、それぞれの違いを覚えておきましょう。

次は、アニメーションに関する用語について学習していきます。

モーションキャプチャ

モーションキャプチャとは、人などの動きを自然に取り込む技術です。 カメラやセンサ等を使って動きを記録します。この技術は、映画やゲーム等で利用されています。

キーフレーム法

キーフレーム法は、補間アニメーションとも呼ばれていて滑らかなアニメーションを作成するための技術です。 数フレームごとに、物体の動きのポイントを指定し、その間を計算で補間して滑らかなアニメーションを作成します。

ピクセルシェーダ

ピクセルシェーダとは、3DGCで光源や陰影を処理する技術です。画像をピクセル単位で処理することが特徴です。

モーフィング

モーフィングとは、ある物体からある物体に変化していく映像を自然にみえるように作成する技術です。 変化していく様子が滑らかにみえるように、画像を複数作成して中間を補います。 例えば、映画等で人間から化け物に変化する場面などで利用されます。

以上でマルチメディアに関する学習は終わりです。最後に演習問題を解いてみましょう。

演習


問1 音声などのアナログデータをディジタル化するために用いられるPCMにおいて,音の信号を一定の周期でアナログ値のまま切り出す処理はどれか。

ア 暗号化

イ 標本化

ウ 符号化

エ 量子化

(出典:平成29年度 春期 基本情報技術者試験 午前 問24)



問2 音声のサンプリングを1秒間に11,000回行い,サンプリングした値をそれぞれ8ビットのデータとして記録する。このとき,512×106バイトの容量をもつフラッシュメモリに記録できる音声の長さは,最大何分か。

ア 77

イ 96

ウ 775

エ 969

(出典:平成31年度 春期 基本情報技術者試験 午前 問25)



問3 AR(Augmented Reality)の説明として,最も適切なものはどれか。

ア 過去に録画された映像を視聴することによって,その時代のその場所にいたかのような感覚が得られる。

イ 実際に目の前にある現実の映像の一部にコンピュータを使って仮想の情報を付加することによって,拡張された現実の環境が体感できる。

ウ 人にとって自然な3次元の仮想空間を構成し,自分の動作に合わせて仮想空間も変化することによって,その場所にいるかのような感覚が得られる。

エ ヘッドマウントディスプレイなどの機器を利用し人の五感に働きかけることによって,実際には存在しない場所や世界を,あたかも現実のように体感できる。

(出典:平成30年度 春期 基本情報技術者試験 午前 問26)



問4 アニメーションの作成過程で,センサやビデオカメラなどを用いて人間や動物の自然な動きを取り込む技法はどれか。

ア キーフレーム法

イ ピクセルシェーダ

ウ モーションキャプチャ

エ モーフィング

(出典:平成26年度 春期 基本情報技術者試験 午前 問24)



問5 コンピュータアニメーション技法のうち,モーフィングの説明はどれか。

ア 画像A,Bを対象として,AからBへ滑らかに変化していく様子を表現するために,その中間を補うための画像を複数作成する。

イ 実際の身体の動きをディジタルデータとして収集して,これを基にリアルな動きをもつ画像を複数作成する。

ウ 背景とは別に,動きがある部分を視点から遠い順に重ねて画像を作成することによって,奥行きが感じられる2次元アニメーションを生成する。

エ 人手によって描かれた線画をスキャナで読み取り,その閉領域を同一色で彩色処理する。

(出典:平成25年度 秋期 基本情報技術者試験 午前 問27)


解説

問1 音声などのアナログデータをディジタル化するために用いられるPCMにおいて,音の信号を一定の周期でアナログ値のまま切り出す処理はどれか。

正解 イ

これは、音声サンプリングの問題です。

ア:暗号化は、第三者にデータを見られるのを防ぐ方法です。

イ:正しいです。

ウ:符号化は、量子化した値を2進数に変換します。

エ:量子化は、標本化したデータを定めた段階数に当てはめて整数値に置き換えます。


問2 音声のサンプリングを1秒間に11,000回行い,サンプリングした値をそれぞれ8ビットのデータとして記録する。このとき,512×106バイトの容量をもつフラッシュメモリに記録できる音声の長さは,最大何分か。

正解 ウ

これは、音声サンプリングの計算問題です。
まず、1分間のデータ量を求めます。

この問題の場合、1秒間に11,000回行い、1つのデータを8ビットで記録するので、

"11,000回×8ビット×60秒=5,280,000ビット"

このように、1分間のデータ量を求めることができます。

次は、フラッシュメモリに、最大何分記録できるかを求めます。
まず、上記の条件の場合、ビット単位からバイト単位に変換します。

1バイト=8ビットなのでこのように計算します。

"5,280,000ビット÷8=660,000バイト=0.66Mバイト"

次に、フラッシュメモリの容量が、フラッシュメモリの容量:512×106バイトなので、

"512×106バイト=512Mバイト"

となります。

512Mのフラッシュメモリに、最大何分記録できるかを求めるので以下のような計算になります。

"512Mバイト÷0.66Mバイト=約775分"

よって、「ウ」が正解です。


問3 AR(Augmented Reality)の説明として,最も適切なものはどれか。

正解 イ

これは、ARについての問題です。

ア:これは、SRの特徴です。

イ:正しいです。

ウ:これは、VRの特徴です。

エ:これは、VRの特徴です。


問4 アニメーションの作成過程で,センサやビデオカメラなどを用いて人間や動物の自然な動きを取り込む技法はどれか。

正解 イ

これは、アニメーションの用語に関する問題です。

ア:キーフレーム法は、数フレームごとに物体の動きのポイントを指定し、その間を計算で補間して滑らかなアニメーションを作成します。

イ:正しいです。

ウ:ピクセルシェーダは、3DGCで光源や陰影を処理する技術です。

エ:モーフィングは、ある物体からある物体に変化していく映像を自然にみえるように作成する技術です。


問5 コンピュータアニメーション技法のうち,モーフィングの説明はどれか。

正解 ア

これは、モーフィングについての問題です。

ア:正しいです。

イ:これは、モーションキャプチャの特徴です。

ウ:これは、セルアニメーションの特徴です。

エ:これは、デジタルアニメーションの特徴です。


以上で、マルチメディアの学習は終わりです。
次はデータベースについて学習していきます。

データベース

ここから、データベースについて学んでいきます。

まず、データベース(DB: Database)という言葉は、「組織化されたデータの集合」を意味しています。 そのデータベースを管理するソフトウェアが、データベース管理システム(DBMS: Database Management System)になりますが、DBMSを指してデータベースと呼ぶこともあります。 代表的なDBMSとしてはMySQLやPostgreSQLがあります。

データベース方式

まずは、データベース方式について学んでいきます。

スキーマ

データベースの構造を記述したものを、スキーマと呼びます。
試験ではANSI/SPARC (米国国家規格協会:American National Standards Instituteの標準化計画要求委員会:Standards Planning And RequirementsCommittee)が提唱した、『3層スキーマ構造』について出題されているので確認しておきましょう。

3層スキーマ構造とは、スキーマを外部スキーマ、概念スキーマ、内部スキーマの3つに分ける構造のことで、それぞれのスキーマの役割は以下のようになっています。

  • 外部スキーマは、データの利用者からの見え方を表現します。
  • 概念スキーマは、データの論理的関係を表現します。
  • 内部スキーマは、データベースを記録媒体にどのように格納するかを表現します。

3層スキーマ構造にはスキーマを3つに分けることによって独立性が保証され、それぞれの層での変更が別の層に対して影響を与えずにすむというメリットがあります。

データモデル

データベースの設計(の結果)をデータモデルと呼びます。
スキーマと似ていますが混同しないように気を付けましょう。

データモデルには設計の各段階ごとに概念データモデル、論理データモデル、物理データモデルがあり、それぞれのデータモデルの役割は以下のようになっています。

  • 概念データモデルは、データの関連など、データベースの概要を設計したものです。
  • 論理データモデルは、概念データモデルを詳細化し、データベースの論理的なデータ構造を設計したものです。
  • 物理データモデルは、論理データモデルをどのように物理的に実装するかを設計したものです。

論理データモデルの例としてはデータ間の関係を2次元の表で表現する関係モデル、木構造で表現する階層モデル、グラフで表現するネットワークモデル(網モデル)などがあります。

関係データベース

データベース方式には階層モデルを実装した階層型データベースや、ネットワークモデル(網モデル)を実装した網型データベースなどがありますが、最も有名で重要なデータベース方式が、『関係モデル』を実装した『関係データベース(RDB:Relational Database)』です。
例えば、有名なDBMSのMySQLやPostgreSQLも関係データベース管理システム(RDBMS)です。

先ほど述べたように、関係モデルとはデータ間の関係を下図のように2次元の表(テーブル)で表現したもので、表の要素にはそれぞれ名前がついているので、覚えておきましょう。

source79.png

  • 『定義域』とはデータ型のことです。
  • 『属性』とは属性名と定義域名のペアのことで、テーブルの列に対応します。
  • 『タプル(組)』とは属性値の組み合わせのことで、テーブルの行に対応します。
  • 『関係』とは(同じ型の)タプルの集合のことで、テーブル全体に対応します。

データベース設計

続いて、データベース設計について学んでいきます。

E-R図とUML

データベースの設計は視覚的にわかりやすいように、よく図にして表現されます。
DBMSに依存せずデータの関連を表現する代表的な方法としては、『E-R図』と『UML』があります。

まずE-R図についてですが、これは対象を実体(エンティティ)、属性、関連(リレーションシップ)の3つで表現した、『E-Rモデル(entity-relationshipModel:実体関連モデル)』を図で表現したもので、関係データベースの表現によく使われています。
しかし基本情報技術者試験ではE-R図を読み取る問題の出題は過去にはほとんどなく、次のUMLが使われることがほとんどです。

UML(Unified Modeling Language:統一モデリング言語)とはシステムの振る舞いや構造をダイヤグラム(図)によって視覚的に表現することができる、人工言語です。
UMLには2023年4月現在、14種類のダイヤグラムがありますが、基本情報技術者試験のデータベースの問題ではその内の1つの『クラス図』を使った問題が出題されています。

まずUMLクラス図の"クラス"とはオブジェクト指向プログラミングの用語から来ていて、データと振る舞いが定義されたデータ型のことです。
オブジェクト指向プログラミングや"クラス"についてはChapter4 開発技術のシステム開発技術の節で説明するので、ここでは理解できていなくても大丈夫です。
UMLクラス図はその"クラス"を表現するためのものですが、データベースの分野でもクラス図を使ってデータモデルを表現できます。

ここから実際のクラス図の例を使って、具体的なクラス図の表記方法について説明していきます。

source80.png

出典:平成29年度 秋期 基本情報技術者試験 午前 問28

上図は基本情報技術者試験で実際に出題されたクラス図です。
クラス図ではクラス名、属性(フィールド)、クラス操作(メソッド)の三つの要素を長方形で囲って"クラス"を表現します。
ただし属性とクラス操作は省略することもできて、上図では省略されています。
そしてそのクラスを線で結んで、データ同士の『関連』を表します。

上図の事業部から部門に引かれている矢印は"汎化と特化"という関係を示していて、事業部が部門の一種であることを意味しています。

関連線の端に記されている数字と記号は『多重度』と呼ばれ、互いのデータが結びつく数を示しています。
多重度では".."の左右に最小値と最大値が記され、"*"はゼロ以上の数すべてを意味します。
例えば上図の部門と社員の関連では、部門の多重度が1に対し、社員の多重度は"1..*"で「一つ以上」を意味していて、「一つの部門に対し一人以上の社員が所属する」という関係を読み取ることができます。

この問題は演習問題にしてあるので、後でぜひ解いてみてください。
また、クラス図についてはChapter4 開発技術のシステム開発技術の節でより詳しく説明しているので、そちらも参考にしてみてください。

キーと制約

関係データベースではデータに矛盾を生じさせない方法として、テーブルの列に『整合性制約(一貫性制約)』を設けることができます。
例えば、制約を満たさないデータの作成・変更・削除等はエラーとすることで、データベースの整合性を保つことができます。

制約の例としては以下のようなものがあります。

  • 非NULL制約(NOT NULL制約):空値(NULL)を許容しない。
  • 検査制約(CHECK制約):指定した条件を満たす値でなければならない。
  • 一意性制約(UNIQUE制約):ほかの行の同じ列の値と重複する値を許容しない。

また、制約を使うことで、『主キー』や『外部キー』と呼ばれる、テーブルで重要となる列を定義することができます。それぞれ説明していきます。

まず『主キー』とは、レコード(行)を特定するための列のことです。
主キーを設定するための主キー制約(PRIMARY KEY制約)は、非NULL制約と一意性制約を合わせたものになります。

続いて『外部キー』とは、データ同士を関連づけるために他のテーブルの値を参照する列のことです。
外部キーを設定するための外部キー制約(参照制約、FOREIGN KEY制約)は、「参照先の列に存在する値でなければならない」になります。

また、主キーと外部キーは列制約ではなく表制約を設けることで、複数の列を複合キーとしてまとめて設定することもできます。

source81.png

データの正規化

関係データベースでは一つのテーブルにいろんな種類のデータを詰め込むこともできますが、そうしたやり方では容易にデータの重複や矛盾を招いてしまいます。
そこでテーブルの分割・整理をする、『正規化』と呼ばれる操作を行うことで、そういったリスクを減らすことができます。
正規化にはいくつか種類がありますが、基本の第1正規化、第2正規化、第3正規化を覚えましょう。

まず第1正規化では、一つの列に一つの値のみ格納させます。
例えば、ある人物のデータをテーブルに格納させるときに名前と年齢を"佐藤,21"のようにカンマ区切りで文字列として一つの列に格納させることもできますが、第一正規化ではそういったデータは分離させて別々の列に格納させます。
また、繰り返し要素の配列なども別々の行に分けて格納させます。

続いて第2正規化では、第1正規形にした後、主キーの一部の列のみから一意に決まる列を別のテーブルに分離させます。
これは主キーが複数の列から構成される、複合キーとなっている場合のみ必要になります。
また、今述べたような、ある列(または列の集合)から別の列が一意に決まる場合は、それらの間には「関数従属性がある」と呼ばれるので覚えておきましょう。

最後に第3正規化では、第2正規形にした後、非キー列(主キーにならない列)から一意に決まる(関数従属性がある)列を別のテーブルに分離させます。

第2正規化と第3正規化については実際に例を見たほうがわかりやすいかと思います。 演習問題に正規化を扱う問題があるので、確認してみてください。

データ操作

続いて、データ操作について学んでいきます。

関係演算

データベース方式の節で学んだように、関係データベースの元となっているのが、データ間の関係を2次元の表で表現した、関係モデルでした。
関係データベースの操作を理解するためにも、関係モデルの操作を覚えておきましょう。
関係モデルに対する操作として、『集合演算(和、差、積、直積)』と『関係演算(選択、射影、結合、商)』があります。

なお、わかりやすさのために関係モデルではなく対応する関係データベースの用語も使っています(例えば「関係」の代わりに「表」を使っています)。

  • 和(union):同じ属性を持つ2つの表の、少なくとも一方に含まれる行をすべて集めた表をつくる操作。
  • 差(set difference):ある表から、同じ属性を持つもう一つの表の行を抜いた表をつくる操作。
  • 積(intersection):同じ属性を持つ2つの表の、両方に含まれる行をすべて集めた表をつくる操作。
  • 直積(cartesian product):2つの表にある項目の、すべての組み合わせからなる表をつくる操作。
  • 選択(selection):表から指定された行を取り出す操作。
  • 射影(projection):表から指定された列を取り出す操作。
  • 結合(join):2つの表を、共通する属性で結合して1つの表にする操作。
  • 商(relational division):ある表の、もう一つの表の全ての項目を含む行をすべて集めた表をつくる操作(直積の逆操作)。

SQL

『SQL(Structured Query Language)』は、RDBMSにおいてデータの定義や操作を行うための代表的なデータベース言語の1つで、多くのDBMSがSQLに対応しています。
SQLはテーブルやその制約の定義などを行うDDL(Data Definition Language:データ定義言語)と、データの挿入・更新・削除などを行うDML(Data Manipulation Language:データ操作言語)などに大別されますが、基本情報技術者試験で出題が多いのがDMLで、特に『SELECT』文が登場する問題がSQLについての出題の大半を占めます。
SELECT文による問合せの方法や条件の指定の方法を見てみましょう。

SELECT文

SELECT文はテーブルから列を選ぶ操作で、

SELECT カラム名1, カラム名2, ... FROM テーブル名

のように記述します。 すべての列を選ぶときは、

SELECT * FROM テーブル名

と記述します。 カラム名の代わりに"カラム名 + 10"などとすることで計算結果を表示させることもできます。

テーブル名を複数指定すると、すべてのテーブルの項目のすべての組み合わせからなるテーブルを得ることができます(関係演算の直積に対応します)。 その際、別々のテーブルで同じ名前のカラムを区別するために、

SELECT テーブル名1.カラム名1, テーブル名2.カラム名2 FROM テーブル名1, テーブル名2

のように"."でテーブル名とカラム名をつなげて記述します。

WHERE句

WHERE句はテーブルから行を選ぶ操作で、SELECT文の後ろに

SELECT * FROM テーブル名 WHERE 条件式

のように記述します。

条件式は比較演算子と論理演算子などの演算子を使って、"カラム名1 = 0 AND カラム名2 >= 1"のように記述します。

演算子にはほかにも以下のようなものがあります。

  • BETWEEN:被演算子が指定した範囲内にある場合TRUEを返します。
  • IN:被演算子が指定した式の1つに一致する場合TRUEを返します。
  • LIKE:被演算子がパターンの1つに一致する場合TRUEを返します。0文字以上の任意の文字列にマッチする"%"や任意の1文字にマッチする"_"を使うことができます。

集合関数

集合関数(集約関数)はカラムの値を集計する関数で、以下のようなものがあります。

  • MIN:引数の最小値を返します。
  • MAX:引数の最大値を返します。
  • COUNT:引数の値の数を返します。NULLは集計対象外です。
  • SUM:引数の総和を返します。NULLは集計対象外です。
  • AVG:引数の平均を返します。NULLは集計対象外です。

例えば

SELECT SUM(カラム名1), AVG(カラム名2) FROM テーブル名

のように記述します。

GROUP BY句

集合関数を使えばカラムの値を集計できましたが、GROUP BY句をつかうことでレコードをグループ化してから集計することができます。 例えば

SELECT カラム名1, AVG(カラム名2) FROM テーブル名 GROUP BY カラム名1

と記述すると、カラム1で同じ値を持つ行同士がグループ化され、その値とそれぞれのグループごとのカラム2の平均の表が得られます。
GROUP BY句の記述順はWHERE句の後になります。
注意点として、WHERE句では集合関数は使えないので、グループ化した後にレコードの絞り込みをしたい場合はGROUP BY句のあとに"HAVING AVG(カラム名2) > 0"のように、HAVING句を使って記述します。

ORDER BY句

ORDER BY句はレコードをソート(整列)する操作です。

SELECT * FROM テーブル名 ORDER BY カラム名2 DESC

のように、ソートのキーとなるカラムとソート順を記述します。
ソート順は"ASC"で昇順、"DESC"で降順となり、指定しない場合は自動的に昇順になります。
ORDER BY句の記述順はGROUP BY句(とHAVING句)の後になります。

副問い合わせ

SQLでは一つのSQL文の中に別のSQL文を記述することもでき、副問い合わせ(サブクエリ)と呼ばれます。例えば

SELECT カラム名1 FROM テーブル名1 WHERE カラム名1 IN (SELECT カラム名2 FROM テーブル名2)

と記述すると、テーブル1のカラム1のうち、その値がテーブル2のカラム2の値の中に存在するものを集めた表が得られます。
また、サブクエリ用にレコードを一つ以上持つかどうかを判定するEXISTSという演算子もあります。

長くなりましたがSELECT文については以上になります。

トランザクション処理

続いて、トランザクション処理について学んでいきます。

同時実行制御(排他制御)

『トランザクション』とはデータベースの変更手続きを一つにまとめたものです。
トランザクション処理では、データの整合性を保つために、複数のトランザクションが同時にデータを更新するようなことが起こらないようにする、『同時実行制御(排他制御)』が必要になります。

排他制御の代表的な方式の一つが、ロック方式です。
ロック方式では、あるトランザクションがデータにアクセスする際にそのデータにアクセス制限を課し(ロックし)、他のトランザクションがデータにアクセスすることを防ぎます。
ロックには『専有ロック』と『共有ロック』があり、専有ロックではデータの更新も読み取りも禁じますが、共有ロックではデータの更新のみ禁じます。

ロック方式では同時更新を防ぐことができますが、気を付けなければならない問題として、『デッドロック』があります。
これは複数のトランザクションが互いに必要なデータをロックしあってしまい、どのトランザクションも進行しなくなってしまう状態のことです。
例えばトランザクション1がデータAをロックした後にデータBにアクセスしようとすると同時に、トランザクション2がデータBをロックしてデータAにアクセスしようとすると、互いのトランザクションのロック解除待ちとなりデッドロックが発生してしまいます。

ロックが保護するデータの大きさのことを『ロックの粒度』と呼び、ロックの粒度が細かいほど(保護するデータが小さいほど)ロック解除までの待ち時間が少なくなります。
ロックの粒度が細かいとロックの個数も多くなり、トランザクションの並列度を高めることができますが、その場合はデッドロックの危険性も増えるので注意が必要です。

トランザクション内の処理が完了し、結果を確定させることを『コミット』と呼びます。
分散データベースで使われるコミット方式として、『2相コミット(Two Phase Commit)』があります。
2相コミットでは第一段階でトランザクション処理を行う複数サイトに更新処理が確定可能かどうかを問い合わせ、その後すべてのサイトが確定可能である場合、第二段階で更新処理を確定します。

障害回復

トランザクション中に障害が起きた場合の回復処理として、『ロールフォワード』と『ロールバック』があります。

ロールフォワードは前進復帰と訳され、バックアップファイルとログファイル(ジャーナルファイル)を使ってデータベースを回復します。

一方ロールバックは後退復帰と訳され、ログファイルの更新前情報を使ってトランザクション開始直前の状態までデータを回復させます。

トランザクション管理

トランザクション処理では『ACID特性』と呼ばれる四つの特性が求められます。それぞれの特性の特徴を覚えておきましょう。

  • 原子性(Atomicity):トランザクションの更新処理が全て実行されるか、あるいは全く実行されないことを保証する性質。
  • 一貫性(Consistency):トランザクションによって整合性が失われないことを保証する性質。
  • 独立性(Isolation):トランザクション中の操作は他の操作と互いに影響を与えないことを保障する性質。
  • 耐久性(Durability):正常終了したトランザクションの結果はそれ以降失われないことを保証する性質。

データベース応用

最後に、データベース応用について学んでいきます。

データベースの応用の一つとして、ただデータをそのまま扱うだけでなく整理、加工、統合を行い分析する、『データ分析』があります。
データ分析に使われる、『データウェアハウス』、『データマイニング』、『ビッグデータ』や『分散データベース』などの用語もチェックしておきましょう。

データウェアハウス

意思決定のための、統合された大量の時系列データのことです。

データマイニング

大量のデータから有用な情報を抽出する技術のことです。

ビッグデータ

一般的なソフトウェアやハードウェアでは扱うことが困難なほど巨大で複雑なデータ群のことです。

分散データベース

一つのDBMSが複数のデータベースを扱う形態のデータベースのことです。

利用者が分散データベースであることを意識せずに、一つのデータベースであるかように扱うことができる性質を、分散データベースの透過性といいます。

特に『ビッグデータ』はAIの発展などにより、トレンドワードになっているので覚えておきましょう。

以上で、データベースついては終わりです。 最後に演習問題を解いてみましょう。

演習


問1 関係モデルとその実装である関係データベースの対応に関する記述のうち,適切なものはどれか。

ア 関係は,表に対応付けられる。

イ 属性も列も,左から右に順序付けられる。

ウ タプルも行も,ともに重複しない。

エ 定義域は,文字型又は文字列型に対応付けられる。

(出典:平成28年度 春期 基本情報技術者試験 午前 問26)



問2 UMLを用いて表した図のデータモデルの解釈のうち,適切なものはどれか。

source80.png

ア 事業部以外の部門が,部門を管理できる。

イ 社員は事業部に所属できる。

ウ 所属する社員がいない部門が存在する。

エ 部門は,いずれかの事業部が管理している。

(出典:平成29年度 秋期 基本情報技術者試験 午前 問28)



問3 関係"注文記録"の属性間に①~⑥の関数従属性があり,それに基づいて第3正規形まで正規化を行って,"商品","顧客","注文","注文明細"の各関係に分解した。関係"注文明細"として,適切なものはどれか。ここで,{X,Y}は,属性XとYの組みを表し,X→Yは,XがYを関数的に決定することを表す。また,実線の下線は主キーを表す。

注文記録(注文番号,注文日,顧客番号,顧客名,商品番号,商品名,数量,販売単価)

〔関係従属性〕
① 注文番号 → 注文日
② 注文番号 → 顧客番号
③ 顧客番号 → 顧客名
④ {注文番号,商品番号} → 数量
⑤ {注文番号,商品番号} → 販売単価
⑥ 商品番号 → 商品名

ア 注文明細(注文番号,数量,販売単価)

イ 注文明細(注文番号,顧客番号,数量,販売単価)

ウ 注文明細(注文番号,顧客番号,商品番号,顧客名,数量,販売単価)

エ 注文明細(注文番号,商品番号,数量,販売単価)

(出典:平成27年度 秋期 基本情報技術者試験 午前 問27)



問4 列A1~A5から成るR表に対する次のSQL文は,関係代数のどの演算に対応するか。

SELECT A1, A2, A3 FROM R
  WHERE A4 = 'a'

ア 結合と射影

イ 差と選択

ウ 選択と射影

エ 和と射影

(出典:平成25年度 春期 基本情報技術者試験 午前 問27)



問5 トランザクションが,データベースに対する更新処理を完全に行うか,全く処理しなかったのように取り消すか,のどちらかの結果になることを保証する特性はどれか。

ア 一貫性(consistency)

イ 原子性(atomicity)

ウ 耐久性(durability)

エ 独立性(isolation)

(出典:平成28年度 春期 基本情報技術者試験 午前 問28)



問6 データマイニングの説明として,適切なものはどれか。

ア 大量のデータを高速に検索するための並行的アクセス手法

イ 大量のデータを統計的,数学的手法で分析し,法則や因果関係を見つけ出す技術

ウ 販売実績や製造実績などの時系列データを大量に蓄積するデータベースの保存手法

エ ユーザの利用目的に合わせて,部門別のデータベースを作成する技術

(出典:平成19年度 秋期 基本情報技術者試験 午前 問38)


解説

問1 関係モデルとその実装である関係データベースの対応に関する記述のうち,適切なものはどれか。

正解 ア

正誤の判断が難しい選択肢が混じってますが、アが明らかに正解なので自信をもって答えたい問題です。

ア:正しいです。

イ:関係モデルの属性に順序はありませんが、関係データベースの列は順序付けられます。

ウ:関係モデルのタプルは重複しませんが、関係データベースの行は重複することもあります。

エ:定義域は文字型又や文字列型に限らないデータ型に対応付けられます。


問2 UMLを用いて表した図のデータモデルの解釈のうち,適切なものはどれか。

正解 イ

ア:事業部以外の部門と部門の関連を図から読み取ることはできません。

イ:正しいです。

ウ:部門から見た社員の多重度は1以上なので、所属する社員がいない部門が存在できません。

エ:部門から見た事業部の多重度は0または1なので、どの事業部も管理していない部門が存在できます。


問3 関係"注文記録"の属性間に①~⑥の関数従属性があり,それに基づいて第3正規形まで正規化を行って,"商品","顧客","注文","注文明細"の各関係に分解した。関係"注文明細"として,適切なものはどれか。ここで,{X,Y}は,属性XとYの組みを表し,X→Yは,XがYを関数的に決定することを表す。また,実線の下線は主キーを表す。

注文記録(注文番号,注文日,顧客番号,顧客名,商品番号,商品名,数量,販売単価)

〔関係従属性〕
① 注文番号 → 注文日
② 注文番号 → 顧客番号
③ 顧客番号 → 顧客名
④ {注文番号,商品番号} → 数量
⑤ {注文番号,商品番号} → 販売単価
⑥ 商品番号 → 商品名

正解 エ

実際に第3正規化まで行ってみましょう。
すでに第1正規形にはなっているので、主キーを考えてみます。 注文記録のすべての属性は注文番号と商品番号のどちらか、あるいはその組み合わせから一意に決まるので注文番号と商品番号の複合キーが主キーとなることがわかります。

次に第2正規化では、主キーの一部のみから一意に決まる(関数的に決定する)属性を分離させるので、注文番号のみから決まる注文日、顧客番号、顧客名を"注文"の関係として分離させます。
ここで、顧客名は顧客番号から決まり、顧客番号は注文番号から決まるので、顧客名も(推移的に)注文番号から決まることに注意してください。
同じように、商品名は商品番号のみから決まるので、商品名を"商品"の関係に分離させます。

注文記録(注文番号,注文日,顧客番号,顧客名,商品番号,商品名,数量,販売単価)

↓ 第2正規化

注文明細(注文番号,商品番号,数量,販売単価)
注文(注文番号,注文日,顧客番号,顧客名)
商品(商品番号,商品名)

最後に第3正規化では、非キー属性から一意に決まる属性を分離させるので、"注文"の関係の顧客番号から決まる顧客名を"顧客"の関係として分離させます。

注文明細(注文番号,商品番号,数量,販売単価)
注文(注文番号,注文日,顧客番号,顧客名)
商品(商品番号,商品名)

↓ 第3正規化

注文明細(注文番号,商品番号,数量,販売単価)
注文(注文番号,注文日,顧客番号)
顧客(顧客番号,顧客名)
商品(商品番号,商品名)

よって、正解はエになります。


問4 列A1~A5から成るR表に対する次のSQL文は,関係代数のどの演算に対応するか。

SELECT A1, A2, A3 FROM R
  WHERE A4 = 'a'

問題のSQL文ではWHERE句によって行を絞り、SELECT文によって列を絞っています。これらはそれぞれ関係演算の選択と射影に対応するので、正解は『ウ』になります。


問5 トランザクションが,データベースに対する更新処理を完全に行うか,全く処理しなかったのように取り消すか,のどちらかの結果になることを保証する特性はどれか。

正解 イ

ア:一貫性(consistency)は、トランザクションによって整合性が失われないことを保証する性質です。

イ:正しいです。

ウ:耐久性(durability)は、正常終了したトランザクションの結果はそれ以降失われないことを保証する性質です。

エ:独立性(isolation)は、トランザクション中の操作は他の操作と互いに影響を与えないことを保障する性質です。


問6 データマイニングの説明として,適切なものはどれか。

正解 イ

ア:これは、パラレルクエリの説明です。

イ:これは、正しいです。

ウ:これは、データウェアハウスの説明です。

エ:これは、データマートの説明です。


以上でデータベースについての学習は終わりです。

次は、ネットワークについて学習していきます。

ネットワーク

まず、ネットワーク方式についてです。

ネットワーク方式

ネットワーク方式の分野では、計算問題の出題率が高いです。
とはいえ、いきなり計算問題について学習してもイメージが沸かないと思いますので、まずはネットワークとはなにかという点から学習してきましょう。

ネットワークは簡単に言うと、コンピュータとコンピュータを接続する技術のことです。 ネットワークが確立しているおかげで、インターネットを利用できたり、メールを送受信したりすることができています。

LANとWAN

ネットワークには、LANとWANというものがあります。
LANはLocal Area Networkの略で、限定的なエリアのネットワークを指します。
WANは、Wide Area Networkの略で、遠く離れた場所を繋ぐネットワークを指します。

LANとWANの違いはネットワークの基礎的な部分なので覚えておきましょう。

伝送時間

普段PCを使用している方なら、インターネット接続時に速度の違いを感じることがあると思います。 これはネットワークの伝送時間というものが関係していて、以下の計算式で求めることができます。

"伝送時間=伝送データ量÷伝送速度"

例えば、伝送データ量が100Mビット、伝送速度が0.5Mビット/秒だった場合は以下のようになります。

"100Mビット÷0.5Mビット=200秒"

『伝送効率を50%とする』という問題が出題される場合がありますが、これも単純に、伝送速度に50%を掛けることで計算ができます。

※上記の場合、0.5Mビット(伝送速度)に50%(伝送効率)を掛けることで、実際の伝送速度が分かります

回線利用率

次は、回線利用率の求め方です。以下の計算式で求めることができます。

"回線利用率=転送量÷回線速度"

例えば、1秒当たりの平均転送量が0.10Mバイトで、2Mバイト/秒の回線だった場合は以下のようになります。

"0.10Mバイト÷2Mバイト=0.05=5%"

『ファイル転送時に転送量の10%が制御情報として付加される』というような問題が出題される場合がありますが、これも単純に転送量に10%付加することで計算ができます。

※上記の場合、0.10M(転送量)に 1.1を掛けることで、実際の転送量が分かります

NAPT

次に、NAPTについて学習していきます。
NAPTとは、Network Address Port Translationの略で、IPマスカレードとも呼ばれます。
NAPTを理解するには、IPアドレスについて理解する必要があるので簡単に説明していきます。

IPアドレスとは、ネットワーク機器の住所とも呼ばれるもので、送信先を特定する際に使用します。 また、IPアドレスは、グローバルIPアドレスとプライベートIPアドレスの2種類あります。

グローバルIPアドレスは、世界中で重複していないアドレスです。インターネット上で通信するために必要となります。

プライベートIPアドレスは、組織内で使用されるアドレスです。インターネットに接続する際は、グローバルIPアドレスに変換します。

ここまで分かったところで、NAPTに説明に戻ってみましょう。
NAPTは、1個のグローバルIPアドレスを使って複数のPCがインターネットを利用できるという技術です。 イメージしづらいかもしれませんが、この特徴を知っておくだけでも問題が解けるので覚えておきましょう。

次は、データ通信と制御について学習します。

データ通信と制御

ここから、データ通信と制御について学習していきます。

ここまで、LANについて学習してきましたが、実はLANには規格があります。
一番有名な規格は『イーサネット』という規格です。 イーサネットは、アクセス制御方式として『CSMA/CD方式』を採用しています。
CSMA/CD方式は、他の送信者がいないと判断したときに、データを送信するというものです。 とはいえ、データを同時に送信してしまうことがあります。

その通信パケットの衝突を『コリジョン』といいます。 コリジョンが発生してしまった際は、待機してから再度送信します。

CSMA/CD方式の特徴は試験に出やすいので覚えておきましょう。

OSI基本参照モデル

社会に法やルールがあるように、ネットワークでやり取りをする際にもルールがあります。その約束事を『プロトコル』といいます。

もちろん『プロトコル』にはいくつかの種類があり、7階層に分けられたものを『OSI基本参照モデル』といいます。

source82.png

いまはなんとなく7階層に分かれているんだなということを覚えておきましょう。

OSI基本参照モデルについてなんとなくイメージができたところで、次はネットワークに関係する装置を学んでいきます。

リピータ

リピータとは、電気信号を中継する機器です。 電気信号はどうしても弱まったり、ノイズが入ってしまったりすることがあります。 そうなってしまった際に、リピータは増幅等をして電気信号を元に戻します。 そうすることで、伝送距離を延ばすことができます。
また、リピータはOSI基本参照モデルの第1層(物理層)で接続します、

ブリッジ

ブリッジは、流れてくるパケットを監視してMACアドレスを記憶することができる機器です。 そしてMACアドレスを基にどこに属しているかを判断してパケットを流します。
また、ブリッジは、OSI基本参照モデルの第2層(データリンク層)で接続します。

MACアドレス

ネットワークで使うすべての機器に割り当てられている識別子のことです。

ルータ

ルータは、流れてくるパケットを監視して中継する機器です。 ルータは、IPアドレスで判断して適切な場所に中継します。
また、ルータは、OSI基本参照モデルの第3層(ネットワーク層)で接続します。

ゲートウェイ

ゲートウェイは、プロトコルの異なるネットワークを接続する機器です。 主に、OSI基本参照モデルの第4層(トランスポート層)~第7層(アプリケーション層)で接続します。

ここまで、いくつか用語がでてきましたが、ここの用語は試験に出題されやすいので、特徴を抑えておきましょう。

次は『通信プロトコル』について学習します。

通信プロトコル

ここから『通信プロトコル』について学習していきます。
『OSI基本参照モデル』のところで少しプロトコルについて触れましたが、もう少し詳しくプロトコルについて学習していきましょう。

TCP/IP

TCP/IPとは、世界的に利用されている通信プロトコルです。
私たちがインターネットを利用する際も、このプロトコルを利用しています。

まず、TCPとは、Transmission Control Protocolの略で、データを送る度に相手にしっかり届いたかを確認するという特徴があります。 OSI基本参照モデルは、7階層に分かれていましたが、TCP/IPは4階層モデルとなっています。

source83.png

TCPは、第3層(トランスポート層)に属します。 IPは、Internet Protocolの略で、パケットを相手に送信します。 IPは、第2層(インターネット層)に属します。

UDP

UDPとは、TCP/IPの通信処理で使用されるプロトコルです。 UDPは、リアルタイム性が重視される場合に使用されるのが特徴です。
また、UDPは、第3層(トランスポート層)に属します。

これらのプロトコルの特徴の違いを抑えておきましょう。

DNS

TCP/IPのネットワークでは、各ノードにIPアドレスが振り分けられています。 しかし、IPアドレスは、数字の羅列のため、人間には分かりづらいという特徴があります。 そのため、IPアドレスは、人間にとっても分かりやすいドメイン名が付けられています。

例えば、ブラウザの検索欄に、『www.ipa.go.jp(ドメイン名)』と入力して検索しても、『192.218.88.180(IPアドレス)』と入力しても、検索結果は同じになります。

※上記のドメイン名とIPアドレスは、検索することでIPAのホームページに飛びます

ここで活躍しているのが『DNS』です。
DNSは、Domain Name Systemの略で、ドメイン名とIPアドレスを相互変換することができます。

DHCP

DHCPは、Dynamic Host Configuration Protocolの略で、コンピュータ等にIPアドレスの割り当てを自動的に行うプロトコルです。 また、私たちの住所も変更することがあるように、IPアドレスも変更されることがあります。

なんとなくIPアドレスは回収されたり、再割当てされたりするんだなと覚えておきましょう。

次は、ネットワーク管理を学習します。

ネットワーク管理

ここからネットワーク管理について学習します。

この分野は、出題率はそこまで高くないですが、学ぶ内容として『pingコマンド』等も含まれており、ITエンジニアであれば実務でも使う機会があるので、是非この機会に覚えましょう。

SNMP

SNMPとは、Simple Network Management Protocolの略で、TCP/IPの環境で使用されます。 機器の情報を収集するという特徴を持っており、監視等を行います。
障害時はSNMPを利用することで、どの機器に障害が発生したのか等を突き止めることができます。

NTP

NTPとは、Network Time Protocolの略で、ネットワーク経由で正確な時刻を同期するための通信プロトコルです。 皆さんが使用しているほとんどのPCは定期的に同期して時刻を合わせています。

SDN

SDNとは、Software Defined Networkの略で、物理的なネットワークとは別にソフトウェアによって仮想的に作り出すことができます。 この特徴によって、柔軟な制御が可能となります。

pingコマンド

pingコマンドは、ネットワークの疎通を確認するために使用されます。 例えば、Windowsだと『コマンドプロンプト』でpingコマンドを実行することができます。
コマンドプロンプトを起動したら、"ping [疎通を確認したいIPアドレスまたはドメイン名]"を入力してみましょう。 そうすると、実行結果を確認することができます。

pingコマンドには、他にもいろいろなオプションがあるので、気になった方は調べてみましょう。 インターネットに繋がらないときや、プリンターで印刷できないとき等に、内部的に繋がっているかどうかを調べることができるので役に立つかもしれません。

ネットワーク応用

ネットワークの分野で最後に、ネットワーク応用について学習します。
ここでは、メールに関する用語の出題率が高いので重点的に学習していきましょう。

MIME

MIMEは、Multipurpose Internet Mail Extensionの略で、電子メールの規格です。 文字だけでなく、画像や音声も扱えるのが特徴です。また、漢字なども扱うことが可能です。

SMTP

SMTPは、Simple Mail Transfer Protocolの略で、メールを送信する際や、メールサーバ間で転送するときに使用されるプロトコルです。 MIMEとは試験の選択肢で並べられることが多いですが、全く別物なので違いを抑えておきましょう。

Bcc

Bccは、Blind Carbon Copyの略で、メールを送る相手(宛先)以外にも内容を共有したいときに使います。 単にCCだとメールを受信した相手は、自分以外にも共有されていることがわかりますが、Bccの場合は、共有されているということが表示されません。 なので、共有者のアドレスを伏せたい場合や、 お互い面識のない複数人に一斉送信する際などに使用されます。

Bccの出題率はそこまで高くありませんが、社会人としては必須の知識とも言えるので理解しておきましょう。

RADIUS

RADIUSは、Remote Authentication Dial In User Serviceの略で、利用者を認証するためのシステムです。 無線LANなどで利用され、認証情報などをサーバーに一元化することができます。

ADSL

ADSLは、Asymmetric Digital Subscriber Lineの略で、電話回線を利用して通信を行う伝送方式です。 上り下りの速度が異なるという特徴をもっています。

ネットワークについては以上です。最後に演習問題を解いてみましょう。

演習


問1 1.5Mビット/秒の伝送路を用いて12Mバイトのデータを転送するために必要な伝送時間は何秒か。ここで,伝送路の伝送効率を50%とする。

ア 16

イ 32

ウ 64

エ 128

(出典:平成30年度 秋期 基本情報技術者試験 午前 問31)



問2 LAN間接続装置に関する記述のうち,適切なものはどれか。

ア ゲートウェイは,OSI基本参照モデルにおける第1~3層だけのプロトコルを変換する。

イ ブリッジは,IPアドレスを基にしてフレームを中継する。

ウ リピータは,同種のセグメント間で信号を増幅することによって伝送距離を延長する。

エ ルータは,MACアドレスを基にしてフレームを中継する。

(出典:平成30年度 秋期 基本情報技術者試験 午前 問32)



問3 トランスポート層のプロトコルであり,信頼性よりもリアルタイム性が重視される場合に用いられるものはどれか。

ア HTTP

イ IP

ウ TCP

エ UDP

(出典:平成31年度 春期 基本情報技術者試験 午前 問33 )



問4 TCP/IPネットワークにおいて,ネットワークの疎通確認に使われるものはどれか。

ア BOOTP

イ DHCP

ウ MIB

エ ping

(出典:平成23年度 秋期 基本情報技術者試験 午前 問40)



問5 インターネットにおける電子メールの規約で,ヘッダフィールドの拡張を行い,テキストだけでなく,音声,画像なども扱えるようにしたものはどれか。

ア HTML

イ MHS

ウ MIME

エ SMTP

(出典:平成30年度 秋期 基本情報技術者試験 午前 問34)


解説

問1 1.5Mビット/秒の伝送路を用いて12Mバイトのデータを転送するために必要な伝送時間は何秒か。ここで,伝送路の伝送効率を50%とする。

正解 エ

これは、伝送時間の計算問題です。

伝送哀感は以下の計算式で求めることができます。

"伝送時間=伝送データ量÷伝送速度"

まず、単位を揃える必要があるので、揃えていきましょう。

送信データ量ビット単位に変換していきます。

"12Mバイト×8ビット=96Mビット"

次に、回線利用率が50%なので、伝送速度に掛けていきます。

"1.5Mビット×50%=0.75Mビット"

最後に"伝送時間=伝送データ量÷伝送速度"に当てはめていきます。

96Mビット÷0.75Mビット=128秒

よって、『エ』が正解です。


問2 LAN間接続装置に関する記述のうち,適切なものはどれか。

正解 ウ

ア:ゲートウェイは、プロトコルの異なるネットワークを接続する機器です。

イ:流れてくるパケットを監視して、MACアドレスを記憶することができる機器です。

ウ:正しいです。

エ:ルータは、流れてくるパケットを監視して中継する機器です。


問3 トランスポート層のプロトコルであり,信頼性よりもリアルタイム性が重視される場合に用いられるものはどれか。

正解 エ

これは、プロトコルついての問題です。

ア:HTTPは、アプリケーション層のプロトコルです。

イ:IPは、ネットワーク層のプロトコルです。

ウ:TCPは、信頼性を重視した通信に使われるので誤りです。

エ:正しいです。


問4 TCP/IPネットワークにおいて,ネットワークの疎通確認に使われるものはどれか。

正解 エ

ア:BOOTPは、IPアドレス等を自動的に取得するためのプロトコルです。

イ:DHCPは、コンピュータ等にIPアドレスの割り当てを自動的に行うプロトコルです。

ウ:MIBは、ネットワーク機器が外部に公開している情報のことです。

エ:正しいです。


問5  インターネットにおける電子メールの規約で,ヘッダフィールドの拡張を行い,テキストだけでなく,音声,画像なども扱えるようにしたものはどれか。

正解 ウ

ア:HTMLは、Hyper Text Markup Languageの略で、マークアップ言語です。

イ:MHSは、Message Handling Systemの略で、メッセージ通信処理システムです。

ウ:正しいです。

エ:SMTPは、Simple Mail Transfer Protocolの略で、メールを送信する際や、メールサーバ間で転送するときに使用されるプロトコルです。


以上で、ネットワークの学習は終わりです。
次は、セキュリティについて学習していきます。

セキュリティ

ここから、セキュリティについて学習していきます。

最近はインターネットが当たり前のように利用され、便利な社会になりました。 一方で、インターネットが悪意で不正利用されることもあるため、注意してインターネットを利用することが求められています。

ここでは試験に出題されやすいセキュリティに関する用語を中心に、知っておいて損はないことを学習していくので頑張って覚えていきましょう。

不正のトライアングル

内部不正行為は「動機」、「機会」、「正当化」の三要素が揃うと発生すると考えられています。 この三要素を『不正のトライアングル』といいます。

動機は、不正を行うしかないという心情になることです。例えば、無理な要求などが当てはまります。

機会は、不正を行う環境ができてしまっていることです。例えば、重要なものにパスワード等の対策がされていないなどが当てはまります。

正当化は、自分に都合の良い理由で考えてしまうことです。会社の利益のためには仕方がないなどが当てはまります。

source84.png

暗号化

次は暗号化について説明していきます。

インターネットの世界では不特定多数の人とやりとりができますが、個人情報など他の人にみられるのは避けたい情報を扱う事が少なからずあると思います。 そのようなときに活躍するのが暗号化技術です。

暗号化技術とは、暗号化を行ってデータの盗聴を防ぐ技術を指します。 暗号化されていないデータを『平文』といい、暗号化されたデータを『暗号文』といいます。 そして暗号化されたものを元に戻すことを『復号』といいます。

ここまで理解できたところで、代表的な暗号化技術をみてみましょう。

共通鍵暗号方式

共通鍵暗号方式は秘密鍵暗号方式とも呼ばれ、暗号化技術の中でも代表的なものです。 共通鍵暗号方式は、データの送信者と受信者で同じ鍵を使用するのが特徴です。

例えば、Aさんが『1234』というデータをBさんに送りたいとします。
① AさんとBさんは同じ共通の鍵を持ちます。
② Aさんは、『1234』という平文データを『XXXX』というふうに共通鍵で暗号化します。
③ 暗号化したデータ『XXXX』をBさんに送ります。
※他の人から盗聴されたとしても『XXXX』となっており、『1234』というデータとは分かりません。
④ Bさんは、『XXXX』を受け取り、共通鍵で『1234』というデータに復号します。

source85.png

こうすることで、データが盗聴されることがなく、データを受け渡すことができます。

公開鍵暗号方式

公開鍵暗号方式も暗号化技術の中で代表的なものです。 公開鍵暗号方式は、公開鍵と秘密鍵の2種類の鍵を使用します。 公開鍵は暗号化に使用し、復号は秘密鍵で行います。

まず、公開鍵とは受信者が公開している鍵のことを指します。送信者にデータを送ってもらう際は、公開鍵で暗号化してもらいます。 そして、受信者は暗号化されたデータを秘密鍵で復号します。

復号するには秘密鍵をもっている人しかできない仕組みになっています。 秘密鍵は受信者しかもっていないので、復号できるのは受信者のみということになります。

source86.png

ディジタル署名

上記で学んだ公開鍵暗号方式を使うことでディジタル署名を行うことができます。
ディジタル署名は「送った人の特定」と「中身が書き換えられていないことの確認」を行うことができます。

先ほど公開鍵暗号方式は、秘密鍵をもっている人しか復号できない仕組みになっていると説明しました。 実は、逆に秘密鍵で暗号化したものは、ペアの公開鍵を使用しないと復号できない仕組みになっています。

この仕組みにより、なりすましではないことや、改ざんされていないことを確認できるというわけです。

source87.png

情報セキュリティ管理

ここから情報セキュリティ管理について学習していきます。

情報セキュリティは、『機密性』、『完全性』、『可用性』の三要素からなるとされています。

機密性(Confidentiality)

機密性は、アクセス権がある者だけ利用できるようにして、ないものは利用できない状態にすることです。

完全性(Integrity)

情報が改ざんなどをされていない状態で完全であることです。

可用性(Availability)

利用者が必要なときに情報を利用できることです。

上記三要素の頭文字をとって、『CIA』とも呼ばれます。
また、他にもJIS(日本産業規格)は様々な用語を定義しているので簡単に見ていきましょう。

JIS(日本産業規格)

産業に関連する規格などが定められた日本の国家規格

真正性

主張どおりであるという特性

責任追跡性

過去に遡って情報の操作者と操作を特定できる特性

否認防止

操作が行われたことや発生したことを後に否認されないようにする特性

信頼性

不具合などが起きずに期待通りに行われる特性

少し用語が多く、覚えるのが大変ですが、試験には出題されやすいので覚えておきましょう。

BYOD

最近は個人でもPC、スマートフォン等の端末をほとんどの人が持っているため、それを業務(職場)で使用するということがあります。

これを、『BYOD(Bring Your Own Device)』といいます。
BYODは、普段慣れているものを使用できたり、コストが削減できたりするメリットがありますが、情報漏洩等のリスクが高まるというのが特徴です。

MDM

MDMは、Mobile Device Managementの略で、会社が従業員に貸与するモバイル端末を一元管理する仕組みです。

最近は、業務でスマートフォンやタブレットを使用する企業も増えてきているため、取り入れている会社も増えてきています。

セキュリティ技術評価

次は、セキュリティ技術評価について学習します。
ここでは、セキュリティに関するテストなどが出題されます。

ペネトレーションテスト

ペネトレーションテストとは、実際に様々な方法で攻撃を行い、脆弱性がないかを確認するテストです。

脆弱性

セキュリティ上の欠陥。セキュリティホールとも呼ばれる。

悪意のある人は脆弱性から悪さをすることが多いため、しっかり対策を行う必要があります。

ファジング

ファジングも脆弱性を確認する手法の1つです。
ファズと呼ばれる、通常想定されないデータ等を意図的に発生させて、それに対する結果を確認します。

情報セキュリティ対策

次は、情報セキュリティ対策について学習します。
この分野も用語の暗記が中心になりますが、頑張って覚えましょう。

DMZ

DMZは、demilitarized zoneの略で、非武装地帯とも呼ばれます。
DMZはインターネットと内部ネットワークの間に作られます。
非武装地帯は、大事な情報を外部に公開するときにセキュリティ確保のため、隔離するように作られるのが特徴です。

source88.png

SIEM

SIEMは、Security Information and Event Managementの略で、様々なログを総合的に分析して、異常があったときなどに管理者に通知したりする仕組みです。

ログが統合管理できて便利ですが、複数の機器の大量のログを収集するため、ネットワークに負担をかけるというデメリットもあります。

IDS

IDSは、Intrusion Detection Systemの略で、ネットワーク等を監視して侵入や異常を検知したときに管理者に通知するシステムです。

WAF

WAFは、Web Application Firewallの略で、Webサイトのアクセス内容を監視するファイアウォールです。

監視している中で、攻撃を検知した際は、アクセスを遮断するという特徴を持ちます。

セキュリティ実装技術

最後に『セキュリティ実装技術』について学習します。

HTTPS

インターネットを利用するときに、『https://~』というURLを見たことはないでしょうか。 実は、これも通信に関するプロトコルの1つです。

また、『http』と『https』で異なるので違いについて覚えておきましょう。

httpsは、HTTP over SSL/TLSの略で、SSL/TLS通信が行われていることを意味します。

SSL/TLS

データを暗号化して送受信することができる

なので、逆にhttpの場合は、暗号化されていないということになります。

また、httpsは、電子証明書によるサーバ認証するので、サーバの正当性を確認できるという特徴があります。

httpとhttps

近年はhttpではなくhttpsにするのが一般的です

WPA3

WPA3は、Wi-Fi Protected Access 3の略で、無線LANのセキュリティ規格です。
WPAやWPA2は深刻な脆弱性が発見されていたため、WPA3ができました。
また、SAEという鍵を作る仕組みがあるのが特徴です。

インターネットVPN

インターネットVPNは、インターネット上に仮想専用線を構築する技術です。
インターネットVPNと似た用語として『IP-VPN』があります。
IP-VPNは、通信事業者が保有する閉域型ネットワークで構築するという違いがあります。
IP-VPNのほうが安全性は高いですが、インターネットVPNと比較して高価になります。

ハニーポット

これまで、脆弱性のテストや対策について説明しましたが、『ハニーポット』というようなものもあります。

ハニーポットとは、まるで蜂蜜でおびき寄せるように、あえて侵入者などをおびき寄せる仕組みです。 わざとダミーのシステムに脆弱性を持たせ、おびき寄せた侵入者などを監視し、ログを分析します。

以上でセキュリティに関する学習は終わりです。
最後に演習問題を解いていきましょう。

演習


問1 AさんがBさんの公開鍵で暗号化した電子メールを,BさんとCさんに送信した結果のうち,適切なものはどれか。ここで,Aさん,Bさん,Cさんのそれぞれの公開鍵は3人全員がもち,それぞれの秘密鍵は本人だけがもっているものとする。

ア 暗号化された電子メールを,Bさんだけが,Aさんの公開鍵で復号できる。

イ 暗号化された電子メールを,Bさんだけが,自身の秘密鍵で復号できる。

ウ 暗号化された電子メールを,Bさんも,Cさんも,Bさんの公開鍵で復号できる。

エ 暗号化された電子メールを,Bさんも,Cさんも,自身の秘密鍵で復号できる。

(出典:平成30年度 春期 基本情報技術者試験 午前 問38)



問2 BYODの説明,及びその情報セキュリティリスクに関する記述のうち,適切なものはどれか。

ア 従業員が企業から貸与された情報端末を,客先などへの移動中に業務に利用することであり,ショルダハッキングなどの情報セキュリティリスクが増大する。

イ 従業員が企業から貸与された情報端末を,自宅に持ち帰って私的に利用することであり,機密情報の漏えいなどの情報セキュリティリスクが増大する。

ウ 従業員が私的に保有する情報端末を,職場での休憩時間などに私的に利用することであり,セキュリティ意識の低下などに起因する情報セキュリティリスクが増大する。

エ 従業員が私的に保有する情報端末を業務に利用することであり,セキュリティ設定の不備に起因するウイルス感染などの情報セキュリティリスクが増大する。

(出典:平成28年度 春期 基本情報技術者試験 午前 問42)



問3 コンピュータやネットワークのセキュリティ上の脆弱性を発見するために,システムを実際に攻撃して侵入を試みる手法はどれか。

ア ウォークスルー

イ ソフトウェアインスペクション

ウ ペネトレーションテスト

エ リグレッションテスト

(出典:平成29年度 秋期 基本情報技術者試験 午前 問45)



問4 SIEM(Security Information and Event Management)の機能はどれか。

ア 隔離された仮想環境でファイルを実行して,C&Cサーバへの通信などの振る舞いを監視する。

イ 様々な機器から集められたログを総合的に分析し,管理者による分析と対応を支援する。

ウ ネットワーク上の様々な通信機器を集中的に制御し,ネットワーク構成やセキュリティ設定などを変更する。

エ パケットのヘッダ情報の検査だけではなく,通信先のアプリケーショプログラムを識別して通信を制御する。

(出典:令和元年度 秋期 基本情報技術者試験 午前 問43)



問5 WPA3はどれか。

ア HTTP通信の暗号化規格

イ TCP/IP通信の暗号化規格

ウ Webサーバで使用するディジタル証明書の規格

エ 無線LANのセキュリティ規格

(出典:令和元年度 秋期 基本情報技術者試験 午前 問37)


解説

問1 AさんがBさんの公開鍵で暗号化した電子メールを,BさんとCさんに送信した結果のうち,適切なものはどれか。ここで,Aさん,Bさん,Cさんのそれぞれの公開鍵は3人全員がもち,それぞれの秘密鍵は本人だけがもっているものとする。

正解 イ

これは、公開鍵暗号方式についての問題です。
公開鍵暗号方式は、公開鍵と秘密鍵の2種類の鍵を使用します。
以下が公開鍵暗号方式の仕組みです。

source86.png

今回の問題の場合は、Cさんもいますが、基本的な考え方は同じです。
Aさんは、Bさんの公開鍵で暗号化してメールを送信しているので、Bさん以外には復号することはできません。
また、公開鍵暗号方式は、暗号化した鍵(公開鍵)とは異なる鍵(秘密鍵)で復号します。

よって、『イ』が正解です。


問2 LAN間接続装置に関する記述のうち,適切なものはどれか。

正解 ウ

ア:ゲートウェイは、プロトコルの異なるネットワークを接続する機器です。

イ:流れてくるパケットを監視して、MACアドレスを記憶することができる機器です。

ウ:正しいです。

エ:ルータは、流れてくるパケットを監視して中継する機器です。


問3 コンピュータやネットワークのセキュリティ上の脆弱性を発見するために,システムを実際に攻撃して侵入を試みる手法はどれか。

正解 ウ

これは、プロトコルついての問題です。

ア:ウォークスルーは、レビュー方法の1つで、シュミレーションを行って確認していきます。

イ:ソフトウェアインスペクションは、レビュー方法の1つで、仕様書などを見て検証します。

ウ:正しいです。

エ:リグレッションテストは、システム変更の際に、これまで正常だった部分に不具合等ないか検証します。


問4 SIEM(Security Information and Event Management)の機能はどれか。

正解 イ

ア:これは、サンドボックス技術です。

イ:正しいです。

ウ:これは、SDNの特徴です。

エ:SIEMに通信を制御する機能はありません。


問5 WPA3はどれか。

正解 エ

ア:これは、HTTPS等の特徴です。

イ:これは、IPsecの特徴です。

ウ:これは、ITU-T X.509の特徴です。

エ:正しいです。


Lesson 2 Chapter 4
開発技術

システム開発技術

ここから、システム開発技術について学んでいきます。

システム要件定義・ソフトウェア要件定義

まずは、システム要件定義・ソフトウェア要件定義について学んでいきます。

システム開発は『要件定義』や『外部設計(基本設計)』、『内部設計』、『プログラム設計』などの工程からなります。 それぞれの工程の役割を覚えておきましょう。

システム開発の工程の大まかな流れ

①企画 → ②要件定義 → ③システム設計(外部設計 → 内部設計 → プログラム設計) → ④コーディング → ⑤テスト → ⑥導入 → ⑦運用・保守

要件定義

システムへの要求(要件)を特定する工程のことです。要求分析とも呼ばれます

外部設計

ユーザ側から見たシステム設計を行う工程のことです。画面レイアウトを決めたり、論理データ設計が行われたりします

内部設計

コンピュータ側から見たシステム設計を行う工程のことです。物理データベース仕様を決めたり、物理データ設計が行われたりします

プログラム設計

前工程で分割したプログラムについての詳細の設計を行う工程のことです

また、要件定義のための業務分析では、『DFD』、『E-R図』、『UML』などの図が用いられます。
それぞれの図の役割を覚え、DFDとUMLクラス図に関しては図の基本的な読み取り方も覚えておきましょう。

DFD

DFD(Data Flow Diagram:データフロー図)とはシステムのデータの流れを表現する図で、以下の4つの要素から構成されます。

  • プロセス:データの処理を行うものです。図中では円で表記されます。
  • データストア:データの保管場所です。図中では2本の平行線で表記されます。
  • 外部実体:データの情報源や情報の出口です。図中では四角形で表記されます。
  • データフロー:データの移動経路です。図中では矢印で表記されます。

source89.png

E-R図

E-R図とはデータモデリングに使われる図で、対象を実体(エンティティ)、実体のもつ属性、実体間の関連(リレーションシップ)の3つで表現します。

UML

UML(Unified Modeling Language:統一モデリング言語)とはシステムの振る舞いや構造をダイヤグラム(図)によって視覚的に表現することができる人工言語で、オブジェクト指向によるシステム開発などに使われます。
UMLには2023年4月現在、14種類のダイヤグラムがありますが、その中でも特に重要なのが『クラス図』です。

クラス図の"クラス"とはオブジェクト指向プログラミングの用語から来ていて、保持するデータと振る舞いが定義されたデータ型のことです。
クラス図ではクラス名、属性(フィールド)、クラス操作(メソッド)の三つの要素を長方形で囲ってクラスを表現します(属性とクラス操作は省略可)。
そしてそれらを線で結び、クラス間の関係を表現します。 クラス間の関係としては、以下のようなものがあります。

  • 関連:クラス間で一方または双方の認識がある場合を表現します。図中では直線または直線矢印で表記されます。
  • 集約:所有(has-a)の関係で双方のライフサイクルが異なる場合を表現します。図中では白抜き菱形の直線で表記されます。
  • 合成:所有(has-a)の関係で双方のライフサイクルが等しい場合を表現します。図中では黒塗り菱形の直線で表記されます。
  • 依存:一方のクラスがもう一方のクラスの振る舞いに影響を受ける場合を表現します。図中では破線矢印で表記されます。
  • 汎化:一方のクラスがもう一方のクラスの一般化(is-aの関係)である場合を表現します。図中では白抜き三角の直線で表記されます。
  • 実現:一方のクラスがもう一方のクラスの一般化(is-aの関係)で、抽象的なクラスとなっている場合を表現します。図中では白抜き三角の破線で表記されます。

source90.png

また、関連線・集約線・合成線の両端には『多重度』と呼ばれる数値を記載して、その関係での各クラスごとの存在可能な数を表現できます。

source91.png

出典:平成29年度 秋期 基本情報技術者試験 午前 問28

クラス図の他に試験で重要なダイヤグラムとしては、以下のようなものがあります。

  • コンポーネント図:システムを構成する部品(コンポーネント)とその相互関係などを表現します。
  • オブジェクト図:特定の瞬間でのオブジェクトとその相互関係を表現します。
  • アクティビティ図:ある手続きから次の手続きへの制御の流れを表現します。
  • 状態遷移図(ステートマシン図):オブジェクトの状態の遷移を表現します。
  • ユースケース図:システムが外部に提供する機能(ユースケース)と、その利用者(アクタ)とその相互関係を表現します。
  • シーケンス図:オブジェクト間の相互作用やメッセージフローを時系列で表現します。
  • コミュニケーション図:オブジェクト間の相互作用やメッセージフローを表現します。

その他

その他の図としては、処理や選択などの制御の流れを表現する『流れ図(フローチャート)』や、条件の組合せとそれに対する動作を表現する『決定表(デシジョンテーブル)』があります。

設計

続いて、設計について学んでいきます。

オブジェクト指向

オブジェクト指向とはソフトウェア開発やプログラミングで使われる考え方の一つで、データと振る舞いを一体化したモノ(オブジェクト)を基本要素として、それらの相互作用を重視してシステム全体を構築しようとします。
オブジェクト指向で基本となる用語を覚えておきましょう。

  • クラス:保持するデータ(属性)と振る舞い(メソッド)が定義されたデータ型のことで、オブジェクトを生成するための設計図のようなものです。
  • インスタンス:クラス定義に基づいて生成される実体のことです。オブジェクトとも呼ばれます。
  • カプセル化:データとそれを操作する手続を一つのオブジェクトにして、データと手続の詳細をオブジェクトの外部から隠蔽することです。
  • 継承:あるクラス(スーパークラス、親クラス、基底クラス)の属性や機能を、別のクラス(サブクラス、子クラス、派生クラス)で利用できるようにする仕組みのことです。
  • オーバーライド:スーパークラスで定義されたメソッドを、サブクラスで再定義することです。これによって、同一のメッセージでオブジェクトごとに異なる操作が行われる性質である、多相性(多様性、ポリモーフィズム)を実現できます。
  • 抽象化:同じ性質をもつ複数のオブジェクトから具体性を取り去って、本質的に重要なものだけを残して整理することです。
  • 汎化:サブクラスに共通する性質を抽出して、スーパークラスをつくることです。逆にスーパークラスからサブクラスに特殊化することを特化と呼びます。
  • 委譲:あるオブジェクトに依頼された処理を、その内部で他のオブジェクトに委ねる仕組みのことです。

モジュール

システム開発ではモジュールと呼ばれる、システムの部品のようなものを組み合わせて一つのシステムをつくります。
モジュール設計において信頼性や保守性を向上させるためにはモジュールの独立性を高める必要があります。
モジュールの独立性の評価基準として、『強度(モジュール強度)』と『結合度(モジュール結合度)』があります。

モジュール強度はモジュール内部の機能の関連性の強さを表し、モジュール強度が高いほど独立性が高いとされます。
モジュール強度の種類としては、最も強度の低い、関連のない機能をまとめたモジュールを示す『暗号的強度』や、最も強度の高い、一つの機能を実現するためだけのモジュールを示す『機能的強度』などがあります。

一方、モジュール結合度はモジュール同士の結びつきの強さを表し、モジュール結合度が低いほど独立性が高いとされます。
モジュール結合度は低い順に、以下のように分類されます。

  1. データ結合:処理に必要なデータを単純な型で受け渡す場合。
  2. スタンプ結合:処理に必要なデータを構造体などの複合的なデータ型で受け渡す場合。
  3. 制御結合:処理の制御パラメータを受け渡す場合。
  4. 外部結合:外部宣言されたデータを参照する場合。
  5. 共通結合:共通域に定義したデータを参照する場合。
  6. 内容結合:モジュール内部を直接参照する場合。

実装・構築

続いて、実装・構築についてです。

システム開発では、一つ一つのモジュールのテストを『単体テスト』と呼び、モジュールを組み合わせたテストを『結合テスト(統合テスト)』と呼びます。

ホワイトボックステストとブラックボックステスト

『ホワイトボックステスト』と『ブラックボックステスト』は、単体テストや結合テストで使われるテスト手法です。

ホワイトボックステストはテスト対象を中身が見える箱(ホワイトボックス)として扱い、内部構造に基づいてテストデータを作成します。
主なホワイトボックステストのテスト技法としては以下のようなものがあります。

  • 命令網羅:すべての命令が実行されるようにテストデータを作成します。
  • 判定条件網羅(分岐網羅):すべての分岐が実行されるようにテストデータを作成します。
  • 条件網羅:判定条件が複数ある場合に、それぞれの条件で真と偽の場合を最低1つずつ含むテストデータを作成します。
  • 複数条件網羅:判定条件が複数ある場合に、真偽のすべての可能な組合せを網羅したテストデータを作成します。

一方、ブラックボックステストではテスト対象を中身が見えない箱(ブラックボックス)として扱い、外部仕様に基づいて入力と出力の関係からテストデータを作成します。
主なブラックボックステストのテスト技法としては、『同値分割』と『境界値分析(限界値分析)』があります。

同値分割では入力データを範囲ごとにグループ化し、各グループから代表の値を一つずつ選びテストケースとします。
このとき、入力として有効な範囲内のグループを『有効同値クラス』、無効な範囲内のグループを『無効同値クラス』と呼びます。

境界値分析では同値分割と同じように入力データを範囲ごとにグループ化した後、それぞれのグループのそれぞれの境界ごとにデータを選びテストケースとします。
例えば下記の画像のように入力が整数で0から99までが有効な値だとすると、同値分割では"-50, 50, 150"をテストケースとすることができ、境界値分析では"-1, 0, 99, 100"がテストケースとなります。

source92.png

統合・テスト

続いて、統合・テストについてです。
主な結合テストの方法として、『トップダウンテスト』と『ボトムアップテスト』があるので覚えておきましょう。

トップダウンテストは上位モジュールから下位モジュールへと順にテストを行っていく方法で、未完成の下位モジュールの代わりとして『スタブ』と呼ばれるテスト用のモジュールが使われます。

一方、ボトムアップテストは下位モジュールから上位モジュールへと順にテストを行っていく方法で、未完成の上位モジュールの代わりとして『ドライバ』と呼ばれるテスト用のモジュールが使われます。

導入・受入れ支援

続いて、導入・受入れ支援についてです。
ここでは、『運用テスト』に関する問題が出題されるので覚えておきましょう。

運用テスト

『運用テスト』はテスト工程の一番最後に行われる確認テストで、システムの運用部門や顧客側のテスト担当者が実際の運用において不具合が発生しないかをテストします。
ユーザー側の視点でテストを行うので、ベンダー側が想定していなかった不具合などの発見に有効的です。

保守・廃棄

最後に、保守・廃棄についてです。

システムの保守で重要なこととして、平均故障間隔(MTBF)を長くするということがあります。
平均故障間隔(MTBF)については、以前学習したので復習になりますが、「このシステムは、だいたい〇〇時間は故障せずに稼働できる」といったものです。
平均故障間隔(MTBF)を長くする方法としては、予防保守を実施するのが有効的です。
予防保守とは、長く使用しているものを交換するなどがあります。

リグレッションテスト

『リグレッションテスト(退行テスト、回帰テスト)』はシステムに変更を加えた際に、変更によりすでにテスト済みの部分に不具合が起きないか確認するテストのことです。
以前は大丈夫だったから大丈夫だろうというのは禁物で、テスト済みの部分も確認することはシステム保守において、とても大切なことです。

以上で、開発技術についての学習は終わりです。 最後に演習問題を解いてみましょう。

演習


問1 UMLにおける振る舞い図の説明のうち,アクティビティ図のものはどれか。

ア ある振る舞いから次の振る舞いへの制御の流れを表現する。

イ オブジェクト間の相互作用を時系列で表現する。

ウ システムが外部に提供する機能と,それを利用する者や外部システムとの関係を表現する。

エ 一つのオブジェクトの状態がイベントの発生や時間の経過とともにどのように変化するかを表現する。

(出典:平成31年度 春期 基本情報技術者試験 午前 問46)



問2 オブジェクト指向において,あるクラスの属性や機能がサブクラスで利用できることを何というか。

ア オーバーライド

イ カプセル化

ウ 継承

エ 多相性

(出典:平成30年度 春期 基本情報技術者試験 午前 問46)



問3 ブラックボックステストに関する記述として,最も適切なものはどれか。

ア テストデータの作成基準として,プログラムの命令や分岐に対する網羅率を使用する。

イ 被テストプログラムに冗長なコードがあっても検出できない。

ウ プログラムの内部構造に着目し,必要な部分が実行されたかどうかを検証する。

エ 分岐命令やモジュールの数が増えると,テストデータが急増する。

(出典:平成31年度 春期 基本情報技術者試験 午前 問47)



問4 ボトムアップテストの特徴として,適切なものはどれか。

ア 開発の初期の段階では,並行作業が困難である。

イ スタブが必要である。

ウ テスト済みの上位モジュールが必要である。

エ ドライバが必要である。

(出典:平成27年度 秋期 基本情報技術者試験 午前 問48)



問5 運用テストにおける検査内容として,適切なものはどれか。

ア 個々のソフトウェアユニットについて,仕様を満足していることを確認する。

イ ソフトウェア品目の中で使用しているアルゴリズムの妥当性を確認する。

ウ ソフトウェアユニット間のインタフェースが整合していることを確認する。

エ 利用者に提供するという視点で,システムが要求を満足していることを確認する。

(出典:平成24年度 秋期 基本情報技術者試験 午前 問49)



問6 ソフトウェアのテストの種類のうち,ソフトウェア保守のために行った変更によって,影響を受けないはずの箇所に影響を及ぼしていないかどうかを確認する目的で行うものはどれか。

ア 運用テスト

イ 結合テスト

ウ システムテスト

エ リグレッションテスト

(出典:平成26年度 秋期 基本情報技術者試験 午前 問49)


解説

問1 UMLにおける振る舞い図の説明のうち,アクティビティ図のものはどれか。

正解 ア

ア:正しいです。

イ:シーケンス図の説明です。

ウ:ユースケース図の説明です。

エ:状態遷移図の説明です。


問2 オブジェクト指向において,あるクラスの属性や機能がサブクラスで利用できることを何というか。

正解 ウ

ア:オーバーライドはスーパークラスで定義されたメソッドを、サブクラスで再定義することです。

イ:カプセル化はデータとそれを操作する手続を一つのオブジェクトにして、データと手続の詳細をオブジェクトの外部から隠蔽することです。

ウ:正しいです。

エ:多相性(多様性、ポリモーフィズム)は同一のメッセージでオブジェクトごとに異なる操作が行われる性質のことです。


問3 ブラックボックステストに関する記述として,最も適切なものはどれか。

正解 イ

ブラックボックステストでは外部仕様(入力と出力)にのみ着目し内部構造は無視するため、プログラムに冗長なコードがあったとしても検出できません。

よって、正解はイになります。

ほかの選択肢は全てホワイトボックステストに関する記述です。


問4 ボトムアップテストの特徴として,適切なものはどれか。

正解 エ

ア:複数の下位モジュールを並行して開発することが可能です。

イ:スタブが必要になるのはトップダウンテストです。

ウ:上位モジュールにはドライバを使います。

エ:正しいです。


問5 運用テストにおける検査内容として,適切なものはどれか。

正解 エ

ア:これは、単体テストの説明です。

イ:これは、単体テストの説明です。

ウ:これは、結合テストの説明です。

エ:正しいです。


問6 ソフトウェアのテストの種類のうち,ソフトウェア保守のために行った変更によって,影響を受けないはずの箇所に影響を及ぼしていないかどうかを確認する目的で行うものはどれか。

正解 エ

ア:運用テストはシステムの運用部門や顧客側のテスト担当者が実際の運用において不具合が発生しないかを確認するためのテストです。

イ:結合テストはモジュール同士を組み合わせた際に設計通りに機能するかを確認するためのテストです。

ウ:システムテストはシステムとしての要件が満たされているかを確認するためのテストです。

エ:正しいです。


次は、ソフトウェア開発管理技術について学習します。
テクノロジ系では、最後の分野なので頑張りましょう。

Lesson 2 Chapter 5
ソフトウェア開発管理技術

開発プロセス・手法

ここから、ソフトウェア開発管理技術ついて学習していきます。
まずは、開発プロセス・手法について学習していきましょう。

ソフトウェア開発モデル

ソフトウェア開発では開発の定型的な手順を提供するための、ソフトウェア開発モデルというものが考えられてきました。 以下では代表的なソフトウェア開発モデルを紹介していきます。

『ウォーターフォールモデル』は以下のような作業工程を一直線に進めていく手法です。

  1. 要求定義
  2. 外部設計
  3. 内部設計
  4. プログラム設計
  5. 開発(コーディング)
  6. テスト
  7. 運用

ウォーターフォールモデルは原則として並行作業は行わず、前工程を終えてから次の工程へ進みます。 大規模開発に向いていますが、後戻りが発生するとシステムの開発効率が著しく低下してしまいます。

『プロトタイピングモデル』は開発初期段階で試作品(プロトタイプ)を作成し、ユーザーからのフィードバックを得てから開発を進めていく手法です。

『スパイラルモデル』は要件定義から実装(プロトタイピング)までを繰り返して、段階的に開発の規模を拡大していく手法です。

アジャイル

アジャイル(アジャイルソフトウェア開発)は、迅速かつ適応的にソフトウェア開発を行う手法です。
その中で特に出題が多いのが 『XP(eXtreme Programming)』です。
XPとは短い開発サイクルで顧客の意見を取り入れながら繰り返し開発を進めていく手法です。
XPは開発のためのプラクティス(良いとされる習慣)を推奨していて、これには二人一組で役割の交換やレビューをしながら開発を行う『ペアプログラミング』や、ソフトウェアの保守性を高めるために、外部仕様を変更せずに内部構造を変更する『リファクタリング』などがあります。

アジャイルソフトウェア開発には他にもチーム一丸となって問題の解決を繰り返しながら開発を進めていく『スクラム』などの手法があります。

リバースエンジニアリング

『リバースエンジニアリング』は、既存のソフトウェアの動作を解析するなどして、その仕様や構造を明らかにする手法です。
ただし、リバースエンジニアリングによって既存ソフトウェアの知的財産権を侵害してしまったり、利用許諾契約でリバースエンジニアリングが禁止されていたりすることもあるので注意が必要です。

知的財産適用管理

次は知的財産に関することを学びます。
そもそも知的財産とは、人が生み出した創作物やアイデアのことを指します。
また、著作権や特許権などの法律上保護される知的財産の権利を知的財産権といいます。

知的財産の分野は出題率は低めですが、下記の『特許クロスライセンス』と『組込みシステムの特許』については、最低限覚えておきましょう。

特許クロスライセンス

特許クロスライセンスとは、2つ以上の企業等が特許の実施権を互いに許諾しあうことです。 許諾しあうことで、使用料等を払わずに相手の特許を利用することができます。 ただし、自社の特許も利用されるため契約を結ぶ際は、慎重に判断する必要があります。

組込みシステムの特許

組込みシステムとは、様々な機器や家電などに組み込まれているコンピューターシステムのことです。 その特性上、ハードウェア部分と、ソフトウェア部分の特許は別々になっています。
組込みシステムで注意したい点としては、新規開発をする際に組込み製品のハードウェア部分だけが他社の特許に抵触する場合などです。
その場合は、ハードウェアの部分の特許実施権を得ないと権利侵害となります。

開発環境管理

次に、開発環境管理について学習します。
開発環境管理とは、製品を開発したあとの組込みシステム開発環境の維持管理に関するものです。

この分野も出題率は低いですが、問題は簡単なので覚えておきましょう。

製品を開発をする際に開発環境を準備しますが、開発後の開発環境については、特に動作に問題がなければ最新の開発環境する必要はないとされています。
最新の開発環境にすることで、動作がうまくいかなくなり、対応作業が発生する可能性があるためです。

しかし、開発が終わったからといって、開発環境を残さないということは良くないとされています。
また、開発後も定期的な動作確認は行う必要があります。

構成管理・変更管理

次に、ソフトウェアの構成管理について学習します。

ソフトウェアの構成管理は、どのように構成されているかを管理することです。
構成管理を行うことで、どのように構成されているかを把握できるだけでなく、不具合が発生したときに対応しやすくなるなどのメリットがあります。

構成管理は、プログラム、設計書、バージョン、変更内容などを対象に、構成台帳などで管理します。 あくまでも、ソフトウェアの構成についてなので、開発の進捗状況や組織編制などは対象にならないので注意しましょう。

以上でソフトウェア開発管理技術の学習は終わりです。
最後に演習問題を解いてみましょう。

演習


問1 XP(eXtreme Programming)において,プラクティスとして提唱されているものはどれか。

ア インスペクション

イ 構造化設計

ウ ペアプログラミング

エ ユースケースの活用

(出典:令和元年度 秋期 基本情報技術者試験 午前 問50)



問2 ソフトウェアのリバースエンジニアリングの説明はどれか。

ア 開発支援ツールなどを用いて,設計情報からソースコードを自動生成する。

イ 外部から見たときの振る舞いを変えずに,ソフトウェアの内部構造を変える。

ウ 既存のソフトウェアを解析し,その仕様や構造を明らかにする。

エ 既存のソフトウェアを分析し理解した上で,ソフトウェア全体を新しく構築し直す。

(出典:平成29年度 秋期 基本情報技術者試験 午前 問50)



問3 包括的な特許クロスライセンスの説明として,適切なものはどれか。

ア インターネットなどでソースコードを無償公開し,誰でもソフトウェアの改良及び再配布が行えるようにすること

イ 技術分野や製品分野を特定し,その分野の特許権の使用を相互に許諾すること

ウ 自社の特許権が侵害されるのを防ぐために,相手の製造をやめさせる権利を行使すること

エ 特許登録に必要な費用を互いに分担する取決めのこと

(出典:平成25年度 春期 基本情報技術者試験 午前 問49)



問4 ある製品の開発に使用された組込みシステムの開発環境における維持管理に関する記述として,最も適切なものはどれか。

ア あまり使用されない開発環境においても,最新の開発環境に更新して維持管理すべきである。

イ 一度製品化した後は,再度その開発環境を必要とすることはないので,開発環境を保持する必要はない。

ウ 開発環境は,使用頻度に関係なく,定期的に動作確認などを行って維持管理すべきである。

エ レンタル会社から借りた開発環境は,レンタル会社の責任でいつまでも保持される。

(出典:平成21年度 春期 基本情報技術者試験 午前 問50)



問5 ソフトウェア開発プロジェクトで行う構成管理の対象項目として,適切なものはどれか。

ア 開発作業の進捗状況

イ 成果物に対するレビューの実施結果

ウ プログラムのバージョン

エ プロジェクト組織の編成

(出典:平成24年度 春期 基本情報技術者試験 午前 問51)


解説

問1 XP(eXtreme Programming)において,プラクティスとして提唱されているものはどれか。

正解 ウ

XPは開発のためのプラクティス(良いとされる習慣)を推奨しています。
その代表的なものとして、ペアプログラミングがあります。
ペアプログラミングは、二人一組で役割の交換やレビューをしながら開発を行います。

よって、『ウ』が正解です。


問2 ソフトウェアのリバースエンジニアリングの説明はどれか。

正解 ウ

ア:これは、フォワードエンジニアリングの特徴です。

イ:これは、リファクタリングの特徴です。

ウ:正しいです。

エ:これは、リエンジニアリングの特徴です。


問3 包括的な特許クロスライセンスの説明として,適切なものはどれか。

正解 イ

ア:これは、オープンソースソフトウェアの特徴です。

イ:正しいです。

ウ:これは、特許権行使の説明です。

エ:これは、共同特許出願契約の説明です。


問4 ある製品の開発に使用された組込みシステムの開発環境における維持管理に関する記述として,最も適切なものはどれか。

正解 ウ

ア:現状、動作に問題がなければ開発環境を更新する必要はありません。

イ:保守のことを考えると開発環境残しておく必要があります。。

ウ:正しいです。

エ:永久に保持されるとは限りません。


問5 ソフトウェア開発プロジェクトで行う構成管理の対象項目として,適切なものはどれか。

正解 ウ

ソフトウェアの構成管理とは、どのようなに構成されているかを管理することです。
管理の対象としては、プログラム、設計書、バージョン、変更内容などが挙げられます。

よって、『ウ』が正解です。


以上でテクノロジ系の学習は終わりです。
次はマネジメント系を学習していきます。