「テクノロジ」カテゴリーアーカイブ

離散数学とは

離散数学とは

離散数学(りさんすうがく、英語:discrete mathematics)とは、原則として離散的な(言い換えると連続でない、とびとびの)対象をあつかう数学のことである。有限数学あるいは離散数理と呼ばれることもある。
グラフ理論、組み合わせ理論、最適化問題、計算幾何学、プログラミング、アルゴリズム論が絡む[1]応用分野で、その領域を包括的・抽象的に表現する際に用いられることが多い。またもちろん離散数学には整数論が含まれるが、初等整数論を超えると解析学などとも関係し(解析的整数論)、離散数学の範疇を超える。

Wikipediaから引用

『離散数学』という言葉自体は義務教育の数学ではまず聞かないだろうし、高校レベルでもキーワードとしては出てこなかったと記憶している。
とは言え、離散数学の範疇とされている要素には義務教育で習ったものや、情報処理技術者試験で問われる要素は多い。

特に、コンピュータ内部での情報の扱いを考えた場合、情報は電気信号の[ON]と[OFF]の2値の組み合わせで管理されているので、一般的には『2進数』の[0]と[1]に対応させて表現している。
ただ、2進数そのままでは人間にとっては至極扱いにくいため、必要に応じて10進数に戻して理解する。
この時の2進数や10進数という数の表し方や、相互に変換する方法などが『離散数学』の範疇にあるため、情報処理技術者試験のシラバスには『離散数学』という分野が登場している。

情報処理技術者試験での学習内容

【基本情報・応用情報】
基数,基数の変換,数値の表現,算術演算と精度など,コンピュータで扱う数値表現を修得し,応用する。
集合,論理演算の基本法則,手法を修得し,応用する。

【ITパスポート】
基数の基本的な考え方を理解する。
集合の基本的な考え方を理解する。

(1)基数 ITパスポート 基本情報 応用情報

2 進数,8 進数,10 進数,16 進数,n 進数の表現,2 進数と 10 進数などの基数の変換手法 を理解する。

(2)数値の表現 ITパスポート  基本情報  応用情報

負の数の表現(補数表現),小数の表現を理解する。

用語例: 固定小数点数,単精度浮動小数点数,倍精度浮動小数点数,仮数,指数,BCD (Binary Coded Decimal:2 進化 10 進),パック 10 進数

(3)算術演算と精度 基本情報 応用情報

加減乗除,表現可能な数値の範囲,シフト演算,演算精度(誤差とその対策)など,コ ンピュータでの算術演算を理解する。

用語例: 論理シフト,算術シフト,桁落ち,情報落ち,丸め,打切り,オーバフロー(あ ふれ),アンダフロー,単精度,倍精度

(4)集合と命題 ITパスポート  基本情報  応用情報

集合,命題,ベン図の手法と考え方を理解する。

用語例: 和集合,積集合,補集合,部分集合,真,偽,命題論理

(5)論理演算 ITパスポート  基本情報  応用情報

論理式の表現,論理演算,ド・モルガンの法則などの基本法則,真理値表,カルノー図の 手法を理解する。

用語例: 否定,論理和,論理積,排他的論理和,否定論理和,否定論理積,論理関数,分 配則

基数

この記事での学習内容 ITパスポート 基本情報 応用情報

2 進数,8 進数,10 進数,16 進数,n 進数の表現,2 進数と 10 進数などの基数の変換手法 を理解する。

記数法

私たちが一般的に数値を扱うときには0~9までの数字を使う、「10進法」を用いています。
一方で通信やコンピュータの分野では「2進法」「8進法」「16進法」などが使われます。

10進法では0~9までの数字を使い、「10」を桁上りの基準としていますが、2進数では「2」、16進数では「16」が桁上りの基準としています。

この桁上りの基準をどの値にするか、0からどの数字(文字)までを使って数を表すかを決めたものを「記数法」といいます。

一般的には、桁上りの基準の値を用いて「n進法:nを基準に桁上りする」となっています。

 桁上りの基準使う数字・文字表記方法の例
(10進数の100の場合)
2進法20と1のみ0b1100100
1100100(2)
8進法80~7の数字0144
144(8)
10進法100~9の数字100
16進法160~9までの数字と英字のA, B, C, D, E, F0x64
64(16)

基数と重みーn進数の表現

10進数の「1000」という値は「1 × 103」と表すことも出来ます。

この時の1を「仮数」、10を「基数」、103「重み」といい、10進数の各桁はこの表現による値となっています。
言い換えれば、「基数」は桁上りの基準で、「仮数」は実際に表示されている数字、「重み」はどの桁かを表す値となります。
(但し、重みの桁数は0が1の位となる点に注意)

このように、nを基数として数値を表す記数法を「n進数」といいます。

なお、n進数で小数を表すときには、「n-1」「n-2といった重みを使います。

前提として、以下の法則を覚えておくこと。
・n0 = 1 (nの「0乗」は必ず1になる。)
・n-x = 1 / nx

これらを踏まえて、「1234.567」という10進数の数値を基数と重みを使った表現で表すと下の式および図のようになります。

1234.567 = 1000 + 200 + 30 + 4 + 0.5 + 0.06 + 0.007
   = 1 × 103 + 2 × 102 + 3 × 101 + 4 × 100 + 5 × 10-1 + 6 × 10-2  + 7 × 10-3 

基数と重みー2進数の場合

2進数は2を基数とする数え方です。2を基準に桁上りするので、数の表記には0と1のみを使います。

例えば2進数の「1010」という値を重みを使った表現で表すと以下のようになります。

1010 = 1 × 23 + 0 × 22 + 1 × 21 + 0 × 20 

2進数の加算と減算

2進数同士の加算、減算は10進数の時と同様、筆算で解くことが出来ます。

例1) 11100(2) + 10110(2)

例2) 11100(2) - 10110(2)

基数変換

また、10進数と2進数など、n進数同士は互いに変換することが出来ますが、この変換のことを「基数変換」といいます。

10進数と2進数の変換

2進数を10進数に変換

2進数を10進数に変換するには、各桁の数に重み(2のべき乗)を掛けて合計します。

10進数を2進数に変換(整数部分)

10進数の整数を2進数に変換するには、10進数を商が0になるまで2で割り続け、余りを拾い出して順に並べると2進数になる。
*拾い出して並べる順は図を参照。

10進数を2進数に変換(小数部分)

10進数の小数を2進数に変換するには、10進数を2倍し、1の位を取り出す、という作業を小数部分がなくなるまで繰り返す。
*拾い出して並べる順は図を参照。

8進数と16進数

コンピュータ内部では情報は2進数で扱われているので、そのまま表記したいところですが、少し大きな値になると桁数が非常に多くなってしまい、ただでさえ分かりにくい2進数がさらに分かりにくくなります。

そこで桁数を少なくするためのテクニックとして、8進数や16進数を用います。
8進数の1桁は、2進数の3桁に対応し、16進数の1桁は2進数の4桁に対応するため、2進数から8進数・16進数には簡単に置き換えることが出来るためです。

2進数と8進数・16進数を変換するには、以下の表で対応を覚えてしまいましょう。

10進数2進数8進数16進数
0000
1111
21022
31133
410044
510155
611066
711177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F
16100002010
2進数と8進数の変換

2進数の3桁は、8進数の1桁に対応しています。
これを利用し、小数点を基準に3桁ずつ区切り、それぞれを8進数に変換していくと8進数の値となります。
*3桁に足りない部分は0を補います。整数部の場合は左に、小数部の場合は右に補います。

2進数と16進数の変換

2進数の4桁は、16進数の1桁に対応しています。
これを利用し、小数点を基準に4桁ずつ区切り、それぞれを16進数に変換していくと16進数の値となります。
*4桁に足りない部分は0を補います。整数部の場合は左に、小数部の場合は右に補います。

情報を表す単位

コンピュータ内部では、電流のON/OFFによって情報を表現しています。
この電流のON/OFFを数字に置き換えた場合、0と1の2つの数字のみを使う2進数のほうが都合が良いため、コンピュータ内部でデータを処理する場合には2進数が用いられています。

ビット

コンピュータはデータ処理に2進数を用いますが、この2進数1桁分の情報(ON/OFF、0 or 1)がコンピュータで扱うデータの最小単位で、「ビット(bit)」といいます。

1ビットの情報量で表せるデータの範囲は、2進数1桁分ですので、0か1の2パターンです。

ビットで表すことの出来る範囲

1ビット(=2進数1桁)で表すことの出来る情報は0か1の2通りです。
これを2桁分使うと、「00」「01」「10」「11」の4通りが表せます。

2=21、4=22ですので、nビット(2進数n桁)では、2n通りの情報を表すことが出来ます。

バイト

データの最小単位はビットですが、記憶装置の保存容量などを表す単位として「バイト(byte)」という単位もよく使われます。

「1バイト = 8ビット」として換算しますので、1バイトで表すことの出来る範囲は28で256通りとなります。

数値の表現(整数)

この記事での学習内容 ITパスポート 基本情報 応用情報

負の数の表現(補数表現)を理解する。

用語例: BCD (Binary Coded Decimal:2 進化 10 進),パック 10 進数

2進数における表現の問題点

整数の場合は桁数が多くなる程度ですが、小数の場合はそもそも表現できる数が少ないため、どうしても「誤差」が生じてしまいます。

例えば、10進数の 0.75 は、2進数で 0.11 と表すことが出来ますが、10進数の0.7を2進数で表そうとすると、 0.1011011… と延々と続く「無限小数」となってしまい、2進数で表すことが出来ません。

こういった数を表そうとすると、一定の桁で打ち切って表現せざるを得ません。しかし、打ち切ると10進数に戻した時にもとの値に戻すことが出来ず、「誤差」が生じてしまいます。

例えば、先述の 0.7 を2進数で表現し、小数第6位までで打ち切ったとすると、0.101101 となります。これを再度10進数に戻すと、0.64275 となり、元の 0.7 には戻せません。

打ち切る際に出来るだけ桁数を多く取れば誤差を減らすことは出来ますが、誤差を無くすことは出来ません。

10進数に近い形で数値を表現する方法

コンピュータ内部で扱われるデータは2進数が使われますが、コンピュータに入力される数値は10進数の場合が多いため、単純に2進数に変換しただけだと、誤差が発生しやすくなります。

その為、10進数の値を2進数に変換せずに表現する方法が考えられてきました。ゾーン10進数とパック10進数です。

ゾーン10進数は1桁を8ビットで表現し、パック10進数は1桁を4ビットで表現します。
いずれも、10進数書く桁の数字を4ビットの2進数で表現したBCDコードというものを使います。

BCDコード

BCD : Binary Coded Decimal の略。

BCDコードとは、10進数の各桁の数字を4ビットの2進数で表したもので、10進数を2進数に変換し、4ビット中の残りの上位ビットに0を入れたものです。

10進数BCDコード
00000
10001
20010
30011
40100
50101
60110
70111
81000
91001

なお、BCDコードで表現した2進化10進数といいます。

ゾーン10進数(アンパック10進数)

ゾーン10進数は8ビット(=1バイト)で10進数1桁を表現する方法です。8ビットを上位4ビットのゾーン部と、下位4ビットの数値部に分け、数値部は先述のBCDコードを使って表します。

なお、ゾーン部の値は、汎用コンピュータなどで使われるEBCDIC方式では「1111」、JIS方式では「0011」が用いられます。

ゾーン10進数で10進数を表現する場合、数値の桁数分のバイト数が必要となり、格納効率はよくありません。しかし、数字を表す文字コードとの相性が良く、数値と文字の変換が行いやすくなっています。

パック10進数

パック10進数は8ビット(=1バイト)で10進数2桁を表現する方法です。8ビットを4ビットずつに分けて数値部とします。
数値部はゾーン10進数と同様にBCDコードを使って表します。
さらに、最下位の4ビットを符号部とし、符号を入れます。

パック10進数はゾーン部を省略してまとめてパックしたイメージとなります。

パック10進数で10進数を表現する場合には、桁数の約半分のバイト数が必要で、ゾーン10進数と比べると格納効率にまさり、計算などに適しています。

2進数での符号付きの数の表現方法

正負の数を2進数で扱うためには、プラスかマイナスかを示す符号用に1ビット分を使います。この際、先頭のビットが0ならば正の数、1ならば負の数とするのが一般的です。

具体的な方法としては、以下の3つの方法が用いられています。

 nビット使った場合の表現範囲例)5と-5を8ビットで表した場合
絶対値に符号をつける-2n-1-1 ~ 2n-1-1
8ビットの場合:-127~127
5(10) → 00000101(2)
-5(10) → 10000101(2)
1の補数を用いる
*負数の場合、絶対値のビットを全て反転させる
-2n-1-1 ~ 2n-1-1
8ビットの場合:-127~127
5(10) → 00000101(2)
-5(10) → 111111010(2)
2の補数を用いる-2n-1 ~ 2n-1-1
8ビットの場合:-128~127
5(10) → 00000101(2)
-5(10) → 111111011(2)

この内、絶対値に符号を付ける方法と1の補数を用いる方法の場合、「+0」と「ー0」という同じ値が2つの方法で表現されてしまい、僅かにですが同じビット数で表現できる数値の範囲が少なくなってしまいます。

限られたビット数でできるだけ広い範囲の値を表現したいコンピュータにとっては余り良い方法ではないため、2の補数を用いる方法が一般的となっています。

2の補数による負数の表現

補数とは、「補う数」と言う名のとおり、それを足すとちょうど桁上りの基準値になる数のことです。

10進数の場合、基数が10nなので、7にとっての10の補数は4、8にとっての10の補数は2となります。

2進数の基数は2nなので、例えば 110(2) の2の補数は、足すと桁上りして 1000(2)になる数のことなので、計算すると 10(2)と求められます。

110(2) の2の補数 = 1000(2) - 110(2)  10(2)

なお、2の補数は「元の数のビットを全て反転し、1を足す」という方法で簡単に求められます。この方法の場合、結果的に負の数の先頭ビットが常に0になるため、先頭ビットが符号ビットの役割も果たします。

補数を使った減算

負数を扱う時に「2の補数」を用いると、限られたビット数で表現できる値の範囲が広くなるメリットの他に、「引き算を足し算の仕組みのままで計算できる」というメリットがあります。

一般的な10進数の計算でも、式を変形して以下のように引き算の式を「負数による加算」とすることが出来ますが、考え方は同じです。

例)  6 – 2 = 6 + ( -2) = 4

同様に、2進数の引き算を「負数による加算」で行なってみます。解が正数になる場合、負数になる場合両方を見てみましょう。
*今回は8ビットを使って正負の整数を表すものとします。

例1)6 – 2 = 4

例2)6 – 8 = -2

負数を2の補数で扱うことで、コンピュータにとっては加算命令だけで足し算も引き算もできるようになるため、演算機能が簡略化出来ます。

人間が2の補数で計算する際には、「最上位で桁上りしたビットは無視する」という手順が必要になりますが、コンピュータの場合、「整数を8ビットで表す」としている場合、桁上りして発生した最上位の9ビット目は無視されてしまうため、わざわざ「最上位で桁上りした場合」ということを考える必要も無いのです。

数値の表現(小数)

この記事での学習内容 ITパスポート 基本情報 応用情報

小数の表現を理解する。

用語例: 固定小数点数,単精度浮動小数点数,倍精度浮動小数点数,仮数,指数

小数の表現方法の種類

小数の表現方法には固定小数点数と浮動小数点数があります。また、浮動小数点数には、単精度浮動小数点数と倍精度浮動小数点数などがあります。

固定小数点数

コンピュータで負の数を含む整数の数値データを扱うときは、固定小数点数という方式を使うのが一般的です。

固定小数点数では、次のようにデータを記憶します。

  1. データの格納に必要なビット長の記憶領域をあらかじめ用意する。
  2. 小数点の位置を決めて、各桁の2進数値を各ビットに当てはめる。
  3. 先頭の1ビットを正負の符号ビットとして扱う。

なお、固定小数点数のビット長はコンピュータによって異なりますが、16ビットや32ビット長などが一般的です。

浮動小数点数

浮動小数点数は、文字通り小数点の位置が浮いて移動するように見えるので、浮動小数点数と呼ばれています。

この方式では、非常に大きな数や小さい数を扱うことが出来ます。
例えば、32ビットの固定小数点数の場合、正の数なら 231-1 が最大の数となりますが、32ビットの浮動小数点数の場合、3.4 × 1038 という非常に大きな値となります。

浮動小数点数の正規化

浮動小数点数では、同じ数値を仮数部、指数部の調整次第でいろいろな表現が可能になります。しかし、コンピュータにとって表現方法が一定ではないのは都合が悪いため、仮数部の小数第1位に0以外が来るようにします。このことを正規化とよんでいます。

なお、仮数部の整数部が基数1桁に収まるようにすることを正規化とする場合もあります。後述する「バイアス表現」を使う場合に、この方法を使います。

例) 1.5 という10進数の値を浮動小数点数として表現
  15 × 10-1
  1.5 × 100 ← こちらを正規化されたデータとする場合もある
  0.15 × 101 ← 正規化されたデータ
  0.015 × 102

浮動小数点数の表現方法

浮動小数点数は、仮数部の符号、指数部、仮数部を用いて表現します。
仮数部の符号は、0か正の数の場合は0を、負の数の場合は1とします。
指数部は基数を何乗するのかという値を入れます。

 

浮動小数点数の表現形式

浮動小数点数の表現形式にはいくつかの種類があります。
ここでは、24ビットの浮動小数点数について、『バイアス表現』と使わない形式と使う形式を紹介します。

*バイアス:下駄履き、底上げ

バイアス表現を使わない形式

24ビットの内、1ビットを符号ビット、7ビットを指数部、16ビットを仮数部とします。
これを用いて、10.375(10) を表現してみます。

10.375(10) を2進数で表すと、1010.011(2) となります。この数は正の数ですので、符号ビットは「0」となります。

次に、仮数部が1未満になるように正規化を行います。
1010.011 = 0.1010011 × 24 となるので、仮数部の上位から「1010011」を入れ、残りビットは0とします。

最後に指数部は4を7桁の2進数に変換し、「0000100」を入れます。

バイアス表現を使う形式

24ビットの内、1ビットを符号ビット、8ビットを指数部、15ビットを仮数部とします。
これを用いて、-10.375(10) を表現してみます。

-10.375(10) を2進数で表すと、-1010.011(2) となります。この数は負の数ですので、符号ビットは「1」となります。

次に、仮数部が1.**になるように正規化を行います。
1010.011 = 1.010011 × 23 となるので、ここから小数点以下の部分「010011」を抜き出し、仮数部の上位から「010011」を入れ、残りビットは0とします。

最後に指数部分ですが、ここで『バイアス表現』を使います。
バイアスとは「下駄を履かせる、底上げする」という意味ですが、マイナスの数値を符号なしの2進数で表すために、所定の数(=バイアス値)を加えて表す方法です。

今回は指数部分を8ビットとし、最小値の-127を0と表すために、バイアス値を127とします。指数部の値は3ですので、これに127を加えた130を2進数に変換し「10000010」を指数部に入れます。

単精度浮動小数点数と倍精度浮動小数点数

浮動小数点数を32ビットで表現する方法を単精度浮動小数点数といいます。

ここから使用する桁数を増やし、精度を上げる場合は64ビットの倍精度浮動小数点数を利用します。

 

算術演算と精度

この記事での学習内容 基本情報 応用情報

加減乗除,表現可能な数値の範囲,シフト演算,演算精度(誤差とその対策)など,コ ンピュータでの算術演算を理解する。

用語例: 論理シフト,算術シフト,桁落ち,情報落ち,丸め,打切り,オーバフロー(あ ふれ),アンダフロー,単精度,倍精度

シフト演算

引き算は2の補数を使うと足し算で同じ計算が出来ましたが、掛け算や割り算の場合はどうでしょうか。

例えば、10進数の123を10倍すると1230に、100倍すると12300になりますが、この計算は123の桁を10倍のときは1つ、100倍のときは2つ左ずらすことで簡単に求めることが出来ます。

逆に、10分の1にする場合は右に1つ、100分の1にする場合は右に2つずらすことで求めることが出来ます。

つまり、数値の桁を1つずつずらすことは、その数値の『基数倍』や『基数分の1』を計算するのと同じ効果があります。

このように桁を左や右にずらすことを『シフト』といいます。左にずらすことを「左シフト」、右にずらすことを「右シフト」といいます。

これらのシフト演算は掛け算や割り算の代わりに利用することもありますが、通常は2進数でビットバターンの特定の操作をしたり、ビットの状態を判定する際に利用します。

2進数のシフト演算

2進数の場合は、1桁左シフトすると数値は2倍、1桁右シフトすると、数値は2分の1となります。

桁あふれ(オーバーフロー)

コンピュータで数値を表現する場合、8ビットや16ビットなどあらかじめ表現範囲は決まっています。
その為、シフトを行うと表現の幅を超え、ビットが飛び出してしまい、正確に数値が表現できない場合があります。これを「桁あふれ」または「オーバーフロー」といいます。

シフトの種類

シフト演算には、符号ビットを考慮しない「論理シフト」と、符号ビットを考慮してそのままにする「算術シフト」があります。

論理シフト

論理シフトでは、符号ビットを考慮しません。最上位のビットも含めてシフトを行います。

シフトすることによって飛び出したビットは捨てられ、空いたビットには0が入ります。

シフトによって飛び出したビットに1が入っていた場合、桁あふれが発生し、正しい計算結果を得ることが出来ません。
左にシフトして桁あふれが発生した場合を「オーバーフロー」、右にシフトして桁あふれが発生した場合を「アンダーフロー」といいます。

左論理シフト

左論理シフトでは、左にNビットシフトすると、左側の上位Nビットが飛び出して捨てられます。その分、右側の下位Nビットが空き、そこには0が入ります。

これによって、元の数の2N倍の数となります。

但し、シフトによって飛び出したビットに1が入っていた場合、オーバーフローが発生し、正しい計算結果を得ることが出来ません。

右論理シフト

右論理シフトでは、右にNビットシフトすると、右側の下位Nビットが飛び出して捨てられます。その分、左側の上位Nビットが空き、そこには0が入ります。

これによって、元の数の1/2N倍の数となります。

但し、シフトによって飛び出したビットに1が入っていた場合、アンダーフローが発生し、正しい計算結果を得ることが出来ません。

算術シフト

算術シフトでは符号ビットを考慮して、先頭の最上位ビットはそのまま移動しません。最上位以外のビットだけをシフトします。

負の数を2の補数で表現する、符号付きの2進数の場合は算術シフトが使われます。

左算術シフト

左算術シフトでは、先頭の符号ビットは移動せず、それ以外のビットを左にシフトします。先頭の符号ビットが移動しない以外は論理シフトと同様です。

算術シフトの場合は、シフトによって飛び出したビットに「符号ビットと異なる値」が入っていた場合、オーバーフローが発生し、正しい計算結果を得ることが出来ません。

右算術シフト

右算術シフトでは、先頭のの符号ビットは移動せず、それ以外のビットを右にシフトします。
シフトによって左側に空いたビットには、符号ビットと同じ値が入ります。

但し、シフトによって飛び出したビットに1が入っていた場合、アンダーフローが発生し、正しい計算結果を得ることが出来ません。

数値データの形式と誤差

コンピュータでは扱う情報に応じて、数値の表現方法が使用される。

使用する数値データの形式により、精度、扱える範囲、データサイズ、誤差の生じやすさが異なってくる。

形式としては、整数型、浮動小数点型等がある。

誤差の種類

誤差の種類としては以下の様なものがある。

  • オーバーフロー、アンダーフロー:扱えるデータの範囲を超えた時の誤差。
  • 丸め誤差:無限小数の桁を区切った際に発生。
  • 情報落ち:絶対値の大きい数と小さい数を加減算した時、絶対値の小さい値が無視される。
  • 桁落ち:値がほぼ等しく、丸め誤差を持った数値同士の減算を行なった場合に有効数字が減少

 

集合と命題

この記事での学習内容 ITパスポート  基本情報  応用情報

集合,命題,ベン図の手法と考え方を理解する。

用語例: 和集合,積集合,補集合,部分集合,真,偽,命題論理

集合

集合とは、同じ属性を持つ要素の集まりのことです。

集合はよく「ベン図」で表されます。要素全体の集まりを四角で表し、そのうち集合に含まれる要素を色付きの円で示します。この時、集合に含まれない円の外側のことを補集合といいます。

集合演算

集合同士を演算することを集合演算といい、「和集合」「差集合」「積集合」が代表的です。

演算意 味
和集合集合と集合を足す
差集合ある集合から、別の集合と共通する部分を引く
積集合複数の集合から、互いに共通する部分を取り出す
補集合全体から、その集合を取り除く

集合の包含関係

2つの集合の関係は、場合によっては下図のように、集合Aが集合Bに含まれる場合もある。この様な包含関係を表す演算子として「⊆」や「⊇」が用いられる。

命題

命題とは、要素を「正しい(真)」か「正しくない(偽)」かで振り分けるための条件付けを指します。ある命題について、真か偽かによって要素を振り分けると集合を作ることが出来ます。

また、「真」と「偽」を真理値といい、「真」を1、「偽」を0として表すこともあります。対象となる要素の真理値を表の形にまとめたものを、真理値表といいます。

論理演算

この記事での学習内容 ITパスポート  基本情報  応用情報

論理式の表現,論理演算,ド・モルガンの法則などの基本法則,真理値表,カルノー図の 手法を理解する。

用語例: 否定,論理和,論理積,排他的論理和,否定論理和,否定論理積,論理関数,分 配則

論理演算

命題の真偽によって演算結果を表すことを論理演算といいます。
基本となるものに「否定(NOT)」「論理積(AND)」「論理和(OR)」があります。

演算意 味
否定1つの命題が「~ではない」と逆になる(NOT)
論理積2つの命題が「~かつ~」の関係(AND)
論理和2つの命題が「~または~」の関係(OR)

論理演算はコンピュータと縁の深いモデル化の技法です。
AND、OR、NOTで複数の命題を組み合わせれば、どんな複雑な論理回路も作ることが出来ます。
また、データ間の関係も論理式に置き換えると整理できるので、プログラミングやデータベースの構築に欠かせない理論です。

否定(NOT) 、論理積(AND)、論理和(OR)

集合の論理演算は、リレーもしくは半導体回路を使った電子回路で実現することが出来ます。
真理値表のAとBを入力に見立てて、その真、偽の状態によって論理和の真理値表と同じ結果を出力する回路をOR回路、論理積と同じ結果を出力するものをAND回路、入力の否定を出力するものをNOT回路といいます。

 MIL記号ベン図真理値表
Aの否定
AとBの論理積
AとBの論理和

それぞれの回路は回路図上で以下の図のような記号(MIL記号)を使って表します。
NAND回路とNOR回路は、それぞれAND回路、OR回路にNOT回路を繋いだものとなります。

これらの回路を組み合わせることで、非常に複雑な論理式や機能を電子回路で実現することが出来ます。実際、コンピュータ内部で足し算やシフト演算を行うALU、命令デコーダ、タイミング制御回路、レジスタやメモリ(DRAMを除く)なども全て論理回路で構成されています。

また、基本となる論理演算を組み合わせたものもよく利用されます。代表的なものは、「否定論理和(NOR)」「否定論理積(NAND)」「排他的論理和(XOR)」です。

論理演算の一般的な法則

2つの命題を使った論理演算には、幾つかの法則が成り立ちます。

交換の法則:

結合の法則:

分配の法則:

復元の法則:

ド・モルガンの法則:

ド・モルガンの法則を始めとする、論理演算の各種の法則は、複雑な論理式を簡略化したり、別の式に変換したりする時に利用できます。

これは、プログラムの開発において、判定条件が複雑になった時、評価する式を簡略化したり、デジタル回路を設計する時に、同じロジックの回路を少ない部品点数で設計し直したり、と言った場面で役立ちます。

カルノー図法

カルノー図法は真理値表でパターン数が増えて見づらいときなど、論理式を簡略化するための図法。下記のような変数が3つ以上の式で、論理積の項を論理和した形(積和形)の場合に使いやすいとされている。

上記の式をカルノー図で表した例

 

応用数学とは

応用数学とは

応用数学(おうようすうがく、英語:applied mathematics)とは、数学的知識を他分野に適用することを主眼とした数学の分野の総称である。

Wikipediaから引用

情報処理技術者試験において、『応用数学』では、確率・統計の計算や分析手法を理解し活用すること、数値解析、グラフ理論、待ち行列理論などの基本的な数学的原理を理解し活用することが求められています。

情報処理技術者試験での学習内容

【基本情報・応用情報】
確率・統計の計算、分析手法を習得し、応用する。
数値解析、グラフ理論、待ち行列理論など、数学的原理を習得し、応用する。

【ITパスポート】
確率と統計の基本的な考え方を理解する。

(1)確率と統計 ITパスポート 基本情報 応用情報

1.確率

順列、組合せ、場合の数、確率とその基本定理、確率分布(離散型、連続型)と期待値、マルコフ過程を理解する。

用語例:階乗、加法定理、乗法定理、正規分布、ポアソン分布、指数分布、カイ二乗分布、確率密度

2.統計

度数分布表、ヒストグラム、代表値、ばらつき、相関関係、回帰直線、分散分析、検定など統計分析の手法を理解する。

用語例:中央値(メジアン)、最頻値(モード)、平均値、標準偏差、分散、相関係数、推定、回帰分析、帰無仮説、有意水準、カイ二乗検定

(2)数値計算 基本情報  応用情報

連立一次方程式の解法など、数値計算に関する基本的な内容を理解する。

用語例:行列、対数、掃出法、近似解法、収束、誤差

(3)数値解析 基本情報 応用情報

二分法、補間法、オイラー法など、近似解を数値的に求める考え方や計算過程で生じる誤差を理解する。

用語例: 数値積分、シンプソン法、ニュートン法、絶対誤差、相対誤差、丸め誤差、打切り誤差

(4)数式処理 基本情報  応用情報

コンピュータを用いて、数式を記号的に代数処理する数式処理システムとそのアルゴリズムを理解する。

用語例: 因数分解、微分、積分

(5)グラフ理論 基本情報  応用情報

グラフ理論の基本的な概念とその応用を理解する。

用語例: 無向グラフ、有向グラフ、完全グラフ、重み付きグラフ

(6)待ち行列理論ITパスポート 基本情報  応用情報

待ち行列理論の構成要素、考え方、M/M/1モデルにおける計算、乱数を利用したシミュレーションを理解する。

用語例: サービス時間、到着間隔、平均到着率、平均サービス率

(7)最適化問題 基本情報  応用情報

最適化問題とは何か、線形計画法、PERT、最短経路問題などの考え方を理解する。

用語例: 動的計画法

確率と統計(1)

この記事での学習内容 ITパスポート 基本情報 応用情報

順列、組合せ、場合の数、確率とその基本定理、確率分布(離散型、連続型)と期待値、マルコフ過程を理解する。

用語例:階乗、加法定理、乗法定理、正規分布、ポアソン分布、指数分布、カイ二乗分布、確率密度

場合の数

ある出来事が起きる可能性の数を「場合の数」と呼びます。場合の数で数えられる「ある出来事」は「事象」と呼びます。

例えば、サイコロを一個転がす場合を考えると、場合の数は6です。サイコロが2個になれば、場合の数は 6 × 6 で36です。

順列

箱の中に赤、青、黄の3種類の玉が1個ずつあるとします、この中から2個を選んで、順番に並べる場合、次の6通りの順番が考えられます。

1個め
2個め


この例のように、複数あるものから幾つかを選んで、順番を付けて並べる時の並べ方を「順列(Permutation、パーテーション)」といいます。n 個の中から r 個取って並べる順列を、nPr と表します。

順列の個数は計算で求めることが出来ます。
上の例では、1個めの玉の色は赤、青、黄の3通りあり、2個めは残りから取るので2通りあります。
1個めの3通りに続いて、2個めの2通りのとり方が並ぶと考えられるので、全部で 3×2=6 通りの順列となります。
同じ要領で、10個のうちから3個選ぶ順列は 10×9×8 = 720通りあります。

n 個の中から r 個取って並べる順列は、以下の公式で求められます。

nPr = n × (n-1) × ・・・× (n-r+2) × (n-r+1)

又は、階乗を使って、以下のような式でも表されます。

階乗とは、以下のように 値を n から 1まで、全て掛け算する計算のことです。

n! = n × (n-1) × ・・・× 2 × 1

公式を使って、10個の中から3つを選んで順に並べる順列を求めると、以下のようになります。

組合せ

複数あるものから幾つかを選んで、順番を付けずに一組にする時のまとめ方を「組合せ(Combination、コンビネーション)」といい、 n 個の中から r 個を取ってまとめる組合せを nCr と表します。

例えば、赤、青、黄の3種類の玉(1個ずつ)の中から2個を選んで組にする場合、「赤、青」「赤、黄」「青、黄」の3通りの組み合わせができます。
順列の場合と違い、「赤、青」と「青、赤」は同じ組み合わせとみなします。

組合せの数を求めるには、以下の公式のように、全体の順列を取った数の順列でわれば求められます。

公式を使って、10個の中から3つを選んだ組合せの数を求めると、以下のようになります。

確率

ある出来事が起きると期待できる割合を確立(Probability)といい、事象Aの起こる確率を P(A) と表します。

例えば、1個のサイコロを投げて、「1」の目が出る確率は次のように求めます。

  • 全ての目の数は1~6の6通り
  • そのうち、「1」の目は1つだけ

事象の排反

同時に起こりえない事象同士のことを、『事象排反する』という。

ベン図を書いた時に重なる部分がなかったり、論理積をとった時に解が空集合になる場合。

例えば、サイコロを振って『出目が2である』という事象と、『出目が3である』という事象は同時には発生し得ないので、事象が背反している。

が、『出目が2の倍数である』という事象と『出目が3の倍数である』という事象は、出目が6になったときに、ともに条件を満たすので、これらの事象は背反しない事になる。

事象の独立

二つの事象の発生確率を考えた場合、

  • 互いに影響しない→事象が独立している。
    例)サイコロを続けて振った場合の出目、ルーレットで特定の数字が出る確率など
  • 他方に影響を与える→事象が独立していない
    例)あたり数に限りのあるクジ引きで、1人目が当たる確率と、2人目が当たる確率。

*独立と排反の違い
独立している→互いに影響しない
背反している→同時に発生しない

確率の和事象(加法定理)

事象A又は事象Bが起こることを「和事象(A ∪ B)」といいます。
和事象の起こる確率は事象Aの起きる確率と事象Bの起きる確率を足したものから、事象AとBの積事象の確率を引いたものです。

例えば、サイコロを2回投げ、1回目に偶数の目が出る場合と、2回めに「2」が出る場合のいずれか、又は両方が起こる確率は以下のように求めます。

確率の積事象(乗法定理)

互いに独立した事象であるAとBがともに起こることを、事象AとBの積事象( A ∩ B)と言います。
積事象の起こる確率は事象Aの起きる確率と事象Bの起きる確率を掛けたものです。

例えば、サイコロを2回投げる時、1回目に偶数の目が出て、なおかつ2回目に「2」が出る確率は次のように求めます。

(参考)事象が独立していない場合に、事象Aが起きたという条件下で、事象Bが起きる確率は、以下のように求める。

マルコフ過程

時間とともに確率が変化する過程を「確率過程」と呼びます。例えば、降水確率は時間とともに確率が変化するので、確率過程とみなせます。
確率過程の中で、確率の値が過去の状態に一切関係がないものを「マルコフ過程」といいます。

例えば、サイコロを振り続ける場合にある目が出る確率過程を考えます。
現在のサイコロの目が出る確率は、過去のサイコロの目の影響を一切受けないので、マルコフ過程となります。
これに対して、降水確率は現在の降水状況に影響を受ける確率過程なのでマルコフ過程にはなりません。

  • 確率過程を取る例:株価、為替、電子回路に対するノイズの発生確率、降水確率など
  • マルコフ過程を取る例:サイコロ、ルーレット、宝くじの当選番号

確率分布

ある事象が起きる確率が変数によって決まる場合、変数と確率の関係を「確率分布」と呼びます。

例えば2個のサイコロを降る場合を考えます。

目の数の合計が2になるのは、1と1の場合だけなので、36分の1の確率です。
目の数の合計が3になるのは、1と2,2と1の2つの場合なので、18分の1です。
したがって、この場合は目の数の合計を変数とする確率分布が考えられます。

出た目の和23456789101112
確率1/362/363/364/365/366/365/364/363/362/361/36

なお、確率分布にはサイコロの目のように確率変数が離散的な値を取る場合と、連続する値を取る場合があります。

  • 離散型の確率分布:二項分布、ポアソン分布など(サイコロの目など、確率変数がとびとび)
  • 連続型の確率分布:正規分布、指数分布など(ある人の身長・体重など、確率変数の小数点以下をいくらでも細かく取れる場合)
ポアソン分布

単位時間中に平均でλ 回発生する事象が、ちょうど k 回(k は0を含む自然数)発生する確率をグラフに取ると、λ = k となる時にピークが来るようなグラフになる。

例:1時間に5人の利用者があるATMで、実際に1時間にATMを利用した人数の分布。

指数分布

単位時間中に平均でλ 回発生する事象が、「次に発生するまでの時間」の分布。

例:1時間に5人の利用者があるATMで、次にATMを利用する人が来るまでの時間の分布。

カイ二乗分布

独立に標準正規分布に従う k 個の確率変数 X1, …, Xk をとる。 このとき、統計量   の従う分布のことを自由度 k のカイ二乗分布と呼ぶ。この分布は自由度 k に応じて下図のような形をとる。

実際に様々な観測データを取得した場合、その分布には誤差が含まれるため、理論的に求められる分布と完全には一致しない。例えば、サイコロの各目の出る確率は1/6であるが、だからといってサイコロを6回振ったら各目が1回ずつ出るわけではない。フル回数を多くすればおおよそ1/6ずつに近い分布になると思われるが、均等に1/6ずつにはならない。

こういった時に「実際の観測データが理論値の分布にほぼ等しいとみなせるかどうか」を分析する際に、カイ二乗分布が用いられる。(この分析方法のことを「カイ二乗検定」とよぶ)

確率と統計(2)

この記事での学習内容 ITパスポート 基本情報 応用情報

度数分布表、ヒストグラム、代表値、ばらつき、相関関係、回帰直線、分散分析、検定など統計分析の手法を理解する。

用語例:中央値(メジアン)、最頻値(モード)、平均値、標準偏差、分散、相関係数、推定、回帰分析、帰無仮説、有意水準、カイ二乗検定

統計

ある集団に関するデータを集めてその分布を調べ、数値化して集計することを統計といいます。

統計を取り、様々な分析手法(表やグラフを活用する)を用いると、その集団の性質や特徴をつかむことが出来ます。

度数分布表

度数分布表は統計の基礎資料となるものです。

例えば、15人が受けた試験の得点を10点刻みで採点し、結果を次のようにまとめたとします。

上の表のように、データ全体の発生範囲をいくつかの階級に分け、それぞれの階級にデータがいくつ分布しているかを示す表のことを、度数分布表といいます。

ヒストグラム

ヒストグラムはデータ分布の状況を見るために作られる図解です。
度数分布表を棒グラフにしたもので、連続した数値を区分ごとに分けて、横軸の目盛とします。

ヒストグラムにおいて、それぞれの範囲に属するデータの件数を「度数」といいます。ある区分に集中してデータが分布する場合、その区分を中心とした山形のグラフになります。

正規分布

正規分布は、データが平均値を中心として+ーに対象に分布した状態のことです。

一般的に、ある事象について一定数以上のデータを抽出して統計と取ると正規分布になり、そのヒストグラムは左右対称の釣鐘型になると言われています。

ポアソン分布

ポアソン分布は、発生確率の低い事象で見られる確率分布です。
例えば、電話における単位時間中の着呼数、工場における不良品の発生数などがポアソン分布に従うと言われています。

単位時間中に平均でλ 回発生する事象が、ちょうど k 回(k は0を含む自然数)発生する確率をグラフに取ると、λ = k となる時にピークが来るようなグラフになる。

例:1時間に5人の利用者があるATMで、実際に1時間にATMを利用した人数の分布。

指数分布

指数分布は発生階数の低い事象で見られる確率分布です。指数分布は信頼度の計算などでよく使われます。(信頼度:機械の部品が故障しない確率)

指数分布はポアソン分布と関係していて、電話における単位時間内の着呼数がポアソン分布の時、着呼間隔は指数分布になります。

単位時間中に平均でλ 回発生する事象が、「次に発生するまでの時間」の分布。

例:1時間に5人の利用者があるATMで、次にATMを利用する人が来るまでの時間の分布。

カイ二乗分布

独立に標準正規分布に従う k 個の確率変数 X1, …, Xk をとる。 このとき、統計量   の従う分布のことを自由度 k のカイ二乗分布と呼ぶ。この分布は自由度 k に応じて下図のような形をとる。

実際に様々な観測データを取得した場合、その分布には誤差が含まれるため、理論的に求められる分布と完全には一致しない。例えば、サイコロの各目の出る確率は1/6であるが、だからといってサイコロを6回振ったら各目が1回ずつ出るわけではない。振る回数を多くすればおおよそ1/6ずつに近い分布になると思われるが、均等に1/6ずつにはならない。

こういった時に「実際の観測データが理論値の分布にほぼ等しいとみなせるかどうか」を分析する際に、カイ二乗分布が用いられる。(この分析方法のことを「カイ二乗検定」とよぶ)

統計の指標

統計の指標として、平均、メジアン、モード、レンジなどの値がよく用いられます。これらの値のことを「代表値」といいます。

代表値とは、多数あるデータの値を一つの数値で代表させた値です。

平均データの合計値をデータの個数で割った値
メジアン中央値。データを大小順に並べた時に中央の位置に来る値
モード最頻値。データ中に存在する個数が最も多い値
レンジ範囲。データの最大値と最小値の差

以下の度数分布表があった場合、各代表値は以下のようにして求めます。

平均

データの合計値:10+30+40×2+50×4+60×3+70×2+80+90 = 810
データの個数:15
平均:810 ÷ 15 = 54

メジアン

個々のデータを昇順(小さい順)に並べ、中央に来る値を見る。

中央に来る値は8番目の値なので、メジアンは50。

なお、集計データが偶数個のときはメジアンは2つの中央値の平均を使う。

例:10, 30, 40, 50, 70, 80 の6つのデータのメジアン
3番めと4番目が2つの中央値になるので、(40+50) ÷ 2 =45

モード

得点の中で出現度数が最も高い値は50 (4回) なので、モードは50

なお、最頻値が複数ある場合はそれら全てがモードとなる。

レンジ

得点の最大値:90
得点の最小値:10
レンジ: 90 – 10 = 80

散布度(ばらつきの度合い)

データの分布の特性は代表値だけでは表しきれません。
例えば、以下のようなケースで代表値として平均値を採用する場合、下記の2つのケースはどちらも平均値は10で変わりません。

  • ケースA:0,10,20
  • ケースB:5,10,15

しかし、データのばらつき度合いが異なります。このばらつきの度合いを示すのが散布度です。

代表的な散布度には分散と標準偏差があります。

分散は以下の式で求めます。

Σ( データの値ー平均値 )2

これに基づいて、先ほどの2つのケースの分散を求めます。

  • ケースA:0,10,20
    ( 0 – 10 )2 + ( 10 – 10 )2 +( 20-10 )2 =100 + 0 + 100=200
  • ケースB:5,10,15
    ( 5 – 10 )2 + ( 10 – 10 )2 +( 15-10 )2 =25 + 0 + 25=50

標準偏差

正規分布の形は、母集団の平均値と、母集団の分散から求めた標準偏差で決まります。

分散とはデータのばらつきを表す値で、標準偏差は分散のルート(√ )です。

平均をμ (ミュー)、標準偏差をσ (シグマ) と表すと、正規分布では約68%のデータが μ ± σ の範囲に収まり、約95%のデータが μ ± 2σ の範囲に収まります。
 

回帰直線

散布図(*1)のデータに、できるだけ一致する曲線を求める分析を「直線回帰分析」と呼びます。
直線回帰分析では、最小二乗法と呼ばれる方法が、一般的には使われます。
これは、実際のデータの値と、直線上の値の差の二乗が最小になる直線を求める分析方法です。直線は「傾き(*2)」と「y切片(*3)」と呼ばれる2つの値で定まります。

回帰直線は、実際のデータとは一致しません。データの分布によっては回帰直線と一致する度合いが大きかったり小さかったりします。
データの分布が回帰直線と一致する度合いを「相関」といいます。回帰直線に一致するほど「相関が強い」といいます。
相関の強さを数値で示したものが「相関係数」です。相関係数は-1~1までの値を取ります。

(*1)散布図:2つの属性値の相関関係を表したグラフ(例:身長と体重の相関など)

(*2)傾き:xが1増加した時のyの変化量を表す値。傾きがプラスの場合は右上がりの直線、マイナスのときは右下がりの直線となる。絶対値が大きいほど傾きは急。

(*3)y切片:直線とy軸の交点でのyの値。y切片が大きいほど、直線はグラフの上方に位置する。

標本調査

調査対象の件数が多い場合、対象全てを調査することが難しい場合があります。

このような場合には、調査対象の中から一部を取り出して調査を行い、全体を推定します。
このような分析を標本調査と呼びます。

例)テレビ視聴率、世論調査など

数値計算

この記事での学習内容 基本情報 応用情報

連立一次方程式の解法など、数値計算に関する基本的な内容を理解する。

用語例:行列、対数、掃出法、近似解法、収束、誤差

単項式、多項式、次数

単項式は、数値や文字の「掛け算」だけで造られた式のことです。2x や 3b などは単項式です。

多項式は単項式の足し算、引き算の形式で造られた式です。3x-2b と言った式が多項式の例です。多項式の中にある単項式は多項式の「項」と呼びます。

次数は、単項式の場合掛け算されている「文字の個数」です。3xy という式の場合、掛け算されている文字はx,y なので次数は2、x3 の次数は3となります。
多項式の場合は、一番次数の高い項の次数がその式の字数です。
x2+y という式の場合、x2 の次数2が一番高いので、この式の次数は2となります。

方程式、1次方程式

方程式とは、x , y といった「未知数」を含む等式のことです。未知数は「まだ分かっていない数」のことで、xやy といった文字で表します。

一次式とは、未知数の2乗以上を含まない式のことです。一元一次式は未知数が1つの一次式、二元一次式は未知数が2つの一次式です。

1次方程式とは、未知数の2乗以上の関係を含まない等式のことです。

連立一次方程式

連立方程式とは、同時に成立する複数の方程式です。方程式を組み合わせることにより、複数の未知数の解を求めることが出来ます。

連立方程式の名称は、未知数の数と次数によって決まります。

未知数の数が2個ならば2元連立方程式、3個ならば3元連立方程式となります。

つまり、連立一次方程式とは、複数の未知数を含む複数の1次方程式です。

連立一次方程式の解法

「連立一次方程式を解く」とは、与えられた方程式を全て同時に成立させる未知数の値を求めることです。数学の問題を解く方法のことを「解法」といいます。

連立方程式の解法には、加減法、代入法、等置法などがあります。連立一次方程式はこうした解法を用いて式を1元1次方程式の形にしていき、複数ある未知数を一つ一つ順番に確定していきます。

行列

行列とは、数学用語では、数値や変数を長方形に並べたものという意味になります。行列では横の並びを行、縦の並びを列と呼びます。下図の a , b , c , d などを行列の要素、あるいは成分といいます。

行列の要素を数値などで具体的に記述せずに、一般化して文字で表す場合、要素の右側に要素の位置を示す「添え字」を付けます。
上の図の「b12」であれば、最初の1は行番号、つぎの2が列番号を表します。

なお、行列の中で行数と列数が等しいものを「正方行列」といいます。

行列の和

行列同士の和は、各行列の同じ添字の要素同士を足し算します。
*下図では数値の右下に添え字を付けていますが、計算の説明のために例外的につけています。

行列の差

行列同士の差は、各行列の同じ添字の要素同士を引き算します。

行列の積

行列の積は、行方向と列方向を掛けたものを足して要素とします。行列の要素が1以外の場合、行列A×行列Bと行列B×行列Aの計算結果は異なります。

また、行列の積を「行列A×行列B」で求める場合、下図のように行列Aの列数と行列Bの行数が一致している必要があります。

例えば、行列Aが3行2列の行列だった場合、行列Bは2行n列でないと、積を求めることは出来ません。

行列による連立方程式の表記

連立一次方程式を行列の積を用いて表すことが出来ます。

対数

対数とは、ある数x は、ある数y を何回か掛け合わせた値であるとすると、そのかけ合わせた回数のことを言います。
数式で表すと、x = ya の a を「y を底とするx の対数」といい、 a = logy(x) と表します。
例)8 = 23 なので、log28 = 3

特に底を10とした対数のことを常用対数とよんでいます。

対数グラフ

通常のグラフでは、1, 2, 3, …と言うように、横軸も縦軸も順番に数が増えていきます。このようなグラフは少しずつ変化する値を描く場合などには有効です。

これに対して、2倍、4倍、8倍…と倍々で変化する値を描く場合などはすぐに縦軸が大きな値になって描けなくなってしまいます。

そこで、縦軸だけ対数を使うと、縦の変化量を抑えることが出来ます。このような、片側を対数としたグラフのことを「片対数グラフ」といいます。(両方対数としたグラフは「両対数グラフ」)

素因数分解

素数とは、1とその数自身以外に正の約数がない、1より大きな自然数です。

100以下の素数は、2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 の25個です。

素因数分解とは、ある正の整数を十数の掛け算の形に分解することです。

例) 78 = 2 × 3 × 13

素因数分解にまつわる法則として、「2つの異なる素数p, q の積である、ある合成数Nが与えられた時、合成数N飲みから、元の素因数p, q を求めることは非常に困難」というものがあります。
この法則を利用し、安全性の根拠としている暗号化技術として、RSAという方式があります。

 

数値解析

この記事での学習内容 基本情報 応用情報

二分法、補間法、オイラー法など、近似解を数値的に求める考え方や計算過程で生じる誤差を理解する。

用語例: 数値積分、シンプソン法、ニュートン法、絶対誤差、相対誤差、丸め誤差、打切り誤差

数値解析とは、物理学、数学、工学などの科学分野の問題を、方程式を解くのではなく、数値計算を行なって解の近似値を求める手法のことです。

数値解析は、コンピュータを使った様々なシミュレーションなどに用いられています。数値計算、実用解析などとも呼ばれます。

二分法

二分法は、方程式の一つの実数の解を求める時に、解を含む区間を二分して中間点を求め、二分したどちら側に解が入るかを判定し、再度範囲を二分して判定する作業を、何度も何度も繰り返して、解の値を求めていく方法です。

方程式 f(x) = 0 の解を求める時に使用される代表的な数値解析方法の1つで、解のおおよその値を知っていることが前提です。

ニュートン法

ニュートン法は、グラフの形がなだらかに変化している場合に有効な方法です。

下図の様にグラフの形がなだらかな場合、ある値の接線とx軸の交点を取ると、もとの値より、グラフのx軸の交点に近づきます。
これを繰り返して、 f(x) = 0 の解を求める方法です。

補間法

補間法とは、グラフ上の複数の点を通る多項式の曲線で、xの値からyの値を計算することです。

補間法には何種類かの計算方法がありますが、代表的な方法として、ラグランジュ補間法やスプライン曲線などがあります。

ラグランジュ補間法

すべての点を通過する数式を求める方法。データの点数が増えると、曲線の振れ幅が大きくなってしまうという欠点がある。

スプライン曲線

ラグランジュ補間法の欠点を補うために、データを一定の区分で区切った上で、近似する曲線を予測していく方法。

誤差

数値解析で求めた解の値は、あくまでも近似値です。本島の海の値である「真値」との差があり、この差を「誤差」と呼びます。

数値解析の誤差には、絶対誤差、相対誤差、打切り誤差があります。

絶対誤差、相対誤差

真の値(真値)と測定値や近似値との差を誤差といい、この時
絶対誤差=測定値(近似値)- 真値
相対誤差=絶対誤差 ÷ 真値
となっています。

例えば、真値が1000mmで、測定値が998mmだった場合、
絶対誤差は、998 - 1000 = -2mm、
相対誤差は、 -2mm ÷ 1000mm = -0.02 = -2%
となります。

丸め誤差、打切り誤差

計算の結果を指定した桁数で収めるために、最下位の桁を切り捨て、切り上げ、四捨五入などをすることで生じる誤差を「丸め誤差」といいます。

また、計算を途中で打ち切ってしまう場合も真の値とは誤差が出ることになります。この途中で打ち切った時に出る誤差を「打切り誤差」といいます。打切り誤差の例としては、円周率の計算などがあります。

 

 

 

数式処理

この記事での学習内容 基本情報 応用情報

コンピュータを用いて、数式を記号的に代数処理する数式処理システムとそのアルゴリズムを理解する。

用語例: 因数分解、微分、積分

「数式処理」とは、数値の代わりに文字列を用いて計算式を記号的に処理することです。数値の代わりに用いる文字列を「代数」と呼びます。

具体的な例としては、計算式を分解して積の形に変換する「因数分解」、時間とともに変化する関数の増減を調べる「微分」、図形の面積や立体の体積などを微小な要素の集まりとして計算する「積分」などがあります。

コンピュータ内部でこのような処理を行うときには、数式処理を行います。

数式処理

コンピュータでは、代数を利用することで数式を記号的に処理することが出来ます。数値のみを扱う電卓とは異なり、コンピュータでは方程式をそのままコンピュータで扱うことが出来ます。

因数分解や、微分、積分の計算を行う際に、数式処理が行われっます。

因数分解

因数分解とは、下図や多項式・行列などといった計算式を分解し、因数(計算式)を積の形にすることです。

因数分解の公式
  1.  a2 ± 2ab + b2 =  ( a ± b )2
  2.  a2 – b2 = ( a + b )( a – b )
  3.  x2 + ( a + b )x + ab = ( x + a )( x + b )
  4.  acx2 + ( ad + bc )x + bd = ( ax + b )( cx + d )
  5.  a3 + b3 = ( a + b )( a2 – ab + b2 )
  6.  a3 – b3 = ( a – b )( a2 + ab + b2 )

微分

微分とは、時間の経過に伴って変化する関数の増減の度合いを求めることです。曲線のグラフでは、接線の傾きを求めることに相当します。

例えば、家から駅まで歩く場合を考えます。家から駅まで1時間かけて5キロの道のりを歩いた場合、時速5kmで歩いたことになります。
しかし、実際には常に時速5kmで歩いていたわけではなく、この時速5kmはあくまでも平均時速でしかありません。

このような場合に、実際の歩いた時間と移動距離をグラフに取り、とある時点での歩行速度を求めるような場合に、微分を用います。

なお、ニュートン法で接線の傾きを求める際にも微分が用いられています。

積分

積分とは、図形の面積や体積などを求める方法です。

長方形や三角形であれば公式を使えば面積を求めることが出来ますが、曲線のグラフの一部分のように、曲線で囲まれた部分の面積を求めるといった場合に、積分を用います。

例えば、先述の家から駅まで歩く場合をグラフにした時、横軸に時間、縦軸に速度を表したグラフの場合、積分を使うことで、一定時間に移動した距離を求めることが出来ます。

グラフ理論

この記事での学習内容 基本情報 応用情報

グラフ理論の基本的な概念とその応用を理解する。

用語例: 無向グラフ、有向グラフ、完全グラフ、重み付きグラフ

グラフ理論

点と点を結ぶ集合であるグラフの性質についての理論をグラフ理論といいます。(ここでいうグラフは、一般的な「グラフ」とは別物)

グラフとは、いくつかの接点(ノード)と呼ばれる点があり、それをある規則に基づいて結んだ線(枝:ブランチ)の集合です。
1つの接点(ノード)に付いている線(枝:ブランチ)の数を次数といいます。

現実世界の様々な要素を節点に置き換えて、その関係性を分析する際に使用されます。

鉄道の路線図などのように、節点同士の距離などに重点を置かず、節点同士のつながり方に重点が置かれます。
また、つながり方の向きを考えるグラフを「有向グラフ」、向きを考えないグラフを「無向グラフ」といいます。

グラフの次数

グラフの次数は以下のような特性を持っています。

  • すべての次数の合計は必ず偶数個になる。(ループしているノードは2本として数える)
  • 次数が奇数になるノードの数も必ず偶数個になる。

グラフアルゴリズム

グラフを探索するアルゴリズムで、探索の仕方によって幅優先順探索法と深さ優先順探索法があります。

幅優先順探索法

探索の優先順位を横方向にした探索法で、根から始め、左から右へ浅い方から探索します。

探索順は、節の数値が探索順となります。

深さ優先順探索法

探索の優先順位を縦方向にした探索方法です。探索の仕方によって、さらに3種類に別れます。

先行順

親→左の子→右の子の順で探索をします。

中間順

左部分木→親→右部分木の順で探索をします。

後行順

左部分木→右部分木→親の順で探索をします。

待ち行列理論

この記事での学習内容 ITパスポート 基本情報 応用情報

待ち行列理論の構成要素、考え方、M/M/1モデルにおける計算、乱数を利用したシミュレーションを理解する。

用語例: サービス時間、到着間隔、平均到着率、平均サービス率

待ち行列モデル

我々の生活の中では、銀行のATMや行政の窓口、商店のレジなど色々なところで行列が作られています。この待たされる行列のことを待ち行列と呼びます。この顧客がサービスを受けるために行列に並ぶ時の、待っている人の人数や待ち時間などを解析するための理論を待ち行列理論といいます。

この理論の中で、特に顧客とサービス窓口、待合室からなるシステムを「待ち行列モデル」として扱っています。

待ち行列モデルには種類がありますが、この種類を表す方法として、1953年にケンドール氏によって提案されたケンドール記号があります。ケンドール記号はA/B/Cという形式で表され、
A:到着時間の分布の種類
B:窓口を利用する時間(サービス時間)の分布
C:窓口の数
となります。

到着時間の分布の種類は、殆どの事象はランダムに到着するので、記号は M を使います。(マルコフ過程のM)

サービス時間の分布は、サービス時間が短い場合が多く、サービス時間が長い場合はそれほど多くないといった事象が一般的で、指数分布のグラフを取ります。

サービス時間の分布が指数分布に従っている場合は、記号はMと表します。

窓口の数は、ネットワークやCPUを待ち行列理論で扱う場合は、窓口が1つのモデルが良く使われます。

これに従って、銀行ATMや売店のレジなどの待ち行列モデルで、窓口が一つのモデルをケンドール記号で表すと、M/M/1となり、「M/M/1モデル」と呼ばれます。

M/M/1モデルでの計算

M/M/1モデルでの、平均待ち時間などを求めるための必要な計算式は下記のとおりです。

  • 平均到着率: λ (ラムダ)
    単位時間あたりに到着する顧客の数
  • 平均到着時間: ta (time arrival)
    ta = 1 / λ
  • 平均サービス率: μ (ミュー)
    単位時間に窓口が処理できる件数
  • 平均サービス時間: ts (time service )
    窓口における一人にかかるサービス時間
    ts = 1 / μ
  • 平均利用率: ρ (ロー)
    窓口をどれだけ利用しているかの割合で0~1の値。
    ρ = λ × ts または ρ = λ / μ
    ρが1以上になってしまう場合、到着時間よりも処理時間が長いことになり、待ち行列が延々と伸び、いつまでたってもサービスが受けられない状況を表します。
  • 平均待ち時間: tw (time wait)
    待ち行列に並んでからサービスが開始されるまでの時間
    tw = ρ / (1 – ρ) ×ts
  • 平均応答時間:T
    行列に並んでから、窓口でのサービスが完了するまでの時間
    T = tw + ts

例:とある行政の窓口で、1時間あたり10人の利用者があり、その窓口では1時間で15人の利用者に対応できる場合の平均待ち時間、平均応答時間を求める。

  1. 文章から、単位時間は1時間とし、λ = 10、μ=15となる。
  2. 平均サービス時間を求める。ts=1/μ なので、
    ts=1/15 (=4分)
  3. 平均利用率を求める。ρ = λ / μ なので、
    ρ = 10 / 15 = 2/3
  4. 平均待ち時間を求める。tw = ρ / (1 – ρ) ×ts なので、
    tw = (2/3) / (1 – 2/3) ×1/15 =(2/3) / (1/3) × 1/15 = 2 × 1/15 =2/15 となり、2/15時間=8分。
  5. 平均応答時間を求める。T = tw + ts なので、
    1 / 15 + 2 / 15 =3 / 15 となり、3/15時間=12分。

 

最適化問題

この記事での学習内容 基本情報 応用情報

最適化問題とは何か、線形計画法、PERT、最短経路問題などの考え方を理解する。

用語例: 動的計画法

最適化問題

制約のある中で、目的とする関数(目的関数)の解が最大(あるいは最小)となる値を求める問題を最適化問題といいます。

目的関数や制約関数によって幾つかの種類にわけられます。

線形計画法(LP法)

目的関数と制約関数が一次式(直線)で表現できる問題です。線形計画問題の中には、生産などで原材料の使用量などの制約のある中から、最大限の製品をいくつ作れるかを求める、線形計画法などがあります。

非線形計画法

目的関数あるいは制約関数が一次式でない場合の問題です。ニュートン法などの開放があります。

動的計画法

動的計画法は、問題全体を細かい部分問題に分割し、分割された問題の最適解を解いていくことによって、これらの結果を集めて全体の解を導く方法です。

例:最短経路問題。PERTのクリティカルパスを求めるのは動的計画法の一種。

情報に関する理論

 

情報処理技術者試験での学習内容

【基本情報・応用情報】
情報理論、符号理論の考え方、仕組みを習得し、応用する。
コードによる文字の表現を習得し、応用する。
述語論理、形式言語、オートマトンなど、情報に関する理論の考え方、仕組みを習得し、応用する。
正当性理論の考え方、仕組みを習得し、応用する。【応用情報】
AI(人工知能)の考え方、仕組みを習得し、応用する。
コンパイラ理論、プログラム言語論や意味論の考え方、仕組みを習得し、応用する。

【ITパスポート】
情報量の単位を理解する。
情報のデジタル化の基本的な考え方を理解する。

(1)情報理論 ITパスポート 基本情報 応用情報

情報量の概念、事象の生起確率と情報量との関係を理解する。

(2)符号理論 ITパスポート 基本情報  応用情報

アナログとデジタルの特徴、量子化、標本化、A/D変換などの符号化、符号化の目的、情報伝送における信頼性、効率性、安全性の向上などの効果を理解する。

用語例:通信路符号化、ハフマン符号、データ圧縮

(3)文字の表現 ITパスポート 基本情報 応用情報

代表的な文字コードを理解する。

用語例: ASCIIコード、EUC(Extended UNIX Code)、JISコード、シフトJISコード、Unicode、UCS

(4)述語論理 基本情報  応用情報

述語論理の考え方、演繹推論と帰納推論の違いを理解する。

用語例: 関係データベース

(5)形式言語 基本情報  応用情報

形式言語とは何か、言語の定義、演算、種類、文法を理解する。また、BNF、構文図式などの表記法、正規表現、文脈自由文法を理解する。

用語例: 逆ポーランド表記法

(6)オートマトン 基本情報  応用情報

有限オートマトンの概念、形式言語との関係、チューリング機械との関係、状態遷移表、状態遷移図を理解する。

用語例:プッシュダウンオートマトン

(7)正当性理論 応用情報

プログラムの正当性理論とは何か、部分正当性、全正当性の基本的な考え方、仕組みを理解する。

用語例: 停止問題

(8)計算量 基本情報  応用情報

計算量の理論の考え方を理解する。

用語例:時間計算量、領域計算量、オーダ記号、P(Polynomial)問題、NP(Non-deterministic Polynomial)問題、NP完全問題

(9)AI(Artificial Intelligence:人工知能) 基本情報  応用情報

人工知能の基本的な考え方、仕組みを理解する。

用語例:知識工学、学習理論、機械学習、ニューラルネットワーク、ディープラーニング(深層学習)、エキスパートシステム、解析型問題、合成型問題、知識ベース、推論エンジン

(10)コンパイラ理論 基本情報  応用情報

コンパイラの役割、コンパイルの過程、字句解析、構文解析、最適化の基本的な考え方、仕組みを理解する。

用語例:文脈自由文法、意味解析、コード生成、中間言語、目的プログラム、形式言語、オートマトン

(11)プログラム言語論・意味論 基本情報  応用情報

プログラム言語は、処理対象を表現するために構文と意味があること、各言語で構文と意味がどのように定義されるか、データ構造とアルゴリズムがどのように表現されるか、構造化と抽象化がどのように定義されるかなど、基本的な考え方、仕組みを理解する。

用語例:手続型言語、関数型言語、論理型言語、オブジェクト指向言語

 

情報理論

この記事での学習内容 ITパスポート 基本情報 応用情報

情報量の概念、事象の生起確率と情報量との関係を理解する。

情報理論

情報理論とは、ある事象における確率や統計を元に、情報の量を数学的に定義する理論です。

  • 生起確率: ある事象 E が起こる確率。 P(E)
  • 情報量:  事象が起こる確率を P(E) とする時、事象が起こったことを知らされた時に得られる(選択できる)情報の量。

情報量は以下の式で求める。

例)英数字8文字からなるパスワードを1パターン知らされた時に得られる情報量

まずは、生起確率から考える。
英数字は英小文字26文字+英大文字26文字+英数字10文字からなるので、62文字。
パスワード1文字の場合、とある1パターンの確率は 1 / 62 なので、今回の8文字の場合、P= 1 / 628 となる。

よって、公式に当てはめて情報量を求める。

データの単位

コンピュータで扱えるデータ量の最小単位は、2進数の1桁分に当たる、1ビットです。また、8ビットをまとめて1バイトと換算します。通常、データ量はバイトを単位として表します。

更に大きい単位や小さい単位をわかりやすく表記するために、「メガ」や「ミリ」などの補助単位を組み合わせることがあります。

アナログとデジタル

アナログとは、時間の変化に伴って連続的に変化するデータのことです。「連続的」というのは、ある時点の値と別の時点の値の間に異なる値が無限に連続しているような状態です。

対して、デジタルとは、連続して変化する値を離散数(飛び飛びの値)として扱うデータです。離散数として扱うというのは、特定の時点の値を一定の有効桁数の値に当てはめて扱うということです。結果、値は飛び飛びになり、「ある時点とある時点の間」と言うのは存在しなくなります。また、有効桁数で表現できる範囲外の値も存在しません。例えば、有効桁数を小数第一位とした場合、1.5 や -9.9 という値は存在しますが、0.05 と言った値は存在しません。

アナログデータの特徴として、図(グラフ)で表すと波状となります。気温の変化や音の波、光の波などもアナログデータです。
対して、デジタルデータを図(グラフ)で表すと棒グラフ状になります。

A/D変換

コンピュータ内部ではデータは0か1の2進数で表すため、アナログデータをそのまま扱うことは出来ません。そのため、アナログデータは2進数で表すことの出来るデジタルデータに変換して扱います。

このアナログ→デジタルの変換のことを「A/D変換」と言います。A/D変換は以下のような流れで進められます。

  1.  標本化(サンプリング)
    アナログデータから、ある一定間隔ごとに区切って値を抜き出します。このプロセスを「標本化」といいます。
    この段階で、できるだけ細かく区切ることで元のアナログデータに近くなります。
  2.  量子化
    標本化で抜き出した値は、元がアナログデータなので、小数点以下の細かい数値があるため、これをもっとも近い整数値にします。このプロセスを「量子化」といいます。
  3.  符号化(数値を抜き出す)
    区切って量子化した数値を抜き出して、2進数の値とします。このプロセスを「符号化」といいます。

D/A変換

デジタル化したデータは必要に応じて、再度アナログデータに戻す必要があります。(音声データをスピーカーなどで流すなど)

その際の手順をD/A変換といいます。

デジタル→アナログへの変換手順は、A/D変換のサイト逆の手順で行います。

符号理論

この記事での学習内容 ITパスポート 基本情報 応用情報

アナログとデジタルの特徴、量子化、標本化、A/D変換などの符号化、符号化の目的、情報伝送における信頼性、効率性、安全性の向上などの効果を理解する。

用語例:通信路符号化、ハフマン符号、データ圧縮

符号化理論

符号化とは、データを数値に変換し、情報量として表現することで、コード化ともいいます。

符号化理論とは、情報を符号化し、伝送を行う場合の正確性や高速性に関する理論です。

符号化理論には大きく分けて下記の2つがあります。

  • 情報源符号化
  • 通信路符号化

情報源符号化

元のデータに適した形で符号化を行う方法です。

特性として、圧縮率を高めるほど、データサイズは小さくなりますが、負荷が大きくなります。逆に、圧縮率を低くすれば、データサイズは大きくなりますが、負荷は小さくなります。

通信路符号化

符号化されたデータを伝送する際に、伝送路の帯域や雑音、妨害などによって、正しく届かない可能性もあります。
そこで、既に符号化されたデータに冗長なデータを付け加えて再度符号化します。これを通信路符号化と言います。

例えば、データの信頼性を高めるための誤り検出や誤り訂正機能を付け加えます。

ハフマン符号化

データを圧縮する方法の1つで、出現頻度の高いデータには短いビット列を、頻度の低いデータには長いビット列を割り当てて、全体としてデータの圧縮を行う方法です。

例えば、元データが以下の34バイト(1文字1バイト)からなる文字列だったとします。これをハフマン符号化を用いて圧縮してみます。

元データ:AAJABBDBDBFAAAABAABABAFADAAJLAFBAD

・出現する文字は、A, B, D, F, J, L の6文字なので、この6文字に出現頻度に合わせて各文字にハフマン符号を割り当てます。

各文字の登場頻度ハフマン符号データ長
A:16回01ビット
B:8回102ビット
D:4回1103ビット
F:3回11104ビット
J:2回111105ビット
L:1回1111106ビット

表のように出現頻度の高い文字に少ないビットを割り当てるため、ビット列の容量を減らすことが出来ます。
表のハフマン記号に基づいて元データを変換すると、以下のようなビットの並びになります。(便宜上、元の文字の区切りにスペースを入れていますが、実際には空白はありません)

0 0 11110 0 10 10 110 10 110 10 1110 0 0 0 0 10 0 0 10 0 10 0 1110 0 110 0 0 11110 111110 0 1110 10 0 110 

上記のビットの並びで、72ビットになります。元データの34バイトは272ビットになりますので、おおよそ4分の1のデータ量に圧縮できたことになります。

このように元のデータ量を縮小することを「データ圧縮」と呼びます。
その手法には大きく分けると2種類あり、圧縮後のデータから元データが復元できる「可逆圧縮」と、復元不可能な「不可逆圧縮」があります。

 

文字の表現

この記事での学習内容 ITパスポート 基本情報 応用情報

代表的な文字コードを理解する。

用語例: ASCIIコード、EUC(Extended UNIX Code)、JISコード、シフトJISコード、Unicode、UCS

文字コード

アルファベットやかな、漢字といった文字データを扱うために、コンピュータ内部ではそれぞれの文字に、0と1からなるコード番号を割り当てています。これを文字コードといいます。

文字コードには多くの体系があり、体系によって扱える文字種やコードの長さ(ビット数)が異なります。

ASCIIANSI(アメリカ規格協会)が定めた7ビットコード。
英字と数字、記号のみに対応し漢字やかなの規定はない。
Unicode全世界の文字に統一的に対応するための国際規格の標準コード。2~4バイトコード。
文字コードセットとしてUCSが、エンコード方式としてUTFがそれぞれ定められている。
EUCExtended Unix Code(拡張UNIXコード)の略。UNIX上で2バイト文字の漢字・かなを表現できる。
JISコードJIS(日本工業規格)が定めたコード。英数字と半角カナに対応する7又は8ビットのコード体系と、漢字などに対応する2バイト体系がある。
シフトJISJISコードをシフトさせて、ASCIIコードと混在できるようにしたもの。さらに機種ごとの特殊記号などの拡張コードが加えられている。
EBCDICIBMなどの汎用機で用いられているコード。英数字用の文字コード。

日本語の文字コード

ASCIIなどの文字コードでは、基本的に1バイトで1文字を表しますが、1バイトでは最大でも256文字までしか規定することが出来ません。日本語の場合、ひらがな、カタカナ、漢字と種類が多く、特に漢字は「常用漢字」だけでも2,000字近くあり、1バイトで規定することが出来ません。

そこで、1文字2バイトとすることで、表現できる文字数を増やして対応しているのが日本語用の文字コードです。

日本語用の文字コードとしてはUnicode、JISコード、シフトJIS、EUCの4種類が広く用いられています。

文字化け

データを表示した時に、本来の文字列とは異なるでたらめな文字や記号が表示されてしまう現象を「文字化け」といいます。

これは、間違った文字コードが使用された時に起こる現象で、他のシステムからデータを移行・転送した場合にしばしば起こります。また、本来の文字コード体系に含まれていない、ユーザー登録した外字や機種依存文字を含む場合にも発生することがあります。

文字化けを防ぐには、事前に双方で使用している文字コードを確認する必要があります。

述語論理

この記事での学習内容 基本情報 応用情報

述語論理の考え方、演繹推論と帰納推論の違いを理解する。

用語例: 関係データベース

述語論理

述語論理とは、命題の内部の構造を主語と述語の二つの構成要素に分解し、その中の術後部分を扱う理論です。

命題

文章や式で表された事象について、それが真であるか偽であるかが明確に決まるもの。

命題論理

審議の解っている既存の命題をつなげて新しい命題を作ったり、命題を否定したりすること。

推論

ある命題から別の命題を導くこと。
元の命題を「前提」または「過程」といい、導かれた命題のことを結論といいます。
述語論理における推論には、「演繹推論」と「帰納推論」の二種類があります。

演繹推論

複数の前提条件から結論を導く推論方法。代表的なものに、一般的な大前提と個別の小前提から結論を導く三段論法があります。

三段論法の例
大前提:「塩水は塩辛い」
小前提:「海の水は塩水である」
結論 :「海の水は塩辛い」

帰納推論

与えられた事例から一般的法則を導き出す推論方法で、予測や仮説を導くのにも使う推論方法です。

例「海の水は塩辛い」
事例:沖縄の海の水は塩辛い
   三陸沖の海の水は塩辛い
   ハワイの海の水は塩辛い
推論:海の水は塩辛い

 

述語論理や命題、推論といったキーワードは『論理学』の中で用いられる用語です。論理学とは、論理を成り立たせる論証の後世やその体型を研究する学問です。
ここでいう論理とは、思考の法則、思考のつながり、推理の仕方や論証のつながり方のことを言います。

よく言われる『論理的に話す、書く』ということの意味は、つながりを明確に、論証を的確に話し、書く、ということです。

形式言語

この記事での学習内容 基本情報 応用情報

形式言語とは何か、言語の定義、演算、種類、文法を理解する。また、BNF、構文図式などの表記法、正規表現、文脈自由文法を理解する。

用語例: 逆ポーランド表記法

自然言語と形式言語

日本語や英語などの言語は人間が暮らしていく中で自然に発生したため、必ずしも厳密な文法に従っているとは限りません。こういった言語を自然言語といいます。

それに対し、特定の目的のために作られ、厳格な文法に則った言語を形式言語といいます。
コンピュータに指示を与えるためには、プログラミング言語と呼ばれる言語を用いたプログラムを作成します。
このプログラミング言語も形式言語の一つです。

文脈自由文法

言語に関するルールを定めたものが『文法』で、制限の強さの異なる4つの分類があります。ここでいう文法は文の形式を定めるだけで意味についての解釈は行いません。

  • 句構造文法
  • 文脈依存文法
  • 文脈自由文法
  • 正規文法

句構造文法が制限が最も弱く、正規文法が最も制限が強い文法です。形式言語では、文脈自由文法が用いられます。

文脈自由文法は、プログラミング言語を正確に記述するための厳密な形式を定めることが出来る文法です。

例えば、文脈自由文法で『直角とは90度である』と定義する場合、定義が必要なもの(この場合は「直角」)を「非終端記号」といい、それ以上他のものに置き換えることが出来ずに定義が必要でないもの(この場合は「90度」)を「終端記号」といいます。

BNF記法(バッカス・ナウア記法)

BNF(Backus-Naur Form)は、文脈自由文法の文法自体を定義するための記法で、一般的には、バッカス・ナウア記法と呼びます。
プログラミング言語 algol60の文法定義に初めて用いられた記法です。

記号意味
<変数名><非終端記号>(=メタ変数名)
::=左辺が右辺に分解できることを表す。(○○とは▲▲であるの部分を表す)
「または」を表す

メタ変数名

非終端記号のことを「メタ変数名」と呼ぶこともあります。「メタ」というキーワードは情報処理の分野ではよくつかわれるキーワードで、「メタ情報」「メタデータ」という使われ方をします。意味としては、「情報のための情報」「そのデータが持つ、データ自身についての抽象度の高い付加的データ」という意味でつかわれます。

現在では、ヴィルド博士がBNFを拡張して作成したEBNF(拡張バッカス・ナウア記法)も一般的です。
BNFとEBNFの相違は、EBNFでは繰り返し部分を中かっこで囲んだり、終端記号をダブルクォーテーションやシングルクォーテーションで囲んだり、といった違いがあります。

例:

  • <a> ::= <b>  aはbである。
  • <a> ::= 1|2  aは1または2である。

例2(数値の表現をBNF記法で表した例)

  • <数値>::= <数字列>|<符号><数字列>|<数字列>.<数字列>
  • <数字列>::=<数字>|<数字列><数字>
  • <数字>::=0|1|2|3|4|5|6|7|8|9
  • <符号>::= +|-

この例の<数字列>の定義のように、自身の定義の中で自らを定義するような書き方が、情報処理の分野ではよく用いられます。このような定義の仕方を「再帰(的)」と呼びます。

構文図式

構文図式は、BNFで定義した文法の構造、「構文」を視覚的に表現する方法の一つです。

以下に、BNFのと構文図式の例を示します。

<算術式>のBNF表記

  • <算術式>::=<項>|<加減演算子><項>
  • <加減演算子>::= +|-

なお、点線で囲っている部分は0回以上の繰り返しを表します。

正規表現

正規表現とは、いくつかの文字をパターン化して一つの形式で表現する表記法です。BNFを記述するときにも使われます。

正規表現を用いることで、個別の文字列を指定しなくても、また表記にゆれがあっても検索することが可能です。

例えば、以下のようなケースで正規表現を用いて、文字列を検索します。

  • 数値のみで構成されている任意の文字列を検索したい
  • 「ユーザ」と「ユーザー」といった、調音の有無を無視して検索したい

例)メールアドレスの表記ルールを正規表現で表す

正規表現: [\w\d_-]+@[\w\d_-]+\.[\w\d\._-]+

正規表現で用いられる記号の例

  • \w 半角英字(a~z、A~Z)
  • \d 半角数字(0~9)
  • \. 半角ピリオド
  • _ 半角アンダースコア
  • - 半角ハイフン
  • [\w\d_-] []内のいずれか1文字
  • + 直前の正規表現の1回以上の繰り返し
  • . 任意の1文字
  • * 直前の正規表現の0回以上の繰り返し

逆ポーランド記法

演算方法の表記法の一つに「逆ポーランド記法(Reverse Polish Notation : RPN)」があります。
数式を記述する際、演算子を演算対象の後ろに置く方法です。

逆ポーランド記法はコンピュータと相性の良い数式の書き方です。なぜなら、コンピュータは人間と違って与えられた情報を俯瞰的に眺めることは苦手であり、基本的には「右から来た情報を左に受け流す」というのがコンピュータの情報の扱い方なので、逆ポーランド記法のように、情報を流れてきた順序に沿って処理できる方法と相性が良いからです。
また、コンピュータが持つ「スタック」というデータの管理機構で数式を処理しやすい、という面もあります。

スタックは「積み重ねる」という意味で、最後に入れたものを最初に取り出すデータ構造です。

実際に、逆ポーランド記法で書かれた、「135×82÷++」という計算式を、スタックを用いて計算してみましょう。
基本的な動作は、以下の2つです。

  • 数値が来たら、スタックに投入する。
  • + や – などの演算子が来たら、スタックから数値を2個取り出して計算し、その結果をスタックに投入する。

 

正当性理論

この記事での学習内容 応用情報

プログラムの正当性理論とは何か、部分正当性、全正当性の基本的な考え方、仕組みを理解する。

用語例: 停止問題

 

プログラムの正当性

プログラム開発においては、不具合(=バグ)の発生はなかなか避けられないものです。このバグの除去のために作成するプログラムに対して、テストや検証を行いますが、「検証」を行うことで、プログラムの正当性を証明することができます。

ここでいう「プログラムの正当性」とは、「入力条件を満たしたプログラムを実行すると、そのプログラムは確実に停止するとともに出力条件を満たした結果が得られる」ということを指します。完全正当性とも言います。

部分正当性

正当性のうち、「入力条件を満たしたプログラムを実行すると、そのプログラムは出力条件を満たした結果が得られる」ことを部分正当性といいます。

停止性

正当性のうち、「そのプログラムは確実に停止する」ことを停止性といいます。

プログラムの検証において、停止性を証明するためには、特にプログラム内の繰り返し(ループ)部分に着目します。繰り返しの条件が不適切な場合、プログラムが永久に終了しない(=無限ループ)状態となってしまい、停止性を満たすことができません。

停止性問題

計算可能性理論において停止(性)問題(ていしせいもんだい・ていしもんだい、halting problem)は、あるチューリング機械(≒コンピュータプログラムアルゴリズム)が、そのテープのある初期状態(≒入力)に対し、有限時間で停止するか、という問題。アラン・チューリングが1936年、停止性問題を解くチューリング機械が存在しない事をある種の対角線論法のようにして証明した。すなわち、そのようなチューリング機械の存在を仮定すると「自身が停止すると判定したならば無限ループを行い、停止しないと判定したならば停止する」ような別のチューリング機械が構成でき、矛盾となる。

Wikipediaから引用

 

オートマトン

この記事での学習内容 基本情報 応用情報

有限オートマトンの概念、形式言語との関係、チューリング機械との関係、状態遷移表、状態遷移図を理解する。

用語例:プッシュダウンオートマトン

オートマトン

プログラミング言語などの形式言語で記述された分を解釈するための仮想的な機械概念をオートマトンといいます。
コンピュータそのものを数学的な観点からモデル化し、アルゴリズム(=問題解決のための処理手順)を定型化したものです。

元々は「自動人形」を意味している言葉で、現代のコンピュータ技術の基礎原理の一つとして、様々な場面で応用されています。

オートマトンのモデルでは、コンピュータを外部からの入力に応じて内部の状態が変化し外部に出力を行うものとして扱います。

なお、オートマトンとコラム「コンピュータの歴史」で紹介した「チューリング機械」というのは非常に似たものとなっていて、オートマトンの定義を拡張したものがチューリング機械となっています。

チューリング機械は無限の記憶領域を持つとされているが、0と1という記号の並びを入力として、順次処理を行い、後戻りしない、という共通点があります。

有限オートマトン

オートマトンの中で有限個の状態を扱うものを、特に「有限オートマトン」と呼びます。有限オートマトンでは、開始時点の状態(=初期状態)が決まっています。そして、入力によって他の状態へ変化(=遷移)します。最後に成功して終了する状態(=受容状態)のどれかに遷移すれば終了とします。

以下に有限オートマトンの特徴をまとめました。

  • 一つの初期状態を取る。
  • 有限な記憶領域を持つ。
  • 記号列を入力とし、一度に1つずつ読み込む。
  • 後戻りしない。
  • 入力に応じて、他の状態の遷移する。
  • 特定の状態のどれかで終わっていれば成功。受容状態となる。

例えば、「ノートパソコンの電源投入状態」を有限オートマトンで考えてみましょう。
このノートパソコンは、閉じると休止状態となり、開くと休止状態から復帰するものとします。

  • 初期状態は、電源が入っていない「停止」状態です。
  • 「電源スイッチON」という入力によって、状態は「動作」に遷移します。
  • 「動作」状態でパソコンを閉じると「休止」に遷移します。
  • 「休止」状態でパソコンを開くと「動作」に遷移します。
  • 「シャットダウン」という入力によって、「停止」に遷移し、終了します。

他に身近な例では、有限オートマトンの考え方で表現できるものとしては、「自動販売機」があります。

状態遷移表と状態遷移図

オートマトンの状態を表すものには、「状態遷移表」と「状態遷移図」があります。

どの状態の時に、どの入力があると、どの状態に変化(遷移)するのかを示す規則を、表にしたものが状態遷移表、図にしたものが状態遷移図です。

先述のノートパソコンの例を元に、状態遷移表と状態遷移図を確認してみましょう。

まずは、状態遷移表を示します。

縦が遷移前の状態、横が入力、表の中は遷移後の状態を表しています。なお、標柱の横棒は遷移がないことを示します。

次に状態遷移図を見てみましょう。

状態を楕円形で、入力を矢印によって、状態の遷移を視覚的に分かりやすいように表現しています。

プッシュダウンオートマトン

有限オートマトンの「状態」と「入力」に加えて、無限の容量の「スタック」を持っているのが、プッシュダウンオートマトンと呼ばれるものです。

スタックを持つことに加え、以下の点で有限オートマトンとは異なっています。

  • スタックのトップ(=最上位の要素)でなすべき状態遷移を判断する。
  • 遷移実行の一部として、スタック操作を行うことが出来る。

 

計算量

この記事での学習内容 基本情報 応用情報

計算量の理論の考え方を理解する。

用語例:時間計算量、領域計算量、オーダ記号、P(Polynomial)問題、NP(Non-deterministic Polynomial)問題、NP完全問題

計算量

ある問題を解く場合に、問題を解く手順(=アルゴリズム)は複数存在します。例えば、以下のような単純な掛け算を取ってみても、複数の計算方法があります。
例)3×1977

  • 3を1977回足す
  • 1977を3回足す

この例の場合、明らかに1977を3回足すほうが計算の回数が少なく、優れた解法といえます。

この例のように、問題を解くためのアルゴリズムは一つとは限らず、いくつかあるアルゴリズムから最良のものを選ぶためには、アルゴリズムを定量的に評価する指標が必要となります。この指標が「計算量」と言われるものです。
アルゴリズムに基づいて処理するデータ量によって、プログラムの実行時間がどのように変化するかを表し、アルゴリズムの複雑さをはかることが出来ます。
時間計算量はあるアルゴリズム手順(=処理手順)の数と繰り返し回数の最大数で表すことが出来ます。

解く問題の種類によっては、計算量が一定でない場合があります。例えば検索処理です。

検索処理では場合によっては、処理開始直後に見つけられることもあれば、最後の最後で見つかることもあります。このような一定でない計算量を表現するために、最大計算量と平均計算量という考え方もあります。それぞれ、計算量の最大値と平均値を示すものです。
計算量の代表値としては、平均計算量のほうが適切ですが、平均計算量は算出が難しい場合があり、最大計算量で評価することも多くあります。

時間計算量の他に、「領域計算量」も評価指標として使うことがあります。この場合は使用するメモリの容量を指標とし、より使用メモリの少ないアルゴリズムを良いアルゴリズムとしてみなすものです。
但し、現在はメモリが大容量化、かつ低価格化しているので、時間計算量がより優先される傾向にあります。

オーダ記法

良いアルゴリズムを考える場合に、「実行速度が早い」という点は大変重要ですが、実際の速度というのはコンピュータの性能によって異なってきます。
そこで、実行にかかる時間の目安を「時間計算量」として計算して評価します。その際に時間計算量は「O(オーダ)」という記号を使って表します。この表記法を「オーダ記法」といいます。

AI(Artificial Intelligence:人工知能)

この記事での学習内容 基本情報 応用情報

人工知能の基本的な考え方、仕組みを理解する。

用語例:知識工学、学習理論、機械学習、ニューラルネットワーク、ディープラーニング(深層学習)、エキスパートシステム、解析型問題、合成型問題、知識ベース、推論エンジン

人工知能

人間の知的活動をコンピュータに行わせるための技術を「人工知能」と呼びます。英語表記の「Artificial Intelligence」を略してAI(エーアイ)とも呼ばれます。

人工知能は基盤となる技術によって、三種類に分類されます。

知識ベース型

「知識ベース」とは、専門家の知識や経験をデータベース化したものです。知識ベース型人工知能は、この知識ベースを活用して問題の解決方法を見つけ出すものです。

代表的な知識ベース型人工知能には、エキスパートシステムがあります。

エキスパートシステムとは、知識ベースとあわせて、推論エンジンを使います。推論エンジンは状況に合わせて推論を行なっていく機能を持つもので、知識ベースと推論エンジンを組み合わせることでエキスパート(=人間の専門家)と同じような応答をするものです。

ファジィ型

「ファジィ」とは「ぼやけた」という意味です。ファジィ型人口では、真と偽の教会が「ぼやけた」もの、つまり曖昧な値を扱います。
例えば「安全」か「危険」かという二者択一だけではなく、「やや危険」といった中間的な状況も扱い、最適な答えを導き出していきます。

「安全」や「危険」であれば、安全度もしくは危険度と言うかたちで数値化することができれば、人工知能を用いなくても答えを導くことが出来ますが、ファジィ型人工知能を使うことで負荷の大きな数値計算をすることなく、効率的に判断を行うことが出来ます。

学習型

学習型人工知能とは、入力されたデータに応じて、答えを導く論理構造を変化させていくものです。

代表的な学習型人工知能にはニューロコンピュータシステムがあります。
ニューロコンピュータコンピュータシステムは、人間の脳の構造をモデル化した、ニューロネットワークモデルに基づくものです。

身近な例としては、迷惑メールフィルタなどに用いられている「機械学習」や、囲碁や将棋のソフトなどで注目を浴びた「ディープラーニング」などが上げられる。

 

コンパイラ理論

この記事での学習内容 基本情報 応用情報

コンパイラの役割、コンパイルの過程、字句解析、構文解析、最適化の基本的な考え方、仕組みを理解する。

用語例:文脈自由文法、意味解析、コード生成、中間言語、目的プログラム、形式言語、オートマトン

言語プロセッサ

コンピュータが直接実行できるプログラムは「機械語」のプログラムです。
機械語のプログラムは、人間がみると単なる数値(2進数)の並びで、人間が作成したり呼んだりするのには不向きです。

そのため、人間がプログラムを扱いやすくするために、プログラミング言語が存在します。プログラミング言語で書かれたプログラムのことを「ソースコード」あるいは「原始プログラム」と呼びます。

「ソースコード」はそのままではコンピュータ上で実行することは出来ません。実行可能な機械語のプログラムに変換することが必要になります。この変換処理を行うのが「言語プロセッサ」と呼ばれるものです。

言語プロセッサにはいくつかの種類があります。

  • アセンブラ: 機械語と1対1に対応したアセンブラ言語を機械語に変換するプログラム
  • コンパイラ: ソースコードを一括して機械語に変換するプログラム
  • インタプリタ: ソースコードを機械語に変換しながら実行するプログラム
  • ジェネレータ: 必要な条件をパラメータで支持することで、目的に応じたプログラムを自動生成するプログラム

コンパイラ理論

コンパイラで実行可能なプログラムを生成する場合、直接実行可能なプログラムを生成するわけではありません。これは、大規模なプログラムになると、一つのプログラムのソースコードを複数に分けて扱う必要が出てくるからです。

実行可能なプログラムを生成する第一段階は、ソースコードを変換して「オブジェクトコード」または「目的プログラム」を生成することです。
この「オブジェクトコード」はソースコード単位で作られます。

第二段階として、オブジェクトコードをつなげて実行可能なプログラムを生成します。
この段階では、ライブラリと呼ばれるオブジェクトコードの集合体が使われることもあります。
ライブラリは多くのプログラムで使われるであろう、ファイル入出力などの機能をあらかじめオブジェクトコードとして用意しておいたものです。

なお、第二段階で使われるプログラムのことを「リンカ」または「リンケージエディタ」とも呼びます。

コンパイラの処理手順

コンパイラがソースコードからオブジェクトコードを生成する時、いくつかの段階を経て処理が行われます。

典型的な流れは、字句解析→構文解析→意味解析→最適化→コード生成、となっています。

  1. 字句解析: ソースコードを最小の単位の語句(トークン)に分解
  2. 構文解析: トークンの並びを、定められた文法に従って解析
  3. 意味解析: トークンの意味を考慮した解析
  4. 最適化&コード生成: プログラムの高速化、サイズの縮小

 

プログラム言語論・意味論

この記事での学習内容 基本情報 応用情報

プログラム言語は、処理対象を表現するために構文と意味があること、各言語で構文と意味がどのように定義されるか、データ構造とアルゴリズムがどのように表現されるか、構造化と抽象化がどのように定義されるかなど、基本的な考え方、仕組みを理解する。

用語例:手続型言語、関数型言語、論理型言語、オブジェクト指向言語

プログラミング言語の種類

プログラミング言語には多くの種類があり、処理の手順などによって分類することが出来ます。

代表的なプログラミング言語の分類

言語の種類概要代表的な言語
低水準言語機械語コンピュータが直接実行できる言語
アセンブラ言語機械語と1対1に対応した命令語からなる言語CASLⅡ
高水準言語手続型言語処理内容を記述した命令を、順を追って実行する言語FORTRAN
COBOL
C言語
BASIC
非手続型言語関数型言語関数と呼ばれる式を組合せた後世の言語LISP
論理型言語論理式で記述していく言語Prolog
オブジェクト指向言語すべての事象をオブジェクト(モノ)として扱う言語Java
C++
Objective-C

 

通信に関する理論

情報処理技術者試験での学習内容

【基本情報・応用情報】
情報を伝送するための技術について、代表的な方式の考え方、仕組みを習得し、応用する。

(1)伝送路 基本情報 応用情報

伝送路上でデータがどのように伝送されるか、伝送路の考え方、仕組みを理解する。

用語例:単方向、半二重、全二重、2線、4線、直列、並列

(2)変復調方式 基本情報  応用情報

デジタルデータをアナログ伝送路を介して送るために必要な仕組みである変調、それを受信側で元に戻す処理である復調の代表的な方式の考え方、仕組みを理解する。

用語例:AM(Amplitude Modulation:振幅変調)、FM(Frequency Modulation:周波数変調)、PM(Phase Modulation:位相変調)、PCM(Pulse Code Modulation:パルス符号変調)、QAM(Quadrature Amplitude Modulation:直交振幅変調)PWM(Pulse Width Modulation:パルス幅変調)、モデム

(3)多重化方式 基本情報 応用情報

一つの伝送路を複数の通信で同時に使用する多重化について、代表的な方式の考え方、仕組みを理解する。

用語例: FDM(Frequency Division Multiplexing:周波数分割多重)、TDM(Time Division Multiplexing:時分割多重)、CDM(Code Division Multiplexing:符号分割多重)、WDM(Wavelength Division Multiplexing:波長分割多重)

(4)誤り検出・訂正 基本情報  応用情報

偶数パリティ、奇数パリティなど、信頼性を高める技術の考え方、仕組みを理解する。

用語例: CRC、ハミング符号、パリティチェック、ECC、チェックサム

(5)信号同期方式 基本情報  応用情報

送信側と受信側で送受信のタイミングを合わせる信号同期制御について、代表的な方式の考え方、仕組みを理解する。

用語例: ビット同期、キャラクタ同期、フラグ同期、調歩同期、スタートビット、ストップビット、SYN同期、フレーム同期

(6)暗号化 応用情報

暗号化に関連する技術の考え方、仕組みを理解する。

用語例:符号理論、公開鍵、秘密鍵、PKI(Public Key Infrastructure:公開鍵基盤)

(7)データ圧縮 応用情報

データ圧縮に関連する技術の考え方、仕組みを理解する。

用語例: 符号理論、ランレングス、ハフマン符号

 

伝送路と通信方式

この記事での学習内容 基本情報 応用情報

伝送路上でデータがどのように伝送されるか、伝送路の考え方、仕組みを理解する。

用語例:単方向、半二重、全二重、2線、4線、直列、並列

伝送と伝送路

  • 伝送:機器の間でデータをやり取りすること
  • 伝送路:データをやり取りするための経路

搬送波

何らかの情報を載せて、有線・無線・波動(光や音波)で送るための信号のこと。キャリア、キャリア波ともいいます。

直流方式と交流方式

デジタルデータを伝送する方式には、直流方式と交流伝送方式があります。  

  • 直流方式:デジタル信号に対応した直流信号をそのまま伝送する方式。ベースバンド方式。
  • 交流方式:アナログ伝送路にデジタルデータをアナログ信号に変換して伝送する方式。帯域伝送方式。

シリアル伝送とパラレル伝送

シリアルの場合は、1本の線で1ビットずつ順番に信号を送ります。

パラレルの場合は、複数の線で複数のビットを同時に送ります。

デジタル信号の送り方

伝送は信号の方向による分類の他に、信号の数による分類もあります。(前述のシリアル伝送とパラレル伝送)

伝送性能は、一般的には同時に複数の信号を送れる並列方式が優れているとされてきましたが、伝送路が長かったり信号の周波数が高くなったりすると、複数の信号のタイミングを合わせることが難しくなります。そのため、長距離の通信や高周波数での伝送には、シリアル伝送方式が使われることが多くなっています。

とくに、近年はシリアル伝送方式の性能向上が著しいため、制御の容易なシリアル伝送方式が用いられることが多くなっています。(USBが代表的)

単方向通信と双方向通信

伝送における信号が流れる方向は、単方向通信と双方向通信に分けられます。

単方向通信は、一方向にしか信号が流れない通信で、例えばGPSを使った自動車とGPS衛星の間は単方向の通信となっており、この場合、自動車から衛星へは、電波は送られません。

このため、単方向通信では、送信元は、データが相手に届いたことを確認したり、データの破損を検出することが出来ません。その為、コンピュータ間の通信では、ほとんど使われていません。

これに対して双方向通信は、相互に信号をやり取りできる通信であり、単方向通信とは異なり送信元は、送信先からデータが届いたり、データの破損があった場合などに、送信先からの通知を受け取ることが可能になっています。

双方向通信の際の通信の方法

双方向通信には、伝送路の使い方の違いから、半二重通信と全二重通信に分けられます。

半二重通信は一本の伝送路で、単方向のみへの通信が可能な方式です。データを二者間でやり取りする場合、データの送信・受信を同時に行うことは出来ません。

全二重通信は同時に双方向の通信が可能な方式で、データの送信・受信を同時に行うことが出来ます。半二重・全二重の違いがわかり易い例として、鉄道の単線と複線の違いがあります。

鉄道の単線では、駅などで対向列車を待ち、双方向で線路を使う時間帯を分けることで双方向の行き来を可能にしています。

但し、伝送路の場合は、鉄道の線路とは異なり、時間をずらす以外にも1本の伝送路を使い分ける方法があります。

時間で分ける方式を『時分割複信(TDD:Time Division Duplex)』と呼び、これは鉄道と同様に、双方向で伝送路を使う時間を分けて、通信を行う方法で半二重通信で用いられます。

別の方式として『周波数複信(FDD:Frequency Division Duplex)』という方法があり、これは1本の伝送路を、周波数帯を使い分けることで、あたかも複数の伝送路があるかのように使う方式で、全二重通信に用いられます。

伝送速度と信号速度

  • 伝送速度(転送速度)・・・伝送路を通ってデータが送られる速度
  • 信号速度(変調速度)・・・変調が行われる速度(単位:baud[ボー])
  • 伝送速度[bps]・・・一回の変調のビット数×信号速度。

 

変復調方式

この記事での学習内容 基本情報 応用情報

デジタルデータをアナログ伝送路を介して送るために必要な仕組みである変調、それを受信側で元に戻す処理である復調の代表的な方式の考え方、仕組みを理解する。

用語例:AM(Amplitude Modulation:振幅変調)、FM(Frequency Modulation:周波数変調)、PM(Phase Modulation:位相変調)、PCM(Pulse Code Modulation:パルス符号変調)、QAM(Quadrature Amplitude Modulation:直交振幅変調)PWM(Pulse Width Modulation:パルス幅変調)、モデム

変調と復調

コンピュータ内部の信号は、そのままでは伝送路に流せない場合があります。

そのような場合には、伝送路に適した信号に変換する必要があるが、この際の変換を『変調』と呼びます。(この変調された信号を乗せる信号を搬送波という)

信号を変調した場合には、伝送路の信号をコンピュータ内部の信号に戻す変換も行う必要があり、この場合の変換を『復調』と呼びます。

コンピュータ内部の信号はデジタル方式のため、アナログ伝送路を使用する場合は、必ず変調と復調の作業が必要になります。

変復調方式

変調・復調の方式には、下記のものがある。

名称特徴
振幅変調方式
(AM:Amplitude Modulation)
ビットが0の時は振幅なし、1の時は振幅ありに対応させる方式
周波数変調方式
(FM:Frequency Modulation)
ビットの0と1に対応させて、周波数を変化させる方式。
位相変調方式
(PM:Phase Modulation)
位相(電波の進み具合)を変化させる方式
パルス符号変調方式
(PCM:Pulse Code Modulation)
アナログ信号を一定間隔でサンプリングして整数値化し、その整数を二進数に置き換える方式
直角位相振幅変調方式
(QAM:Quadrature Amplitude Modulation)
振幅と位相の両方の要素を変化させることで複数の情報を一度に伝達できる変調方式。
パルス幅変調
(PWM:Pulse Width Modulation)
パルス波のデューティ比を変化させて変調すること。
(デューティー比:パルス幅をパルス期間(周期)で割ったもの)

多重化方式

この記事での学習内容 基本情報 応用情報

一つの伝送路を複数の通信で同時に使用する多重化について、代表的な方式の考え方、仕組みを理解する。

用語例: FDM(Frequency Division Multiplexing:周波数分割多重)、TDM(Time Division Multiplexing:時分割多重)、CDM(Code Division Multiplexing:符号分割多重)、WDM(Wavelength Division Multiplexing:波長分割多重)

多重化方式

大容量の伝送路がある場合、これを特定の通信が占有することは、効率が良い使い方とはいえません。
そこで、大容量の伝送路を複数の通信で共同利用できれば、効率的に伝送路を使うことが出来ます。

このように、一本の伝送路を複数の通信が共同で利用することを「多重化」といいます。
多重化には仕組みの違いにより、いくつかの方式があります。

周波数分割多重方式(FDM:Frequency Division Multiplexing)

アナログ伝送路で多く採用されている方式で、信号が正弦波の場合、周波数が異なる複数の信号を混合しても分離できる性質があるので、この性質を利用して、上りと下りの信号で異なる周波数を使います。

また、周波数を等間隔に分割し、複数の回線を回線ごとに違う周波数を利用するという方法も取られます。(ADSLはこの方式)

時分割多重方式(TDM:Time Division Multiplexing)

デジタル伝送路で多く採用されている方式で、複数のデジタル信号にそれぞれ時間を順番に割り当てて、一本の伝送路で送る方式です。

伝送路は短い時間でみると、上り専用、下り専用になっています。

符号分割多重方式(CDM:Code Division Multiplexing)

デジタル伝送路で採用されている方式で、デジタル信号を符号によって「色分け」し、区別するようにする方式です。

波長分割多重方式(WDM:Wavelength Division Multiplexing)

光通信技術の一つで、複数の回線ごとに異なる光の波長を割り当てて、一本の伝送路にまとめて伝送する方式。

 

信号同期方式

この記事での学習内容 基本情報 応用情報

送信側と受信側で送受信のタイミングを合わせる信号同期制御について、代表的な方式の考え方、仕組みを理解する。

用語例: ビット同期、キャラクタ同期、フラグ同期、調歩同期、スタートビット、ストップビット、SYN同期、フレーム同期

信号同期方式

通信においては、送信側と受信側でタイミングを合わせることが必要になります。
タイミングを合わせなければ、受信側はデータの始まりと終わりを知ることも出来ません。この、通信においてタイミングを合わせることを「同期」といいます。

一般的な伝送路の同期方式は、ブロック同期方式とビット同期方式に分類されます。

ビット同期方式は電話網などで使われる同期方式です。

通常の通信では、ブロック同期方式が使われます。

ブロック同期方式の代表的なものに、調歩同期方式、キャラクタ同期方式、フレーム同期方式があります。

調歩同期方式

調歩同期方式は、文字符号の前後に同期のためのビットを付加する方式です。

1つの文字は8ビットですが、この8ビットの前に開始と終了を示す特別なビットを付加します。
開始を示すビットを「スタートビット」、終了を示すビットを「ストップビット」と呼びます。通常、スタートビットは0、ストップビットは1、データが無い場合は1を取ります。

受信側は、スタートビットとストップビットによって、文字の始まりと終わりの位置を知ることが出来ます。

文字毎にスタートビットとストップビットが付き、伝送効率が悪いため、低速な通信で利用されます。

キャラクタ同期方式(SYN同期方式)

キャラクタ同期方式は、同期用の制御文字を使い、キャラクタ(メッセージ)単位で同期をとる方式です。同期用の制御文字は「SYN」と呼ばれるので、SYN同期方式とも呼ばれます。

キャラクタ同期方式には、制御文字の使い方が異なる複数の方式があります。

一つは、データ部分を識別するために、データの先頭と終端にそれぞれ別の制御文字を付加する方式です。

もう一つは、データ部分を識別する制御文字を使わずに、代わりに先頭に「SYN」を2個入れる方式です。

キャラクタ同期方式が利用できるのは、8ビット単位の文字情報を伝送する場合に限られます。これは不定長や8ビットではない長さのデータの場合、「SYN」と同じビットの並びが出現する可能性があるためです。

メッセージのブロックごとにビット列を付加するため、中速な通信で利用されます。

フレーム同期方式(フラグ同期方式)

フレーム同期方式は、データのブロックの区切りに特定のビットの並びを使う方式です。例えば、フレーム同期を行うある通信方式では、2進数の「01111110」という並びを使っています。
この特定のビットの並びを「フラグパターン」と呼びます。そのため、フラグ同期方式とも呼ばれます。

キャラクタ同期方式が8ビット単位の文字情報を前提としているのに対し、フラグ同期方式は任意の長さのビットデータを扱えるので、文字情報以外の画像や音声などのデータ伝送でも利用できます。

フラグ同期方式は、送信するデータが無い場合でも常にフラグを送り続けており、データが発生した際にフラグの間にデータを挿入します。
受信側はフラグ以外のビット列が現れたときに、次のフラグまでのビット列をひとまとまりのデータとしてみなします。

データのまとまり毎にフラグと呼ばれるビット列を付け加えるため、キャラクタ同期方式よりも高速な通信で利用されます。

誤り検出・訂正

この記事での学習内容 基本情報 応用情報

偶数パリティ、奇数パリティなど、信頼性を高める技術の考え方、仕組みを理解する。

用語例: CRC、ハミング符号、パリティチェック、ECC、チェックサム

誤り検出・訂正

伝送路城の信号は、ノイズやタイミングのズレなどの影響で、データを正しく伝送できないことがあります。これを「伝送誤り」や「伝送エラー」といいます。伝送誤りがあると、送られたデータは破損してしまいます。正しくデータを送るためには、伝送誤りを検出したり、訂正する必要があります。これらの伝送誤りを検出したり、訂正したりすることを「誤り制御」と呼びます。

誤り制御は「誤り検出」と「誤り訂正」に大別されます。

誤り検出

誤り検出は伝送誤りの検出を行うことです。送信側は誤り検出のための情報を付加して送信し、受信側は誤り検出のための情報を使って、受信したデータをチェックします。

誤りが検出されると、受信したデータを破棄したり、送信側に再送信を要求したりします。

代表的な誤り検出の方式は「パリティチェック」「チェックサム」「CRC」などがあります。
方式により、付加される誤り検出のための情報のサイズや誤り検出の精度が異なってきます。

誤り訂正

誤り訂正は伝送誤りの訂正を行うことです。送信側は誤り訂正のための情報を付加して送信し、受信側は誤り訂正のための情報を使って誤りを検出、必要があれば正しいデータを復元します。

そのため、誤り検出と異なり、送信側に再送信を要求する必要はありません。但し、誤り訂正のための情報は、誤り検出のための情報より大きくなるため、その分通信の効率は低下します。

パリティチェック

パリティとは、値が1のビットの個数が偶数か奇数かをチェックする方式です。送信するビット列に誤り検出用のビット(パリティビット、冗長ビット)を付け加える検出方式です。

偶数パリティと奇数パリティの2つの方式に分かれており、偶数パリティの場合、付加すると値が1のビットが偶数個になり、奇数パリティの場合は値が1のビットが奇数個になります。

ただし、パリティチェックでは誤り検出は出来ても、どのビットに誤りがあるか判断できないため、誤り訂正は出来ません。

パリティチェックはどの方向にパリティビットを付け加えるかによって、垂直パリティと水平パリティの2種に分けられ、さらに両者を組合せた垂直水平パリティという方式もあります。

垂直パリティ

垂直パリティは送信するデータのビット列のまとまり毎(文字単位など)に、1ビットのパリティビットを付け加える方法です。

この方式の場合、どのビット列のまとまり(文字)に誤りがあったかが検出できます。

水平パリティ

水平パリティでは、送信するデータのビット列の同じ位置毎にパリティビットを付け加える方式です。

この方式の場合、どの位置のビットに誤りがあったかが検出できます。

また、データの量(文字数)が増えてもひとまとまりにするビット数が変わらない限りはパリティビットの数が変わりません。

垂直水平パリティ

垂直パリティと水平パリティを組み合わせることによって、1ビットの誤りを検出し、訂正することが出来ます。

チェックサム

データを分割し、文字などのブロック単位のデータを数値とみなして、合計を取った値を検査用の符号としてデータに付け加え、誤りを検出する方法です。

合計を取るブロックの大きさは8ビットや16ビットがあります。合計を計算する時、ブロックサイズの上限値より大きくなった場合、繰り上がりの分は無視されます。

CRC方式(Cyclic Redundancy Check:巡回冗長検査)

送信するビット列をある定数(例えば生成多項式で求められる値)で割って、余りを検査用の符号としてデータに付け加える方式です。

パリティチェックの場合、複数ビットが誤っている時に誤りを検出できない場合がありますが、CRC方式では連続したビットの誤り(=バースト誤り)を検出することが出来ます。但し、訂正はできません。

ハミング符号方式

送信するビット列の中に、誤りを訂正するための符号を付け加える方式です。誤っているビットを検出し、受信側で訂正することが出来ます。この符号、又は仕組みをECC(Error Correcting Code:誤り訂正符号)といいます。

ハミング符号方式では、4ビットの情報に3ビットの誤り検査用符号を加え、2ビットの誤り検出機能と1ビットの誤り訂正機能をもたせたものがあります。よって、ブロック内に2ビットの誤りが発生した場合、誤りの訂正はできませんが検出は可能です。

ハミング符号は伝送時に使うと冗長ビットが多くなり伝送効率が落ちます。しかし、誤り訂正が可能であり、信頼性が高いため、最近のコンピュータのメインメモリにはハミング符号方式の誤り訂正機能を搭載したものが一般化しています。(ECCメモリ)

 

計測・制御に関する理論

情報処理技術者試験での学習内容

【基本情報・応用情報】
・信号処理に関する考え方、仕組みを習得し、応用する。
・制御の必要性、考え方、仕組みを習得し、応用する。

(1)信号処理 基本情報 応用情報

アナログ波形を分析して、雑音を除去し、特徴を抽出する信号処理の考え方、仕組みを理解する。

用語例:DFT(Discrete Fourier Transform:離散フーリエ変換)、FFT(Fast Fourier Transform:高速フーリエ変換)、インパルス応答、フィルタ(ローパスフィルタ、ハイパスフィルタ、バンドパスフィルタ、デジタルフィルタ)、サンプリング定理、D/A変換、A/D変換

(2)制御に関する理論

1.制御の考え方、仕組み 基本情報  応用情報

制御の考え方、仕組みを理解する。また、フィードバック制御、フィードフォワード制御など、各種制御の考え方、仕組みを理解する。

用語例:リアルタイムOS、MPUアーキテクチャ、オープンループ、応答特性、制御安定性、PWM(Pulse Width Modulation:パルス幅変調)制御

2.センサ・アクチュエータの種類と動作特性 基本情報  応用情報

コンピュータ制御では、制御対象の光、温度、圧力などの状態をセンサで検出し、コンピュータが判断して、アクチュエータを通じて電動、油圧、水圧、空気圧などの機械的な動作に変換し、制御対象を一定の状態に保つなどの制御を行うことを理解する。

用語例:光学センサ、イメージセンサ、レーザセンサ、赤外線センサ、X線センサ、磁気センサ、加速度センサ、ジャイロセンサ、超音波センサ

3.計測システムの種類と動作特性 応用情報

測位システムなど、コンピュータを利用した高度な計測システムの考え方、仕組みを理解する。

用語例:GPS、基地局即位、無線LANアクセスポイント測位

 

 

信号処理

この記事での学習内容 基本情報 応用情報

アナログ波形を分析して、雑音を除去し、特徴を抽出する信号処理の考え方、仕組みを理解する。

用語例:DFT(Discrete Fourier Transform:離散フーリエ変換)、FFT(Fast Fourier Transform:高速フーリエ変換)、インパルス応答、フィルタ(ローパスフィルタ、ハイパスフィルタ、バンドパスフィルタ、デジタルフィルタ)、サンプリング定理、D/A変換、A/D変換

信号処理

信号処理とは、音声信号や電気信号などに対して、いろいろな処理をして変換する技術です。処理形式は、アナログ信号処理とデジタル信号処理、相互の変換処理の3種類あります。

コンピュータの入力や出力に使われるものは、温度、音声、画像などアナログ信号が使われます。これに対して、入力された値をコンピュータ処理する際には、デジタル信号で扱われます。このアナログ信号からデジタル信号に変換する処理をA/D変換といい、逆にデジタル信号からアナログ信号に変換するのを、D/A変換とよんでいます。

フィルタリング

アナログデータのうち、デジタル化の対象にする必要がない部分を予め削ることをフィルタリングといいます。

例えば、音声の場合には、人間に聞こえない周波数の部分を予めカットする、といった処理が当てはまります。フィルタリングは「標本化」の際に行い、それ以降の手順で扱うデータの量を削減します。

また、A/D変換する際に、アナログ信号にノイズなどが混入していると、そのまま間違った値が入力されてしまうため、ノイズを取り除く必要があり、そのための装置をフィルタとよんでいます。

制御に関する理論

この記事での学習内容 基本情報 応用情報

制御の考え方、仕組みを理解する。また、フィードバック制御、フィードフォワード制御など、各種制御の考え方、仕組みを理解する。

用語例:リアルタイムOS、MPUアーキテクチャ、オープンループ、応答特性、制御安定性、PWM(Pulse Width Modulation:パルス幅変調)制御

制御

制御とは、計測によって得られた入力値を元に、出力値を調整することです。

入力や出力に使われるものは、電圧、電流、圧力、温度、音量、音程などアナログ信号が使われます。

これに対して、入力された値をコンピュータ処理する際には、デジタル信号で扱われますので、必要に応じてA/D変換、D/A変換が行われます。

制御システム

制御システムとは、「制御」機能により、他の機器やシステムを管理し、制御するシステムです。

例えば、「バケツに水を汲む」という行動を例に取ってみます。

私たちがバケツに水を汲み場合、当然ながらバケツに入って水の量を見ていて、ちょうどよいところで水を止めます。「制御」とはまさしくこのような機能です。制御をせずに水をくんだ場合、単純に一定時間水を出して止めるという処理になってしまうので、出て来る水の量が外的要因で変わってしまった場合、「ちょうどよい量」の水を組めなくなってしまいます。

つまり、制御システムは外的要因にどう対処するか、がポイントになります。

制御システムにはフィードバック制御、フィードフォワード制御、オープンループ制御などがあります。

センサとアクチュエータ

センサは検知・監視装置であり、外的要因を信号に変換する機能を持ちます。電子的な温度計や、湿度計、回転計などが当てはまります。

アクチュエータは信号を動作に変換する機能を持つ機器です。制御可能なモータ、油圧装置、ヒータ、エンジンのガゾリン噴射装置などが当てはまります。

フィードバック制御

フィードバック制御とは、制御した出力の結果を入力側に戻し、目標値と比較して次の制御に反映させる制御方法です。

例えばエアコンの場合、室温と設定温度の差を計測してエアコンから出る風の温度と風量に反映していきます。

フィードバック制御では、常にセンサを用いて対象(エアコンの場合室温)を監視しています。

そのため、エアコンの場合は窓を開けるなどして室温が急に高くなった場合でもその変化を計測し、エアコンの風量などに反映することが出来ます。

フィードバック制御は変化が起きてから制御量の修正をするため、影響が現れてから修正するという後追いの修正となります。

フィードフォワード制御

フィードフォワード制御は、制御を乱す外的要因が発生する場合に、その影響が出る前に必要な修正を行う制御方法です。

例えばエアコンの場合、室内温度に変化はないけれど、外の気温が下がってきたので、冷房を弱める、といった制御を行うことが出来ます。しかし、室内温度と設定温度が等しくなるとは限りません。

通常は、フィードバック制御と組合せて用いられます。

オープンループ制御

制御量の入力値のみを計算する制御方式です。したがって、出力に対してのフィードバックや外乱などのデータは一切考慮しません。

単純に負荷のかかっていないモータの回転数などを入力電圧だけで制御する場合などに適しています。

クローズドループ制御

モータに対する負荷が変化するような場合、負荷により回転数が変化するので、回転数を一定に保つためには、オープンループ制御ではなく、フィードバック制御が必要になります。

このようなフィードバックや外乱を考慮して入力値を制御する方式をクローズドループ制御といいます。

リアルタイムOS

このような制御システムのコンピュータの制御では、リアルタイムOSが利用されることがあります。

リアルタイムOSとは、リアルタイム処理(=処理に対する応答時間が一定の範囲内であること)が保証されているオペレーティングシステムです。

利用者にとっての利便性よりもデータの処理速度を優先しているのが特徴です。

 

データ構造(概要)

情報処理技術者試験での学習内容

【基本情報・応用情報】
・データ構造の考え方、仕組みを習得し、応用する。
・代表的なデータ構造の種類、特徴、操作を習得し応用する。

【ITパスポート】
・データ構造の基本的な考え方を理解する。

(1)データ構造 ITパスポート 基本情報 応用情報

データ構造の考え方、仕組みや、BNFを使用したデータ構造の定義方法を理解する。

(2)データ構造の種類

1.配列 ITパスポート 基本情報  応用情報

配列の考え方を理解し、データの格納方法、取り出し方法などの操作を理解する。

用語例:多次元配列、静的配列、動的配列

2.リスト ITパスポート 基本情報  応用情報

リストの考え方、その操作を理解する。

用語例:線形リスト、単方向リスト、双方向リスト、環状リスト、リンク付きリスト

3.スタックとキュー 基本情報 応用情報

スタックとキューの考え方、その操作を理解する。

用語例:FIFO、LIFO、プッシュ、ポップ

4.木構造 ITパスポート 基本情報 応用情報

木構造の種類と考え方、木の巡回法、節の追加や削除、ヒープの再構成などを理解する。

用語例:根、葉、枝、二分木、完全二分木、バランス木、順序木、多分木、探索木、深さ優先探索、幅優先探索、先行順、後行順、中間順

 

 

データ構造

この記事での学習内容 ITパスポート 基本情報 応用情報

データ構造の考え方、仕組みや、BNFを使用したデータ構造の定義方法を理解する。

データ構造

「データ構造」とは、コンピュータでデータを系統立てて扱う仕組みをいいます。

プログラミングに際して、データ構造の設計はすべての基礎・土台となるものです。目的とする処理が確実に、迅速に実行できるようなデータ構造となるよう、あらかじめ十分検討し設計しておく必要があります。

変数

プログラムはコンピュータへの操作を指示するもので、コンピュータになにがしかの処理をさせるときに、支持を効率的に与えます。

そのプログラムの内部で、情報を一時的に格納するための「器」として「変数」を用います。変数を定義する際には「変数名」を付与し、他のデータと区別できるようにします。

また、変数では、数値のみならず、文字や文字列、真偽を表す真理値など様々な情報を扱うことが出来ます。その際、変数が扱う情報の種類を「型」と呼びます。

データの型

コンピュータで扱う様々なデータは、用途によって以下のような種類に分けることが出来ます。これをデータの型(属性)といいます。

プログラム内部で扱われる変数には、それぞれ「型」が定義されていて、「型」が異なる変数に情報を入れることは、基本的には出来ません。

数値型整数型小数点がつかない整数値のみ扱える。
実数型小数点以下の数値も扱える。
文字型英字や記号、漢字やひらがな・カタカナなどが扱える。
文字コードによって文字を区別する。
論理型真(True) か偽(False)かの2つの値のみ扱える。

データ構造の種類

コンピュータでたくさんのデータを管理するには、そのデータ構造をなるべく用途に適した形で、コンパクトに収納でき、かつ簡単に探し出せるものにしておくと便利です。

代表的なデータ構造には、レコード、配列、リストがあります。

レコード

プログラムがデータを処理する時の基本単位になるまとまりを、レコードといいます。

1件のレコードには型の異なる幾つかの項目(=フィールド)があるのが一般的です。

例えば「住所録」のデータであれば、一人分のデータを1件のレコードとし、その中に「氏名」「住所」「生年月日」といったフィールドが含まれます。

また、同じフィールドを持つレコードの集まりのことを「ファイル」といいます。

 

配列

この記事での学習内容 ITパスポート 基本情報 応用情報

配列の考え方を理解し、データの格納方法、取り出し方法などの操作を理解する。

用語例:多次元配列、静的配列、動的配列

配列

コンピュータで大量のデータを高速に処理する場合に、同じ型の変数を、先頭から順番を付けて並べたものを配列といいます。

配列におけるそれぞれの変数は「配列要素」または「要素」と呼ばれます。要素にはそれぞれを区別するために順番に番号が振られています。この番号のことを添字(インデックス)といい、添字を指定すると、配列の中から特定のデータを任意の順番で探し出すことが出来ます。

添字は先頭のデータを1から数える場合と、0から数える場合とがあります。

配列の特徴

配列は構造が単純で、先頭から順に読み込んでいくには便利ですが、データの論理的な順序どおりに物理的にも並んでいるように作られていないといけないので、後からデータを追加したり、削除したりする場合に、そこから後ろのデータを全てずらして書き直さなければならないというデメリットがあります。

あらかじめ配列内の要素の数が決まっているものを「静的配列」といいます。
対して、データの数によって配列の要素の数が変化するものを「動的配列」といいます。

二次元配列

配列には、行が2行以上の多次元配列もあります。2行の場合は二次元配列といいます。

例えば、5名の数学のテスト結果を1行目に、英語のテスト結果を2行目に格納する、といった具合に利用することが出来ます。

二次元配列を使う場合には添字が二つ必要となり、添字の1つ目が行番号、2つ目が列番号となります。

リスト

この記事での学習内容 ITパスポート 基本情報 応用情報

リストの考え方、その操作を理解する。

用語例:線形リスト、単方向リスト、双方向リスト、環状リスト、リンク付きリスト

配列のデメリットとリスト

配列では、要素の追加・挿入をする場合に、挿入する位置以降のすべての要素を1つずつずらす処理が必要になるため、要素の数が大量の場合は処理に時間がかかります。
つまり、要素の追加や削除が非効率という欠点があります。

この欠点を踏まえ、追加や削除を効率良く行うことが出来るように工夫されたデータ構造が「リスト」です。

リスト(線形リスト)

リストは同じ型のデータを集めて、それぞれに「自分の次のデータがどれか」という情報(=ポインタ)を持たせて連結したものです。データは物理的に順番に並んでいる必要はありません。

リストの中のデータは、データ部とポインタ部からなります。
データ部には実際のデータが、ポインタ部には次のデータの格納場所が入っています。ポインタ部に入っているメモリ城の格納場所のことをアドレス(番地)といいます。

なお、リスト構造には配列のような添字という概念はありません。そのため、配列のように添え字を使って任意の要素にアクセスする、ということが出来ません。

単方向リストと双方向リスト

リストには、次へのポインタのみを持つ単方向リストと、前後へのポインタを両方持つ双方向リストがあります。

単方向リストは先頭からデータを探すことしか出来ないので、後ろの方のデータを見つけるには時間がかかります。

双方向リストは両方向のポインタを持つため、単方向リストよりもサイズは大きくなりますが、各データの前後、およびリストの先頭、末尾を示すポインタを持っているので、データを後ろから探索することも出来ます。

リスト構造への追加と削除

リスト構造のデータはポインタを保つ必要があるため、配列よりも大きくなりますが、データの挿入や削除をする際、その前後のポインタを書き換えるだけで済むので、データを頻繁に更新する場合に適しています。

環状リスト

単方向リストでは、末尾のデータの「次へのポインタ」は空になります。また、双方向リストでは、先頭のデータの「前へのポインタ」と、末尾のデータの「次へのポインタ」は空になります。
これらを空にせずに、データが環状につながっているようにしたものが環状リストです。

環状リストにはポインタを1つ持つ単方向リストを基にするものと、ポインタを2つ持つ双方向リストを基にするものとがあります。

 

スタックとキュー

この記事での学習内容 基本情報 応用情報

スタックとキューの考え方、その操作を理解する。

用語例:FIFO、LIFO、プッシュ、ポップ

スタック(LIFO)

スタックは、最後に入れたものを最初に取り出すデータ構造で、LIFO(Last In, First Out:後入れ先出し)ともいいます。

スタックにデータを追加する動作をプッシュ(push)、データを取り出す動作を(pop)といいます。

スタック構造は、逆ポーランド記法の計算やプログラムにおける提携処理の呼び出しと戻りなどに応用されています。

逆ポーランド記法の説明で「コンピュータと相性が良い」と述べていますが、その特徴とスタックというデータ構造は密接に関連しています。

逆ポーランド記法で記述された式を処理する場合、以下のルールでスタックを使った処理を行っています。

  • 数値が来たら、その数値をスタックにPUSHする。
  • 演算子が来たら・・・
    • スタックからデータをPOPする。(データ1)
    • スタックからデータをPOPする。(データ2)
    • データ1とデータ2を演算し、その結果をスタックにPUSHする。

この処理を行うと、最終的にスタックの一番上に一連の式の結果が保存されています。

キュー(FIFO)

キュートは、最初に入れたデータを最初に取り出すデータ構造で、FIFO(First In, First Out:先入れ先出し)ともいいます。

キューにデータを追加する動作をエンキュー(ENQ)、データを取り出す動作をデキュー(DEQ)といいます。

キューは通信において、タイミング調整に使われることがあります。代表的な例として、送信バッファや受信バッファがあります。バッファとは、一時的にデータを入れる場所のことです。

例えば、コンピュータでのデータ受信の際に、インターネット等伝送路からのデータ量が一定していない場合、そのまま受信してしまうとデータ受信ペースの遅れや、瞬間的に大量のデータを受信した場合などで不都合が生じます。このような場合に受信バッファが用いられ、受信したデータを一時的に格納しておき、できるだけコンピュータが受信するデータ量を一定にするようにします。

スタックやキューをプログラムで実現する場合の違い

スタックやキューをプログラムで実装する場合、データ量や用途に応じて配列構造とリスト構造を使い分けます。

 配列で実現リストで実現
キュー先頭を指すポインタと最後尾を指すポインタが必要
処理が単純で速い
単方向リストで可能
データあふれの心配がない
スタック最新のデータを示すポインタが必要
処理が単純で速い
単方向リストで可能
データあふれの心配がない

木構造

この記事での学習内容 ITパスポート 基本情報 応用情報

木構造の種類と考え方、木の巡回法、節の追加や削除、ヒープの再構成などを理解する。

用語例:根、葉、枝、二分木、完全二分木、バランス木、順序木、多分木、探索木、深さ優先探索、幅優先探索、先行順、後行順、中間順

木構造

 

木構造はデータ間の階層的な関係、つまり親と子のような関係を表現するのに用いられるデータ構造です。大量の情報を系統的に管理する際に有効です。

木構造は、「節(ノード)」と「枝(ブランチ)」から構成されています。最上位の節は「根(ルート)」といいます。また、最下位の節を「葉(リーフ)」といいます。複数に枝分かれしている場合には、「葉(リーフ)」は複数になります。「枝(ブランチ)」は節と節をつなぐ経路のことです。

また、ある節の上の枝につながる節を親、下の枝につながる節を子といいます。

木構造では、親の節から子の節をたどっていくことでデータを取り出すことができます。

木構造の深さ

木構造では、節や葉の階層を示すため「深さ」という数値が使われます。深さは根の階層を0として、下に行くと1ずつ増えていきます。

部分木

木構造の部分を示す時に「部分木」という言葉が使われます。

ある節に注目した時、その節の左の枝から下の木構造を「左部分木」、節の右の枝から下の木構造を「右部分木」といいます。

二分木と多分木

節から出る枝が2本以下である木を二分木といいます。対して、節から出る枝が2本より多い気を多分木といいます。

二分木では、節の左側に繋がる部分を左の子(左部分木)、右側に繋がる部分を右の子(右部分木)といいます。

二分木の中で、根から葉までの深さが全て同じものを「完全二分木」と呼びます。一般的な二分木は「葉の深さの差が1以内である」、「葉を除く全ての節が左部分木を持っている」という二つの条件を満たすものです。

同じ階層の節に順位があるものを順序木といいます。順序木では一つの節の下の節や葉は左側のほうが高い順位と見なされます。順序木ではデータの格納方法を工夫することにより、データの検索や大小関係での並び替えを効率的に行うことが出来ます。

木の巡回法

木構造からデータを探して読み出すことを「木の巡回」といいます。二分木の巡回法には幅優先探索と深さ優先探索があります。

木の幅優先探索

幅優先探索は、階層が浅いデータを優先して検索する方法です。

幅優先探索を行うと、最初に子のデータを読み出します。子のデータが検索したデータでない場合は、1階層目の節や葉のデータを左から右へと順番に読み出していきます。1階層目のデータが検索したデータでない場合は、次は2階層目と進んでいく、という方法です。

木の深さ優先探索

深さ優先探索は、左部分木を優先して、階層が下のデータを先に読み出す方法です。

葉以外の節のデータと、葉のデータを読み出す順番の違いにより、先行順探索、中間順探索、後行順探索の3種類があります。

先行順探索

先行順は、節、左部分木、右部分木の順番で読み出す方法です。

右の図を例にとって説明すると、最初の節である根のデータ1を読み出し、次に左部分木の節のデータ2を読み出します。
その次は2階層目の左部分木のデータ3を読み出します。
3階層目はないので、2階層目の右部分木のデータ4を読み出します。

中間順探索

中間順は、左部分木、節、右部分木の順番で読み出す方法です。

右の図を例にとって説明すると。根から始めて2階層目の左部分木で左部分旗がなくなるので、データ1を読み出します。
次に、上の階層に戻ってデータ2を読み出します。
その次に2階層目の右部分木のデータ3を読み出します。
2階層目の読み出しが終わると、次は根のデータ4を読み出します。

後行順探索

後行順は、左部分木、右部分木、節の順番で読み出す方法です。

右の図を例にとって説明すると、根から始めて2階層目の左部分木で左部分旗がなくなるので、データ1を読み出します。
次は2階層目の右部分木のデータ2を読み出します。
その次は、上の階層に戻ってデータ3を読み出します。
その次は、1階層目の右部分木ですが、そこからは左部分木が出ているので、左部分木のデータ4を読み出します。

二分探索木の応用

二分木に対して、データを格納するルールを定めることにより、木構造をデータの検索や大小順での並び替えに活用できます。

データの検索に活用する例が「2分探索木」、整列に活用する例が「ヒープ」です。

2分探索木

二分木の中でも、左の木の全てのデータが親よりも小さく、右の木の全てのデータが親よりも大きいという声質を持つ木を「2分探索木」といいます。
なお、2分探索木は完全二分木である必要はありません。

データの探索

2分探索木を用いると、節毎に大小関係を比較することにより、データの探索を効率的に行うことが出来ます。

例えば、9階層の木構造の場合、深さ優先探索や幅優先探索を行うと、最大で1000回を越える比較が行われますが、2分探索木ならば、比較回数は10回未満で済みます。

データの追加

2分探索木にデータを追加する場合は、検索と同じような手順で、追加する場所を探していきます。

データを追加した後も2分探索木になるようにします。

データの削除

2分探索木でデータを削除する場合、削除する節の持つ枝の数により処理が異なります。

  • 枝のない葉の場合: そのまま葉を削除します。
  • 枝が1本の場合: 節を削除して、下の節をつなぎ直します。
  • 枝が2本の場合: 削除する節の左部分木の中で、最も大きな値のデータを削除する節に移動します。

削除をこの手順で行うことにより、削除を行った後も2分探索木になるようにします。

バランス木

木構造は、追加や削除を繰り返していくうちに、葉の深さにばらつきが出て、部分木のバランスが悪くなることがあります。

部分木のバランスが悪くなると、探索の効率が低下してしまうので、一定のルールを定めて、部分木のバランスを取る木構造があります。そのような木構造を「バランス木」といいます。
完全二分木はバランス木の一種です。他のバランス木には「AVL木」や「B木」があります。

AVL木

葉の深さの差が常に1以下の木構造です。完全二分木と異なり、葉でない節が左部分木を持つ必要はありません。

AVL木では、要素の追加や削除が発生する時に、バランスが崩れていないかをチェックしつつ、崩れていればそれを回復する処理(=再構築)を行う必要があります。そのため、追加や削除が発生する場合には、通常の2分探索木より手間がかかるのですが、バランスを取りながら木の深さを浅く保つことで、探索時のコストを抑えることが可能になります。

B木

B木は多分木のバランス木の一つです。一つの節に入れられるデータの個数や分岐の数は、「次数」と呼ばれる数値で決まります。

次数をNとするB木を「N次のB木」といいます。N次のB木は以下の4つの条件を満たす必要があります。

  • 一つの節のデータ数は2×N個以下であること。
  • 根以外の節はN個以上のデータを持つこと。
  • 葉以外の節はデータ数+1個の枝を持つこと。
  • すべての葉は同じ階層であること。

バランス木の実用例

バランス木の実用例としては、データベースの「インデックス(索引)機能」にB木が多く利用されています。(AVL木を使う場合もあります。)

検索の処理を高速に行うことを優先したい場合には、単純な2分探索木よりも、バランス木が用いられます。
単純な2分探索木で最初の木構造の作り方が悪いと、偏った木構造となり、検索のコストがリスト構造と変わらなくなることがあるためです。

アルゴリズム(概要)

情報処理技術者試験での学習内容

【基本情報・応用情報】
・アルゴリズム、流れ図の考え方、表現方法を習得し、応用する。
・代表的なアルゴリズムを習得し、応用する。
・アルゴリズムの設計方法を習得し、応用する。

【ITパスポート】
・アルゴリズムと流れ図の基本的な考え方と表現方法を理解する。

(1)アルゴリズムと流れ図 ITパスポート 基本情報 応用情報

アルゴリズムや流れ図(フローチャート)の考え方、記号、順次、判定、繰り返しなど、処理手順の表現方法を理解し、流れ図を描く方法を理解する。

用語例:端子、処理、定義済み処理、判断、ループ端、データ、線

(2)代表的なアルゴリズム

1.整列、併合、探索のアルゴリズム ITパスポート 基本情報  応用情報

整列のアルゴリズム、併合のアルゴリズム、探索のアルゴリズムを理解する。

用語例:選択ソート、バブルソート、マージソート、挿入ソート、シェルソート、クイックソート、ヒープソート、線形探索法、二分探索法、ハッシュ表探索法、シノニム対策

2.再帰のアルゴリズム 基本情報  応用情報

再帰的アルゴリズムの考え方、特徴、実現に適したデータ構造を理解する。

3.グラフのアルゴリズム 基本情報 応用情報

グラフのアルゴリズムを理解する。

用語例:深さ優先探索、幅優先探索、最短経路探索

4.文字列処理のアルゴリズム 基本情報 応用情報

文字列処理のアルゴリズムを理解する。

用語例:文字列照合、KMP法(クヌース・モリス・プラット法)、BM法(ボイヤ・ムーア法)

5.ファイル処理のアルゴリズム 基本情報 応用情報

バッチ処理などで使用される整列処理、併合処理、コントロールブレイク処理、編集処理のアルゴリズムを理解する。

6.近似アルゴリズム 応用情報

近似アルゴリズムを理解する。

用語例:近似計算

7.確率アルゴリズム 応用情報

モンテカルロ法を例として、確率アルゴリズムを理解する。

8.遺伝的アルゴリズム 応用情報

最適化問題への進化論の適用例であることを理解する。

9.自然言語処理のアルゴリズム 応用情報

情報検索、機械翻訳などを例に、自然言語処理のアルゴリズムを理解する。

10.データ圧縮のアルゴリズム 応用情報

データ圧縮のアルゴリズムを理解する。

用語例:ランレングス法。ハフマン法

11.図形に関するアルゴリズム 応用情報

3次元図形処理アルゴリズムを理解する。

用語例:Zバッファ法、スキャンライン法、レイトレーシング法

12.記憶域管理アルゴリズム 応用情報

OSのメモリ管理の方法について、空きメモリ管理のためのデータ構造、メモリの割当、開放などのアルゴリズムを理解する。

(3)アルゴリズム設計 基本情報 応用情報

アルゴリズムは、擬似言語、流れ図、決定表(デシジョンテーブル)などを用いて表現することを理解する。また。アルゴリズムの設計方法を理解する。

用語例:再帰、分割統治法

 

アルゴリズムと流れ図

この記事での学習内容 ITパスポート 基本情報 応用情報

アルゴリズムや流れ図(フローチャート)の考え方、記号、順次、判定、繰り返しなど、処理手順の表現方法を理解し、流れ図を描く方法を理解する。

用語例:端子、処理、定義済み処理、判断、ループ端、データ、線

アルゴリズム

アルゴリズムとは、目的にたどり着くための道筋や処理の手順のことです。

同じ結果を出すための処理であっても、より整理されたアルゴリズムで行うほうが、効率よく結果を得ることが出来ます。プログラムを作るときは、特にどんなアルゴリズムを使うかが重要になります。

流れ図

流れ図は「フローチャート」ともいい、処理のアルゴリズムを視覚的に表現できる図解法です。プログラムの設計によく用いられます。

流れ図は以下の記号類を使って、上から下に流れていくように描きます。

アルゴリズムの基本構造

アルゴリズムの基本構造には、順次型、分岐型、反復型があります。

  • 順次型: 順番に処理を実行していく。

    流れ図では、上から順に、四角系の中に処理を描いていきます。

  • 分岐型: 条件によって異なる処理を実行する。

    流れ図では、ひし形の中に分岐の条件を書き、矢印を分岐させます。

  • 反復型: 繰り返しを終える条件が満たされるまで、同じ処理を繰り返す。

    繰り返しを終える条件を、角を切り取った四角形(=ループ端)の中に描き、繰り返す処理を2つのループ端の間に描いていきます。


    繰り返しの図形を使わずに、右記のように分岐のひし形を使って描く方法もあります。

前判定型と後判定型の繰り返し

反復型には、先に繰り返しを行うかどうかの条件判定をしてから、一通りの処理を行う「前判定型」と、処理を一通り実行した後で、終了するかどうかの条件判定を行う「後判定型」の2種類があります。

反復処理の「1回め」をどのように扱うかで、前判定型と後判定型を使い分けます。

前判定型では、1回目の条件判定で終了条件を満たすと、繰り返しの処理は1回も実行されません。
対して後判定型では繰り返し処理の後で終了条件を判定するので、少なくとも1回は処理が実行されます。

流れ図を使った例

二人で行うゲームを例に、流れ図を見てみましょう。

互いにじゃんけんをし、勝ったほうがピコピコハンマーで相手の頭を叩きます。同時に、負けた方はヘルメットで防御します。
ハンマーが頭にヒットすれば叩いた方の勝ちとなる、というゲームです。(いわゆる「たたいてかぶってジャンケンポン」)

 

整列-代表的なアルゴリズム1

この記事での学習内容 ITパスポート 基本情報 応用情報

整列のアルゴリズムを理解する。

用語例:選択ソート、バブルソート、マージソート、挿入ソート、シェルソート、クイックソート、ヒープソート

整列(ソート)

整列とは、データを大きい順(降順)または小さい順(昇順)になるように並び替えることです。

 昇順降順
数値「32514」1234554321
英字「BDAEC」ABCDEEDCBA
かな「いあえおう」あいうえおおえういあ

数値データは値の大小順に整列され、文字データは文字コードの値の大小順で整列されます。
英字はアルファベット順に、ひらがな、カタカナは50音順に文字コードが割り振られているため、英字同士はアルファベット順、ひらがな同士、カタカナ同士は50音順で並び替えが可能になります。

代表的なソートアルゴリズムと計算量・速度の比較
名称オーダー(計算量)処理速度備考
バブルソートO(n2)遅い処理が単純で実装が容易。
選択ソートO(n2)遅い処理が単純で実装が容易。
挿入ソートO(n2)遅い処理が単純で実装が容易。
O(n2) のアルゴリズムの中では高速。
シェルソートO(n1.2)~O(n2)程度やや遅い挿入ソートの改良版だが、場合によっては挿入ソートと速度が変わらない。
マージソートO(n log2n)高速「再帰」の概念の理解が必要。
クイックソートO(n log2n)高速「再帰」の概念の理解が必要。
ヒープソートO(n log2n)やや高速「ヒープ木」の概念の理解が必要。

バブルソート

代表的な整列のアルゴリズムに、バブルソートがあります。バブルソートは一つとなりと比べては入れ替える、という処理を繰り返していく方法です。
隣同士のうち、大きい方が前に並ぶように入れ替えていくと、結果的に全体が降順で並びます。逆に小さいほうが前に並ぶようにすると昇順となります。

例:「1・5・7・3・9」の5枚のカードをバブルソートで降順に並び替える。

  1. 要素[1]と[2]を比較して、大きい方が前になるように入れ替える。
  2. 続いて[2]と[3]、[3]と[4]、[4]と[5]の順に比較と入れ替えを行う。
    この時点で、要素[5]が最小値になるので、要素[5]の位置が確定する。
  3. 要素[1]~[4]について、同様に比較と入れ替えを繰り返し、各要素の位置を確定する。
バブルソートの計算量

n個の要素をバブルソートで整列する時の比較の回数は、 ( n ( n - 1 ) ) ÷ 2 であり、n の2乗に比例します。。
オーダ記号で表すと、O(n2) となります。

選択ソート

選択ソートは、最小値の要素を選択して、先頭の要素と置き換える整列アルゴリズムで、基本選択法ともいいます。
処理効率は、バブルソートと変わらず、計算量はO(n2) となります。

例:「1・5・7・3・9」の5枚のカードを選択ソートで昇順に並び替える。

  1. 要素[1]~[5]の値を調べて、最小値を求める。
  2. 1.で求めた最小値を先頭の要素と交換する。
  3. 残りの要素について、1と2を繰り返す。

挿入ソート

挿入ソートは、前の方の整列済みの並びの途中へ、直後の要素を挿入する整列アルゴリズムで、基本挿入法ともいいます。
計算量はO(n2) となります。

例:「1・5・7・3・9」の5枚のカードを挿入ソートで昇順に並び替える。

  1. 先頭の要素を1要素だけの整列済みの並びと見立てる。
  2. 整列済みの並びの要素と、その直後の要素を比較して、バブルソートと同じ要領で並び替えを行う。
  3. 最後の要素を処理するまで、2を繰り返す。

マージソート

マージソートは、並びを2等分しながら、分割された部分同士を併合(マージ)することによって、全体を整列させるアルゴリズムです。

例:「2・7・5・3・8・1・4・6」の8枚のカードをマージソートで昇順に並び替える。

  1. 並びを2等分することを、整列済みの部分並びが見つかるまで反復する。(要素が1つになれば整列済みとみなすので、反復は必ず終了する。)
  2. 整列済みの部分並び同士を、整列状態を保つように併合して、1つの部分並びにする。
  3. 全体が1つの部分並びになるまで、2を反復する。

シェルソート

シェルソートは、シェル氏によって考案された挿入ソートの改良版の整列アルゴリズムです。

  1. 適当な間隔を決めて、等間隔の飛び飛びの要素で作った部分的な並びに対して挿入ソートを適用する。
  2. 間隔を狭めながら、間隔が1になるまで1を繰り返す。

例:「2・7・5・3・8・1・4・6」の8枚のカードをシェルソートで昇順に並び替える。

挿入ソートは、元々の並びが整列状態に近いほど高速になる性質があるため、間隔を空けて部分的な並びを作って徐々に整列させることで速度の向上を図っています。

クイックソート

クイックソートはその名の通り、特に高速な整列アルゴリズムです。

  1. 適当な基準値を定めて、その値より小さい要素を前の方に移し、その値以上の要素を後の方へ移す。
  2. 分割したそれぞれのグループへ、1の処理を反復して、全てのグループに属する要素数が1になるまで繰り返す。

例:「9・2・7・5・3・8・1・4・6」の9枚のカードをクイックソートで昇順に並び替える。

反復する毎に、分割されたグループの数は2倍、4倍、8倍というペースで増えていくので、各グループに含まれる要素の数は急激に減っていきます。
基準値と要素の値を比較する回数が急速に減っていくことが、クイックソートが特に高速である理由です。

ヒープソート

ヒープソートは、ヒープを経由する整列アルゴリズムです。

ヒープは「小さい山」という意味の言葉であり、親の値が必ず子の値以上であることを保つ二分木です。

  1. 要素の並びを元にして、ヒープを構築します。子の処理には、木構造アルゴリズムの一種である、ヒープ構築アルゴリズムを用います。
  2. 根に当たる要素を取り出して、並びの端へ移します。
  3. ヒープに残った要素に対して、ヒープ再構築アルゴリズムを適用します。
  4. 2と3をヒープの要素がなくなるまで繰り返します。

例:「2・7・5・3・1・4・6」の7枚のカードをヒープソートで降順に並び替える。

二分木は木の階層ごとに、部分木の数が2倍、4倍、8倍と増えていきます。値の大小比較の回数は2つの部分木の根を比較するだけなので、ヒープソートは特に高速とされています。

 

探索、併合、再帰-代表的なアルゴリズム2

この記事での学習内容 ITパスポート 基本情報 応用情報

探索、併合のアルゴリズムを理解する。
再帰的アルゴリズムの考え方、特徴、実現に適したデータ構造を理解する。

用語例:線形探索法、二分探索法、ハッシュ表探索法、シノニム対策

探索

「探索」とは配列などに格納されたデータの集まりから、特定のデータを探すことです。その値が見つかる場合と、見つからない場合があり、複数ある場合には最初の一つを見つければ良い場合と、全てを見つける必要がある場合があります。

つまり、探索の結果も見つかったかどうかだけではなく、何番目に見つかったか、いくつあったか、という情報を帰す場合があります。

線形探索法(リニアサーチ)

線形探索法とは、配列の先頭から1つずつ調べてゆき、求めるデータが見つかるか、又は配列の最後まで探し終わったとき探索を終了する方法です。

以下に、線形探索法の場合の流れ図を示します。ここでは、4つの数が入った配列の中から、「5」を探すものとします。

探索する数「5」を変数 x とし、探索対象の数を n [ i ] と表します。
先頭の n [ i ] から順に x と比較していき、同じものが見つかったら、その添字 i を表示して探索を終了、最後まで探して見つからなかった場合は、「無し」と表示して終了します。

なお、線形探索法を行なった場合の探索回数は以下の通りとなり、オーダ記号で表すと O(n) となります。(データは n 個とする)

  • 最小探索回数: 1回
  • 最大探索回数: n回
  • 平均探索回数: (n+1)÷2回

番兵を使った線形探索法

線形探索をより簡単にするために、配列の最後に「番兵」と呼ばれるデータを追加する方法があります。

探すデータと同じ値を、配列の最後尾の次に追加しておくことで、反復の終了条件として、添字の範囲を毎回チェックする必要がなくなります。

但し、配列を拡張できないケースではこの方法は使用できません。

二分探索法

二分探索法は、整列済みのデータの並びを二等分しながら、目的のデータを探す探索アルゴリズムです。

例えば、昇順に整列済みの配列であれば、以下のような流れとなります。

  1. 並び全体の中央のデータと目的のデータを比較する。一致すれば終了。
  2. 目的のデータが中央のデータより小さければ、前半の部分並びにを対象にして、大きければ後半の部分並びを対象にして、1を繰り返す。
  3. 最終的に部分並びの要素が1つになったら、見つからなかったことになる。

なお、二分探索法を行なった場合の探索回数は以下の通りとなり、オーダ記号で表すと O(log2n) となります。(データは n 個とする)

  • 最小探索回数: 1回
  • 最大探索回数: ( log2n)+1回
  • 平均探索回数:  log2n 回

例えば、要素の数が65,536個(216)であった場合、線形探索法なら、最大で65,536回、平均でも32,768回かかります。
対して、二分探索法の場合、比較を行うたびに、部分並びの数が、216、215、214、・・・22、21、20 と減っていき、最大でも17回で済みますので、二分探索法の方がはるかに高速なアルゴリズムです。

ハッシュ表探索

ハッシュ表探索法は、データの格納位置をデータの値から決めることで、目的のデータを直接得られる方法です。
ハッシュ表という配列の複数の要素に、探索対象の部分並びを所属させておき、目的のデータの値に対してある種の計算を行い、一つの部分並びだけを探索対象として選択する探索アルゴリズムです。

例えば、目的のデータを100で割った余りは、必ず0~99の数になります。この値を100個の要素の配列の索引として、一つの部分並びを選択することが出来ます。
この例の「目的のデータを100で割った余り」といったような、目的のデータを範囲内の値に換算する関数のことを「ハッシュ関数」といいます。

ハッシュ表探索では、最初の1回目の検索で多くの部分並びの中から1つを選択することで、初めの時期の検索回数を減らしています。

ハッシュ関数と衝突

ハッシュ関数を適用した結果、値が重複してしまうことを衝突(シノニム)といいます。

ハッシュ表を使う場合、ハッシュ関数を検討する際に極力シノニムが発生しないようにすることも重要ですが、余りハッシュ表を大きくすると無駄も多いので、シノニム発生時の対処法もあわせて検討しておく必要があります。
例えば、データの件数が1万件だからといって、1万件のハッシュ表を作るのでは、メモリをムダに消費してしまいます。

シノニム対策としては、以下のようなパターンが主流です。

  • ハッシュ表の隣接する要素を使う。
  • シノニム用の領域を別途用意する。

併合のアルゴリズム

併合のアルゴリズムは、二つの整列済みのデータの並びを一つの整列されたデータの並びにするアルゴリズムです。

  1. 二つの配列のそれぞれ先頭の要素を比較して、値の小さい要素を併合先の配列の先頭に移す。
  2. 残りの配列について、それぞれの配列の最後の要素を移し終わるまで1の処理を繰り返す。

再帰のアルゴリズム(リカーシブ)

再帰とは、定義自身の一部にその定義が含まれるという性質です。

再帰のアルゴリズムは、反復を含むアルゴリズムと似ていますが、それよりも簡潔になります。

例えば、1からnまでの自然数の和を表す関数を f( n ) とします。
・n=1のときは、f(1) は値として「1」を返す。
・n>1のときは、f( n )は値として「n+f( n-1 )」を返す。

この関数を使って、1から4までの和を計算する場合、以下のように再帰が進行していきます。

f(4) = 4+f(3)
 =4+3+f(2)
 =4+3+2+f(1)
 =4+3+2+1
 =10

再帰のアルゴリズムは、これまでに紹介した整列や探索のアルゴリズム(マージソート、クイックソート、二分探索法)でも活用されているアルゴリズムです。

グラフのアルゴリズム-代表的なアルゴリズム3

この記事での学習内容 基本情報 応用情報

グラフのアルゴリズムを理解する。

用語例:深さ優先探索、幅優先探索、最短経路探索

グラフのアルゴリズム

グラフは節(ノード)とそれらを連結する結線(リンク)で結ばれた一つの図です。通信網、木構造、あるいは流れ図がその例です。(木構造の場合は、結線のことを枝とも呼ぶ)

これらのグラフを扱うアルゴリズムをグラフのアルゴリズムといいます。

木の巡回法(再掲)

木構造からデータを探して読み出すことを「木の巡回」といいます。二分木の巡回法には幅優先探索と深さ優先探索があります。

木の幅優先探索

幅優先探索は、階層が浅いデータを優先して検索する方法です。

幅優先探索を行うと、最初に子のデータを読み出します。子のデータが検索したデータでない場合は、1階層目の節や葉のデータを左から右へと順番に読み出していきます。1階層目のデータが検索したデータでない場合は、次は2階層目と進んでいく、という方法です。

木の深さ優先探索

深さ優先探索は、左部分木を優先して、階層が下のデータを先に読み出す方法です。

葉以外の節のデータと、葉のデータを読み出す順番の違いにより、先行順探索、中間順探索、後行順探索の3種類があります。

先行順探索

先行順は、節、左部分木、右部分木の順番で読み出す方法です。

右の図を例にとって説明すると、最初の節である根のデータ1を読み出し、次に左部分木の節のデータ2を読み出します。
その次は2階層目の左部分木のデータ3を読み出します。
3階層目はないので、2階層目の右部分木のデータ4を読み出します。

中間順探索

中間順は、左部分木、節、右部分木の順番で読み出す方法です。

右の図を例にとって説明すると。根から始めて2階層目の左部分木で左部分旗がなくなるので、データ1を読み出します。
次に、上の階層に戻ってデータ2を読み出します。
その次に2階層目の右部分木のデータ3を読み出します。
2階層目の読み出しが終わると、次は根のデータ4を読み出します。

後行順探索

後行順は、左部分木、右部分木、節の順番で読み出す方法です。

右の図を例にとって説明すると、根から始めて2階層目の左部分木で左部分旗がなくなるので、データ1を読み出します。
次は2階層目の右部分木のデータ2を読み出します。
その次は、上の階層に戻ってデータ3を読み出します。
その次は、1階層目の右部分木ですが、そこからは左部分木が出ているので、左部分木のデータ4を読み出します。

最短経路探索

最短経路とは、グラフのある出発点の節から終着点の節へ到達するのに、結線ごとに要する時間や距離の合計が最短である結線の並びです。この最短経路をたどることを「最短経路探索」といいます。
結線ごとに要する時間や距離を総称して「コスト」といいます。

例:ダイクストラのアルゴリズム

  1. 出発点から各説へのコストの表は、出発点の節だけゼロとし、それ以外の節へのコストは初期値として無限大とする。
  2. 出発点の節から、結線の一つをたどって、節のデータを調べる。
    1. その節へのコストの記録が、今回の経路のコストより大きいなら、今回の経路のほうが短いので、今回の経路のコストを記録し、直前の節の記号をその節に関するデータとして記録する。(その節へのコストが初期値の無限大だったのなら必ずこちらの処理)
    2. その節へのコストの記録が、今回の経路のコスト以下なら、今回の結線は最短経路に含まれないので、それ以降の処理対象から除外する印を記録する。
  3. 以上の処理を、処理していない結線について反復する。
  4. すべての処理が終わったら、終着点の節から最短のコストを回答する。また、直前の節を次々と逆行して、出発点から終着点までの節の順序を経路として回答する。

 

文字列処理のアルゴリズム-代表的なアルゴリズム4

この記事での学習内容 基本情報 応用情報

文字列処理のアルゴリズムを理解する。

用語例:文字列照合、KMP法(クヌース・モリス・プラット法)、BM法(ボイヤ・ムーア法)

文字列処理のアルゴリズム

文字列処理のアルゴリズムは、一連の文字の並びを処理するアルゴリズムです。

  • 連結: 一つの文字列の後へ別の文字列を追加して、一つの文字列にします。
  • 挿入: 文字列の途中に別の文字列を挿入して、一つの文字列にします。
  • 削除: 文字列の一部の文字を取り除いて、残りを一連の文字列にします。
  • 照合: 文字列が別の文字列の中に含まれるか、有無を調べて位置を特定します。

順次探索法

  1. 対象の文字列の先頭の文字から、特定の文字列を一文字ずつ照合する。
    すべての文字が一致したら、全体の処理を終了して対象の文字列の位置を返す。
  2. 対象の文字列の1文字後ろから1の処理を反復する。対象の文字列の最後を越えたら、探索失敗として終了する。

ボイヤ・ムーア法(BM法)

ボイヤとムーアによって考案された、高速の文字列照合アルゴリズムです。特定の文字列の後尾から前の方へ照合することと、一致しない場合には、複数の文字をスキップすることが特徴です。

  1. 特定の文字列を前処理して、「特定の文字が何文字目に出現するかを表す表」「一致した文字のパターンと、その場合にスキップしていい文字数を対応付ける表」の2表を作成する。
  2. 対象の文字列の先頭部分を特定の文字列の後尾から前方向へ、文字の比較をすすめる。
    一致したら全体の処理を終了して、対象の文字列の位置を返す。
  3. 一致しなかったら、比較時に得られた情報と1で作った表を元にして、文字をスキップし、2の処理に戻る。

 

ファイル処理のアルゴリズム-代表的なアルゴリズム5

この記事での学習内容 基本情報 応用情報

バッチ処理などで使用される整列処理、併合処理、コントロールブレイク処理、編集処理のアルゴリズムを理解する。

ファイル処理のアルゴリズム

ファイル処理とは、入力装置や外部記憶装置から読み取ったファイルを処理することです。処理対象のデータが主記憶装置の中にないため、以下のような手順が基本となります。

  1. 前処理: ファイルを開き、内容を主記憶装置の中に展開します。
  2. 主処理: 開いたファイルに対して、1レコードずつ所定の処理を行います。
  3. 後処理: ファイルを閉じます。

なお、ここでいうファイルは以下の定義となります。

  • レコード: 型の異なる幾つかの項目(=フィールド)を持つ
  • ファイル: 同じフィールドを持つレコードの集まり

ファイルの性質として、データ件数が膨大になることがあるため、ハードディスクなどの外部記憶装置に作業ファイルを作成し、中間結果を一時退避しながら処理をすすめることもある。その場合、外部記憶装置に十分な空き容量が必要となる。

ファイルの併合処理

ファイルの併合処理は、二つの整列済みのレコードの並びで構成されるファイルを、一つの整列されたレコードのファイルにする処理です。

例:ファイルAとBから、ファイルCを作成する

  1. 前処理: ファイルA、B、Cをそれぞれ開く。
  2. 主処理: ファイルA、Bを1レコードずつ読み込み、値の小さい方のレコードをファイルCに出力し、出力した方のファイルの次のレコードを読み込む。
    これを両ファイルの終端まで繰り返す。
  3. 後処理: ファイルA、B、Cをそれぞれ閉じる。

コントロールブレイク処理

コントロールブレイクとは、同じキー値を持つレコード軍の切れ目のことです。

コントロールブレイク処理とは、コントロールブレイクに出会ったらそのレコード群の処理を終了し、複数のレコード群の処理を反復することです。レコード群の中のレコードごとの処理の反復とあわせて、二重の反復になります。

例:社員の給与の部署ごとの合計

  1. 社員の給与一覧ファイルをあらかじめ部署で整列
  2. 部署が同じである間、社員毎の給与を計算用変数に加算していく。
  3. 違い部署コードが出現したら「コントロールブレイク」
    部署名と計算用変数の値を中間ファイルに出力し、計算用変数0で初期化。
  4. 2と3をファイルの終端まで繰り返す。
  5. ファイル終端まで来たら、部署名と計算用変数の値を中間ファイルに出力。中間ファイルの内容を処理の最終結果として書き出す。

ファイルの編集処理

ファイルの編集処理は、既存のファイルのデータを修正する処理です。

  1. 前処理: マスターファイルM、トランザクションファイルT、新マスターファイルNを開く。
  2. 主処理: ファイルMとファイルTからから1レコードずつ読み込み、キー値を比較して以下の処理を行う。これをファイル終端まで繰り返す。
    1. Tのキー値=Mのキー値なら、ファイルTのレコードをファイルNに出力し、ファイルMとファイルTの次のレコードを読み込む。(データの更新)
    2. Tのキー値>Mのキー値なら、ファイルMのレコードをファイルNに出力し、ファイルMの次のレコードを読み込む。
    3. Tのキー値<Mのキー値なら、ファイルTのレコードをファイルNに出力し、ファイルTの次のレコードを読み込む。(レコードの追加)
  3. 後処理: ファイルM、ファイルT、ファイルNを閉じる。

アルゴリズム設計

この記事での学習内容 基本情報 応用情報

アルゴリズムは、擬似言語、流れ図、決定表(デシジョンテーブル)などを用いて表現することを理解する。また。アルゴリズムの設計方法を理解する。

用語例:再帰、分割統治法

アルゴリズム設計

アルゴリズムとは、目的にたどり着くための道筋や処理の手順のことです。アルゴリズムを考える、設計する目的は、単に問題を解く方法を見つけるだけではなく、より効率的に、より速く、より簡単に問題を解くアルゴリズムを探す事が重要です。

同じ結果を出すための処理であっても、そのアルゴリズムが異なると、処理にかかる時間や、必要となるメモリの容量などが異なってきます。効率の良いアルゴリズムほど、処理時間が短くなり、メモリの消費量が少なく済むものなのです。

アルゴリズムの表現

プログラムを設計するときには、アルゴリズムを何らかの形式で表現します。

アルゴリズムの表現には、流れ図(フローチャート)、擬似言語、決定表(デシジョンテーブル)などの表現があります。

擬似言語

擬似言語は、人間が用いる自然言語とプログラム言語を混合した言語です。

アルゴリズムをできるだけ人間向きに自然言語で表現しつつ、反復や選択のように微妙な部分にプログラム言語を混用したりします。

プログラム言語と同様にテキストエディタで描くことが出来、図形を用いた表現に比べて修正が容易なのが特徴です。

テキストのみで表現した例

if a[mi] が a[i] より小なら then
   a[mi] と a[i] の値を交換する

図形処理の発達に伴い、情報処理技術者試験の分野では、以下のような簡易な図記号を混用したものを擬似言語と称しています。
(実際に情報処理技術者試験で使われたものを紹介します。)

擬似言語の仕様の例
実際に出題された擬似言語の記述例

決定表(デシジョンテーブル)

決定表(デシジョンテーブル)は、条件とその条件に対する処理の関係を4つの部分からなる表にして表現する技法です。

  1. 条件表題欄: 問題を処理するための条件を表します。
  2. 行動表題欄: 条件によって取りうる行動を表します。
  3. 条件記入欄: 条件表題欄の各条件について、当てはまる場合は[Y]、当てはまらない場合は[N]と記載します。条件判断を必要としない場合は[-]と記載します。
  4. 行動記入欄: 行動表題欄の各行動について、当てはまる場合に[X]と記載します。当てはまらない場合は空欄か[-]と記載します。

大きなプログラムの場合、「行動」の単位で「サブルーチン」化することがよく行われています。(=後述:分割統治法)

また、決定表を作成するときは、取りうる条件の組み合わせを網羅し、なおかつ全てのパターンに対して、必要な処理が行われるように設計することが重要です。

分割統治法

分割統治法とは、大きな問題を小さな問題に分割して、それぞれの問題ごとに解決に集中する方法です。

再帰のアルゴリズム、モジュール分割、オブジェクト指向設計などが分割統治法の具体的な例です。

また、ソートのアルゴリズムの中でも、マージソートやクイックソートは分割統治法に基づいて設計がなされています。

例えば、1からnまでの自然数の和を求めるアルゴリズムの場合、分割統治法を使わない場合と使った場合とでは、以下のように違った流れ図となります。

プログラミング(概要)

情報処理技術者試験での学習内容

【基本情報・応用情報】
・プログラミング作法、コーディング基準を習得し、応用する。
・プログラム言語の文法の表記法を習得し、応用する。

【ITパスポート】
・プログラム言語とプログラミングの役割を理解する。

(1)プログラミング

1.プログラミング作法とコーディング基準 ITパスポート 基本情報 応用情報

プログラミング作法とコーディング基準の目的、効果、種類を理解する。また、プログラミング作法とコーディング基準を守らない場合に起こる弊害を理解する。

用語例:字下げ(インデンテーション)、ネストの深さ、命名基準、仕様禁止命令、プログラムの機能性・効率性・使用性・保守性の向上

2.プログラム構造 基本情報 応用情報

プログラムの信頼性、保守性の観点からプログラム構造を理解する。

用語例:モジュール分割、独立性、メインルーチン、サブルーチン、DLL

3.データ型 基本情報 応用情報

プログラム言語で使用される代表的なデータ型を理解する。

用語例:整数型、実数型、論理型、文字型、抽象データ型、構造型

4.Webプログラミング 基本情報 応用情報

WebサーバとWebクライアントの仕組みを理解し、Webサーバ、Webクライアントにおけるプログラムの役割と作成方法、Webアプリケーションプログラムを開発する環境を理解する。

用語例:サーバサイドプログラミング、リッチクライアント、Ajax、Apache、JSP(Java Server Pages)、HTML5技術(canvas、WebSocket、Geolocation APIほか)

(2)文法の表記法 基本情報 応用情報

プログラム言語の構文を定義するために、BNF等のメタ言語を使用することを理解する。

用語例:EBNF(拡張バッカス記法:Extended Backus Naur Form)

 

プログラミング作法とコーディング基準

この記事での学習内容 ITパスポート 基本情報 応用情報

プログラミング作法とコーディング基準の目的、効果、種類を理解する。また、プログラミング作法とコーディング基準を守らない場合に起こる弊害を理解する。

用語例:字下げ(インデンテーション)、ネストの深さ、命名基準、仕様禁止命令、プログラムの機能性・効率性・使用性・保守性の向上

プログラミング

プログラミングは、コンピュータを使って実行する作業手順を、前もって作っておく作業です。プログラムとは、コンピュータ用の作業手順書を、コンピュータに分かることが出書き出したもの、といえます。

人間が何かの仕事をこなすときは、まず段取りを考えて計画を立て、それに従って実際に仕事を進めます。これと同じように、コンピュータに仕事をさせるための段取りを書いたものがプログラムであり、プログラムを作成する作業がプログラミングです。コンピュータはプログラムに従って運用を行います。

プログラミング作法とコーディング基準の目的・効果

プログラミング作法は、プログラムを読む人にとって適切であろうと、一般的に指示された流儀のことです。対して、コーディング基準とは、チームや組織が定めたプログラムの書き方の基準です。いずれもプログラムの保守性を改善することが目的であり、読む人の労力や読み間違いを減らす効果があります。

同じ処理をするプログラムであっても、書き方の流儀や個人差が発生してしまいます。例えば、C言語で「変数aに1を加算する」という処理でも、以下のように異なる書き方が可能です。

  •  a++
  •  a = a + 1

専門家の間では、前者のほうが簡潔で、読み間違いが少ないとして支持されている、というのがプログラミング作法の例です。

また、コーディング基準は以下のような事項に関して定められることが多いです。

インデンテーション文の書き出し位置のインデンテーション(字下げ)の指針。
ネスト(入れ子)データ構造や制御構造の階層状態。ネストの深さを規制。
命名基準変数やモジュールの名前の付け方の指針。
使用禁止命令使用を推奨しない命令。(Goto文の禁止など)

インデンテーション

インデンテーション(字下げ)とは、プログラムの文の書き出し位置を、何文字分か右の方へ下げることです。これは、一般的なビジネス文書でも当てはまる事柄で、文章を読む時の人間の視線が左から右、上から下と流れることを踏まえたものです。

プログラムのインデンテーションは、例えば次のようにします。

  1. データ構造のネストを字下げで表す。
  2. 反復や選択などの制御構造のネストを字下げで表す。
  3. ラベルよりそれ以外の部分を字下げする。
  4. 字下げは半角文字4文字分ずつとする。
インデンテーションの例

label1:
    i=0;
    repeat
        a=b+c;
        ~~

このような字下げは、処理には関係ない表現なので、人間にとっての読みやすさを目的として、コーディング基準で規定するのが一般的です。

ネスト

データ構造や制御構造の階層状態をネスト(入れ子)といいます。ネストが深すぎると人間は把握することが難しくなります。

例えば、コーディング基準でネストの深さを4までに規制します。それを越えようとする場合は、一部を他のモジュール呼び出しや関数参照にしてネストが深くなるのを回避します。

命名基準

命名基準とは、変数、モジュール、関数、ラベルなどの名前の付け方の指針です。以下に、命名基準の例を示します。

  1. 元になっている業務や学術の用語と一致する名前を用いる。
  2. 配列の索引には、i,j,kを用いる。
  3. カウンタにはn,mを用いる。
  4. 長さを表す変数には、l,mを用いる。
  5. ポインタ変数には、p,qを用いる。
  6. 合計には、sを用いる。
  7. 一時的な変数には、t,wを用いる。

使用禁止命令

使用禁止命令とは、仕様が推奨されていない命令や文のことです。

例えば、goto文を禁止して、代わりに反復や選択の文で代替するほうが、読み手には読みやすくなります。

プログラム構造

この記事での学習内容 基本情報 応用情報

プログラムの信頼性、保守性の観点からプログラム構造を理解する。

用語例:モジュール分割、独立性、メインルーチン、サブルーチン、DLL

プログラム構造

一つのプログラムは、いくつかの要素で構成されます。複数の要素で構成されるプログラムの形を、プログラム構造といいます。

モジュール

一つのプログラムを構成する要素を「モジュール」といいます。モジュールは、メインルーチン、サブルーチン、コンパイル単位などを総称する一般的な用語です。

モジュール構成にすることで、次のような効果が生まれます。

  • 人間の行っている作業の分解単位にモジュールを対応させることによって、わかりやすくなります。例えば、ATMを例に取ると、預入モジュール、引出しモジュール、残高照会モジュールといった対応をさせます。
  • 共通部分を「共通モジュール」とすることによって、プログラム全体の規模を減らすことが出来ます。
  • 分割統治法といって、モジュール単位に分割することで、モジュールごとの設計や試験、保守に集中することが出来ます。

メインルーチン

いくつかのモジュールで構成されるプログラムにおいて、最初に起動されるモジュールをメインルーチンといいます。「ルーチン」とは、「決められた仕事」という意味の言葉です。

メインルーチンの内容は、全体の処理の流れの概要を表す役割をはたすことが多いです。

サブルーチン

サブルーチンは、メインルーチンや他のサブルーチンから呼び出されるモジュールです。サブルーチンは2ヶ所以上から利用する共通ルーチンにすることが出来ます。また、別のプログラムで再利用することも出来ます。

Webプログラミング

この記事での学習内容 基本情報 応用情報

WebサーバとWebクライアントの仕組みを理解し、Webサーバ、Webクライアントにおけるプログラムの役割と作成方法、Webアプリケーションプログラムを開発する環境を理解する。

用語例:サーバサイドプログラミング、リッチクライアント、Ajax、Apache、JSP(Java Server Pages)、HTML5技術(canvas、WebSocket、Geolocation APIほか)

Webプログラミング

Webプログラミングは、WWW(ワールドワイドウェブ)を閲覧する一環として利用するプログラムのプログラミング作業です。HTMLなどのマークアップ言語の機能や部品を用いたり、プログラム言語で書かれたモジュールを呼び出したりする形でプログラミングします。

初期のWWWは、資料を世界的に共用するという、静的な表現の役割をはたすものでしたが、次第に旅行業やインターネット通販などの動的な処理をすることが出来て、現在に至っています。

Webプログラミングには、閲覧者側のクライアントコンピュータ側で動作するプログラムを作ることと、提供者側のWebサーバ側で動作するプログラムを作ることがあります。

具体的な例としては、各種の会員制Webサイトや通販サイト、インターネットバンキングなどがあります。また、スマートフォンのアプリもある種のWebプログラムと言えるでしょう。

Webプログラミングにおけるサーバの役割

Webプログラミングにおける、サーバの役割は次のようなものがあります。

  • クライアントコンピュータへ送信するコンテンツの量を減らすために、大規模な処理はサーバ側で担当する。
  • プログラム言語で書かれたモジュールをアクセスする部分をサーバ側に置く。
  • サーバ側にあるファイルやデータベースにアクセスする部分をサーバ側に置く。

その他、サーバ側のプログラムは、アクセスが集中した場合の負荷や、セキュリティなどを意識して設計・プログラミングします。

Webプログラミングにおけるクライアントの役割

Webプログラミングにおける、クライアントの役割は次のとおりです。

  • HTMLなどのマークアップ言語や、小さな部品を用いてプログラミングします。
  • 閲覧者との対話の部分を担当します。

クライアント側のプログラムは、閲覧用に提供する文章や画像のを用いて、閲覧者にとって分かりやすくて手間の掛からない操作性になるように設計・プログラミングします。

 

プログラム言語(概要)

情報処理技術者試験での学習内容

【応用情報】
・プログラム言語の種類、特徴、記述方法を修得し、応用する。
・プログラム言語の制御構造を修得し、応用する。
・プログラムの実行に必要な記憶域の考え方、利用法を修得し、応用する。
・プログラム言語が持つ構文規則、意味規則を修得し、応用する。

【基本情報】
・プログラム言語の種類、特徴、基本的な記述方法を修得し、適用する。
・C、COBOL、Java、アセンブラ言語のプログラム作成方法を修得し、適用する。
・表計算ソフトの活用方法を修得し、適用する。

【ITパスポート】
・プログラム言語とプログラミングの役割を理解する。

(1)プログラム言語の種類と特徴

1.プログラム言語の変遷と分類 ITパスポート 基本情報 応用情報

プログラム言語は、機械語、アセンブラ言語、高水準言語と発展してきたこと、プログラム言語の分類を理解する。

用語例:手続型言語、関数型言語、論理型言語、オブジェクト指向言語、スクリプト言語

2.手続型言語 基本情報 応用情報

代表的な手続き型言語の特徴、記述方法を理解する。

用語例:Fortran、COBOL、PL/Ⅰ、Pascal、BASIC、C

3.オブジェクト指向言語 基本情報 応用情報

代表的なオブジェクト言語指向言語の特徴、記述方法を理解する。

用語例:Java、C++

4.スクリプト言語 基本情報 応用情報

代表的なスクリプト言語の特徴、記述方法を理解する。

用語例:ECMAScript、Perl、PHP、Python、Ruby

5.共通言語基盤(CLI:Common Language Infrastructure) 基本情報 応用情報

JIS X 3016(ISO/IEC 23271)で標準化されている、共通言語基盤の特徴、利用法を理解する。

用語例:共通言語基盤(CLI)

(2)プログラム言語の制御構造 応用情報

プログラム言語の基本的な制御構造、手続きと関数、逐次制御と並列制御を理解する。

用語例:連接、選択、繰り返し、手続き呼び出し、パラメータ、仮引数、実引数、値呼び出し、参照呼び出し、制御の流れ、再帰呼び出し、プロセス、疑似並列制御

(3)プログラム言語の記憶域 応用情報

プログラムの実行に必要な記憶域の考え方、利用法を理解する。

用語例:目的プログラムテキスト、定数、静的変数、自動変数、ヒープ、ガベージコレクション、ブロック、スコープ

(4)プログラム言語の記述 応用情報

プログラム言語が持つ構文規則、形式的意味論を中心とした意味規則を理解する。

用語例:プログラムの構成単位、文脈自由文法、BNF

(5)Cの知識と技術 基本情報

  • Cのプログラムの作成方法の基本を修得し、適用する。
  • 演算処理、制御処理、文字処理などを行うプログラムの作成方法を修得し、適用する。
  • ライブラリ関数の利用方法を収録し、適用する。
  • ファイル処理を行うプログラムの作成方法を修得し、適用する。

(6)COBOLの知識と技術 基本情報

  • COBOLのプログラムの作成方法の基本を修得し、適用する。
  • 演算処理、制御処理、文字処理、表操作を行うプログラムの作成方法を修得し、適用する。
  • ファイル処理を行うプログラムの作成方法を修得し、適用する。

(7)Javaの知識と技術 基本情報

  • Javaのプログラムの作成方法の基本を修得し、適用する。
  • 演算処理、制御処理などを行うプログラムの作成方法を修得し、適用する。
  • クラスの宣言方法、クラスをインスタンス化して利用する方法を修得し、適用する。
  • 継承、インタフェースを利用し、効率よくプログラミングを行う方法を修得し、適用する。
  • 例外処理、並列処理などの作成方法を修得し、適用する。

(8)アセンブラ言語(CASLⅡ)の知識と技術 基本情報

  • コンピュータシステムCOMETⅡの仕様を理解する。
  • CASLⅡのプログラムの作成方法の基本を修得し、適用する。
  • 演算処理、制御処理を行うプログラムの作成方法を修得し、適用する。
  • 表を使った処理、入出力処理を行うプログラムの作成方法を修得し、適用する。
  • スタック、およびスタックを用いたサブルーチンコールの仕組みと用法を修得し、適用する。

(9)表計算ソフト 基本情報

  • 表計算ソフトが持つ計算、集計などの機能を修得し、適用する。
  • 関数の種類、使い方を修得し、適用する。
  • マクロの作成方法を修得し、適用する。
  • 業務処理における表計算ソフトの活用方法を修得し、適用する。

 

プログラム言語の分類と概要

この記事での学習内容 ITパスポート 基本情報 応用情報

プログラム言語は、機械語、アセンブラ言語、高水準言語と発展してきたこと、プログラム言語の分類を理解する。

用語例:手続型言語、関数型言語、論理型言語、オブジェクト指向言語、スクリプト言語

プログラム言語

コンピュータに処理をさせるには、処理の手順を司令として与える必要があります。この指示書をプログラムといい、プログラム言語によって書かれています。

以下に、代表的なプログラミング言語をいくつか紹介します。なお、「基本情報」アイコンがついているものは、基本情報技術者試験の午後の問題で出題されるプログラム言語です。

C  基本情報
パソコンやワークステーションのアプリケーションソフト、デジタル家電やIoT機器など、いわゆる「組み込み系」の開発で用い要られています。
C++
C言語をベースとして、オブジェクト指向の概念を取り入れた言語です。UNIXやLinuxのサーバ内部のプログラムや、Windowsアプリケーションで用いられています。
COBOL  基本情報
10進数の扱いを得意とするプログラミング言語で、金融分野などの汎用コンピュータで利用されている、事務処理用のプログラム言語です。
Java 基本情報
C++をベースとして開発され、インターネット環境などで利用される言語です。「Java仮想マシン」という仕組みを使い、OSや機種といったプラットフォームの違いにかかわらず動作できるという特徴があります。
Visual Basic
GUI環境でのWindowsアプリケーションソフト開発に用いられる言語です。
C#
主にWindowsアプリケーションソフト開発に用いられる言語です。.Net Frameworkという、共通言語基盤(CLI)上で動作するプログラム言語です。
Fortran
主に科学技術系の計算処理で用いられるプログラム言語です。

機械語と言語プロセッサ

コンピュータが直接理解できる命令は、2進数で表現された機械語です。しかし、機械語は機種によって異なり、かつ機械語は人の手で記述するのは難しいので、より人間の言葉に近いプログラム言語で記述したもの(ソースコード)を機械語に翻訳してから動作させます。

このソースコードを機械語に翻訳する機能を「言語プロセッサ」といいます。翻訳の方法には、機械語と1対1に対応する疑似命令を機械語に変更する「アセンブラ」、ソースコード全文を一括で機械語に翻訳する「コンパイラ」、1行ずつ逐次翻訳しながらプログラムを実行する「インタプリタ」があります。

コンパイラ

コンパイラは、プログラム言語で書かれたソースコードを、一括して機械語のオブジェクトやプログラムに作り変えるソフトウェアです。

CやCOBOL等の高水準言語はコンパイラで変換されます。

インタプリタ

ソースコードを1行ずつ解析しては機械語に変換し、実行するという動作を繰り返すもので、逐次変換ともいいます。

以前のVisual Basicはインタプリタで実行されていました。

スクリプト言語

コードを記述するだけで、コンパイルの必要なく動作させることが出来る、スクリプトと呼ばれるプログラムがあります。これを記述するプログラム言語を、スクリプト言語と言います。

代表的なものには、PerlやPHP、JavaScriptなどがあります。これらはWebページに動きを加えたり、Webサーバ上でデータを計算してWebブラウザに送るなどの機能を作る時に用いられています。

以下に、いくつかスクリプト言語の特徴を紹介します。

Perl(パール)
Perlは、テキスト処理から機能を拡大してきた、スクリプト言語です。実用性を重視していて、C言語などの各種の言語を参考にして、多様な機能を持ちます。
Perlを処理するためのソフトウェア、”perl”はフリーソフトウェアとして提供されています。 
記述されたスクリプトの提供形態は、Webページに動的な性質を持たせる、CGI(Common Gateway Interface)という機能の形をとることが多いです。
PHP(Hypertext Preprocessor)
Webページに動的な機能を持たせるためのスクリプト言語および言語処理ソフトウェアの名称です。
PHPで書かれたスクリプトはWebサーバ側でHTML形式のマークアップ言語表現に変換されるので、閲覧するクライアントコンピュータ側には、PHPのソフトウェアは必要ありません。
Python(パイソン)
オブジェクト指向型のスクリプト言語です。Perlとは対象的に、言語そのものの機能は少なめに限定されています。そのかわり、多様な標準ライブラリを提供してカバーしています。
見た目のブロック構造と、実際の制御が同じで、視覚に訴えるソースコードが強制されている言語です。
Ruby(ルビー)
日本人が発案したオブジェクト指向型のスクリプト言語です。テキスト処理や機能の多様性という性質はPerlに近く、オブジェクト指向型という点でPythonと比較されます。

 

その他の言語(概要)

情報処理技術者試験での学習内容

【応用情報・基本情報】
・代表的なマークアップ言語の種類、特徴、記述方法を修得し、応用する。
・コンピュータで使用されるその他の言語を修得し、応用する。

【ITパスポート】
・代表的なマークアップ言語の種類とその基本的な使い方を理解する。

(1)マークアップ言語 ITパスポート 基本情報 応用情報

1.HTML

Webページの作成に利用されるHTMLの特徴、基本的な記述方法を理解する。

用語例:開始タグ、終了タグ、DTD(文書型定義:Document Type Definition)、SGML

2.XML

HTMLの機能に加えて、独自にタグを定義できる機能を備え、主にインターネットを介したデータ交換に利用されているXMLの特徴、基本的な記述方法を理解する。

用語例:DOM(Document Object Model)、SOAP(Simple Object Access Protocol)、SVG(Scalable Vector Graphics)、SAX(Simple API for XML)、XML Schema

3.XHTML

HTMLをXMLで再定義したマークアップ言語であるXHTMLの特徴、基本的な記述方法を理解する。

用語例:XHTML Basic、XHTML Modulation

4.スタイルシート

HTMLやXMLなどマークアップ言語の構造と表示形式を分離するための仕様である、スタイルシートを理解する。

用語例:CSS(Cascading Style Sheets:段階スタイルシート)、XSL(Extensible Stylesheet Language:拡張可能なスタイルシート言語)

(2)その他の言語 基本情報 応用情報

オブジェクト指向設計のための表記法である、UMLやその他の言語を理解する。

用語例:クラス図、シーケンス図、オブジェクト図、コラボレーション図、ステートチャート図、操作、属性、ロール名、ユースケース図、SDL(Specification and Description Language)、ADL(Architecture Description Language:アーキテクチャ記述言語)、データ定義言語(DDL:Data Definition Language)

 

その他の言語

この記事での学習内容 ITパスポート 基本情報 応用情報

・代表的なマークアップ言語の種類、特徴、記述方法を修得し、応用する。
・コンピュータで使用されるその他の言語を修得し、応用する。

 

 HTML

HTML(HyperText Markup Language)はインターネットのWebページの記述に使われる言語です。言語といっても、プログラムを組むものではなく、文章の中に編集用の指定を織り交ぜて記述できる、マークアップ言語の一種です。

HTMLでテキスト文書を描くときには、ページの構造や書式、レイアウトに関する指定を、タグという形式で挿入することが出来ます。

HTMLで記述したテキストは、HTMLファイルとして保存します。ファイル名の末尾には、”.html”などの拡張子をつけます。

HTMLのタグ

HTML文書の基本構造は、ヘッダ部とボディ部からなります。ヘッダ部には文書のタイトルなどを、ボディ部には文書の内容を記述します。

HTMLでは、編集したいテキストの前後に”<>”で囲んだタグを挿入します。開始タグ(<タグ名>)から終了タグ(</タグ名>)までが、そのタグの有効範囲です。

タグ名概要
<html>~<html>HTML文書であることを宣言するタグ
<head>~<head>文書のヘッダ部を示す。ヘッダ部はタイトルなどを記述する場所で、本文には含まれない。
<body>~<body>文書のボディ部を示す。ボディ部は、ブラウザ上で実際にWebページとして表示される本文を記述するところ。
<img>画像を表示する。<img src="~~">のように、src属性を使って表示する画像ファイルのURLを指定する。
<a>~<a>他の文書ファイルへのリンクを示す。href属性に参照先ファイルのURLを指定する。
Webページ上で、このタグに囲まれた部分をクリックすることで、参照先に移動することが出来る。
<br>文章の改行を指定する。

タグのネスト

タグを入れ子にすると、階層的に書式を指定することが出来ます。内側のタグほど指定が優先されます。

以下に<font>というタグを使って3段階の入れ子の形で指定した例を示します。

ハイパーリンク

<a>タグや<img>タグのような、他のHTML文書や画像ファイルを参照して表示するタグを挿入すると、文書の中から関連のある別のファイルを直接開いてみることが出来るようになります。これをハイパーリンクといいます。

こういったハイパーリンクを含むテキストをハイパーテキストといいます。

ブラウザ

HTML文書を閲覧するためのソフトウェアとブラウザ(Webブラウザ)といいます。HTMLのタグが指定するレイアウトにしたがい、画像などを含む文書として表示します。

Google ChromeやInternet Explorer、Firefoxなどの製品が代表的です。

なお、HTMLの仕様は、WWWコンソーシアム(W3C)で標準化されていますが、タグの中にはブラウザ側が独自に拡張したものもあり、それらのタグをHTML文書内で使うと、表示結果がブラウザの種類によって違ってしまう場合があります。

SGML

SGML(Standard Generalized Markup Language)は論理構造を持つ文書を記述するために、ISOで制定されたマークアップ言語です。SGML文書同士の参照関係と階層構造を、文書中に定義する機能があります。

このSGMLを元にして、HTMLやXMLが作られました。

XML

XML(Extensible Markup Language)は、HTMLのような使い勝手の良さだけでなく、SGMLのような拡張性も備えたマークアップ言語です。汎用性が高く、ユーザが独自にタグを定義して使用することが出来るのが特徴です。

複雑なデータをインターネット経由で交換することが出来るため、企業間の電子商取引などに欠かせない技術となっています。

XHTML

HTMLをXMLの仕様に準拠した形で再定義したマークアップ言語です。HTMLの言語仕様が拡張によってXMLと整合しきれない部分があるのを修正したものです。

言語としてはHTMLとほぼ同じですが、改めて書式を幻覚に規定し、各ブラウザによる表示の差などを減らしました。

スタイルシート

スタイルシートは、スタイル言語で記述された文書の内容以外の様式の定義です。HTMLなどのマークアップ言語や組版系のソフトウェアとともに利用されます。

マークアップ言語や組版系のソフトウェアは、文書の内容も様式も指定できますが、スタイルシートを用いて文書の内容・構造と様式・デザインを分離することによって、作業を分業したり、保守性を向上させたり、様式・デザインを再利用したりするのに役立ちます。

CSS

CSS(Cascading Style Sheets)は、スタイルシートを記述するための代表的なスタイル言語です。

以前は、文字の色や大きさ、フォントといった見栄えに関する記述も全てHTMLで行っていました。しかし、文書構造と見栄えを分離することにより、保守性が向上し、開発も分担しやすくなります。

現在では、文書の内容はHTML、見栄えに関してはCSSで定義するのが一般的です。

XSL

XSL(Extensible Stylesheet Language)はマークアップ言語XMLに準拠したスタイル言語です。

UML(Unified Modeling Language)

その他の言語としては、UMLがあります。「言語」と名前はついていますが、他の言語とは大きく異なり、UMLはモデリング技法・表記法と考えるべきものです。

UMLはオブジェクト指向のソフトウェアを設計・開発するための統一表記法です。オブジェクト指向に基づいてシステムを図解したり、モデル化したりする際の表記法が定められています。

UMLで定義されている図解法は、大きく次の3種類にわけられます。

構造図システムの静的な構造を表すクラス図など
振る舞い図システムの動的な変化や相互作用を表すユースケース図など
実装図ソフトウェア実装時の構成や配置を表す配置図など

C言語の知識と技術(概要)

この記事での学習内容 基本情報

【基本情報】

  • Cのプログラムの作成方法の基本を修得し、適用する。
  • 演算処理、制御処理、文字処理などを行うプログラムの作成方法を修得し、適用する。
  • ライブラリ関数の利用方法を収録し、適用する。
  • ファイル処理を行うプログラムの作成方法を修得し、適用する。

1. C の基本的なプログラム

C の基本的なプログラムを作成する。

修得項目: main 関数,printf 関数,標準出力,注釈,ヘッダ など

2.数値の計算

四則演算を使ったプログラムを作成する。

修得項目:四則演算子,変数,式,整数の計算,型変換(キャスト),実数の計算,データ型のビット幅,増分演算子,減分演算子,比較演算子 など

3.選択型のプログラム

条件式を使って条件分岐するプログラムを作成する。

修得項目:等価演算子,関係演算子,論理演算子,代入演算子,if 文,switch 文 など

4.反復型のプログラム

繰返し文を使ったプログラムを作成する。

修得項目: while 文,do 文,for 文 など

5.ビット演算

ビット単位の演算子を使ったプログラムを作成する。

修得項目: 符号なし整数型,ビットシフト など

6.入力処理

標準入力を使ったプログラムを作成する。

修得項目:scanf 関数,空白類文字,アドレス演算子 など

7.配列

配列を使ったプログラムを作成する。

修得項目: 1 次元配列,2 次元配列 など

8.文字処理

文字列を処理するプログラムを作成する。

修得項目: putchar 関数,puts 関数,getchar 関数,gets 関数,文字の入出力,文字列の入出力,文字列リテラル,ナル文字 など

9.ポインタ

ポインタを使ったプログラムを作成する。

修得項目: ポインタの配列,アドレスの加減算 など

10.関数

関数を作成し,関数を使ったプログラムを作成する。

修得項目: 関数原型,void 型,再帰呼出し など

11.ライブラリ関数

ライブラリ関数を使ったプログラムを作成する。

修得項目:プリプロセッサ,#include,#define,前処理指令 など

12.記憶域クラス指定

記憶域クラス指定子を使ったプログラムを作成する。

修得項目:自動記憶域期間をもつ変数,静的記憶域期間をもつ変数,register,typedef,記憶域期間,外部定義 など

13.構造体

構造体を使ったプログラムを作成する。

修得項目:構造体の配列,自己参照する構造体,共用体 など

14.ファイル処理

ファイル処理を行うプログラムを作成する。

修得項目:シーケンシャルなファイル処理,ランダムなファイル処理,ストリーム,バッファリング など

 

 

COBOLの知識と技術(概要)

この記事での学習内容 基本情報

【基本情報】

  • COBOLのプログラムの作成方法の基本を修得し、適用する。
  • 演算処理、制御処理、文字処理、表操作を行うプログラムの作成方法を修得し、適用する。
  • ファイル処理を行うプログラムの作成方法を修得し、適用する。

1. COBOL の基本的なプログラム

COBOL の基本的なプログラムを作成する。

修得項目: 部(DIVISION),節(SECTION),見出し部,環境部,データ部,手続部,ACCEPT文,DISPLAY 文,データの構造,データ項目,データの転記,データの編集,正規法,注釈 など

2.数値の計算

四則演算を使ったプログラムを作成する。

修得項目:計算文,算術式,作業場所節 など

3.選択型のプログラム

条件式を使って条件分岐するプログラムを作成する。

修得項目:IF 文,比較演算子,正負条件,字類条件,論理演算子,入れ子になった分岐,多分岐,GO TO 文,STOP 文 など

4.反復型のプログラム

反復型の制御文を使ったプログラムを作成する。

修得項目: 回数を指定する反復実行,条件を指定する反復実行,入れ子になった反復実行,PERFORM 文 など

5.文字処理

文字処理を行うプログラムを作成する。

修得項目:文字列の部分参照,文字列の検査,文字列の置換,文字列の連結,文字列の分解 など

6.表操作

表操作を行うプログラムを作成する。

修得項目:表の概念,1 次元の表,多次元の表,指標,初期値の設定,逐次探索,非逐次探索,OCCURS 句,SEARCH 文 など

7.ファイル処理の基本

順ファイルの入出力操作を行うプログラムを作成する。

修得項目: ファイルの入出力,帳票の出力,データの集計,コントロールブレーク,マッチング など

8.ファイル処理の応用

相対ファイル,索引ファイルを使ったプログラムを作成する。

修得項目: レコードの書換え,レコードの削除,レコードの位置づけ,整列,併合 など

 

 

Javaの知識と技術(概要)

この記事での学習内容 基本情報

【基本情報】

  • Javaのプログラムの作成方法の基本を修得し、適用する。
  • 演算処理、制御処理などを行うプログラムの作成方法を修得し、適用する。
  • クラスの宣言方法、クラスをインスタンス化して利用する方法を修得し、適用する。
  • 継承、インタフェースを利用し、効率よくプログラミングを行う方法を修得し、適用する。
  • 例外処理、並列処理などの作成方法を修得し、適用する。

1. Java の基本的なプログラム

Java の基本的なプログラムを作成する。

修得項目: クラス,メソッド,main メソッド,標準出力,注釈,javadoc コメント など

2.数値の計算

四則演算を使ったプログラムを作成する。

修得項目:データ型,型変換(キャスト),変数,配列,四則演算子,式,代入演算子,比較演算子,増分演算子,減分演算子,シフト演算子 など

3.選択型のプログラム

条件式を使って条件分岐するプログラムを作成する。

修得項目:if 文,switch 文 など

4.反復型のプログラム

反復型の制御文を使ったプログラムを作成する。

修得項目: while 文,do 文,for 文,拡張for 文 など

5.クラスとインスタンス

クラスを定義し,インスタンス化して使用するプログラムを作成する。

修得項目: インスタンス変数,インスタンスメソッド,アクセス修飾子,参照型変数,隠蔽(いんぺい),コンストラクタ,オーバロード,this,クラス変数,クラスメソッド,文字列クラス,パッケージ,完全限定名,super,単純名,import 宣言,クラス修飾子 など

6.差分プログラミング

既存のクラスの機能を拡張するプログラム,インタフェースを利用して機能を追加するプログラムを作成する。

修得項目:継承,final,extends,スーパクラス,サブクラス,Object,implements,キャスト,アップキャスト,ダウンキャスト,instanceof,オーバライド,ダイナミックバインド,クラスライブラリ,抽象クラス,抽象メソッド,基底クラス,派生クラス など

7.例外処理

例外処理を行うプログラムを作成する。

修得項目:try 文,throw 文 など

8.並列処理

並列処理を行うプログラムを作成する。

修得項目: スレッド,synchronized 修飾子,wait( ),notify( ) など

9.コレクションと総称

コレクションを使ったプログラムを作成する。

修得項目: add( ),remove( ),List,Set,Map,Stack,型引数 など

10.入れ子クラス

入れ子クラスを使ったプログラムを作成する。

修得項目: メンバクラス,メンバインタフェース,局所クラス,匿名クラス など

11.列挙

列挙型を使ったプログラムを作成する。

修得項目:列挙定数,final 変数 など

 

 

アセンブラ言語(CASLⅡ)の知識と技術(概要)

この記事での学習内容 基本情報

【基本情報】

  • コンピュータシステムCOMETⅡの仕様を理解する。
  • CASLⅡのプログラムの作成方法の基本を修得し、適用する。
  • 演算処理、制御処理を行うプログラムの作成方法を修得し、適用する。
  • 表を使った処理、入出力処理を行うプログラムの作成方法を修得し、適用する。
  • スタック、およびスタックを用いたサブルーチンコールの仕組みと用法を修得し、適用する。

1. COMETⅡ

COMETⅡを構成するレジスタ,命令形式を理解する。

修得項目: GR0~GR7,SP,PR,FR,OF,SF,ZF,注釈

2.CASLⅡの基本的なプログラム

CASLⅡの基本的なプログラムを作成する。

修得項目:START,END,DS,DC,LD,ST,LAD,実効アドレス

3.算術演算,論理演算

算術演算命令,論理演算命令を使ったプログラムを作成する。

修得項目:ADDA,ADDL,SUBA,SUBL,AND,OR,XOR

4.選択と反復処理

比較演算命令,分岐命令を使って選択型,反復型のプログラムを作成する。

修得項目: CPA,CPL,JPL,JMI,JNZ,JZE,JOV,JUMP

5.シフト演算

シフト演算命令を使ったプログラムを作成する。

修得項目: SLA,SRA,SLL,SRL

6.表を使った処理

表(配列)を使ったプログラムを作成する。

修得項目:GR1~GR7,指標レジスタ

7.入出力処理

マクロ命令IN,OUT を使って入出力処理を行うプログラムを作成する。

修得項目: IN,OUT

8.スタック

スタック操作を行うプログラムを作成する。

修得項目: PUSH,POP,RPUSH,RPOP,CALL,RET

 

表計算ソフト(概要)

この記事での学習内容 基本情報

【基本情報】

  • 表計算ソフトが持つ計算、集計などの機能を修得し、適用する。
  • 関数の種類、使い方を修得し、適用する。
  • マクロの作成方法を修得し、適用する。
  • 業務処理における表計算ソフトの活用方法を修得し、適用する。

1. ワークシート

基本的なワークシートを作成する。複数のワークシート間での参照,集計を行う。

修得項目: セル,空白セル,セル番地,セル範囲,ワークシート参照,相対参照,絶対参照 など

2.式

定数,セル,演算子,関数などを組み合わせて式を作成する。

修得項目:算術式,文字式,論理式,単項演算子(+,-),算術演算子(+,-,*,/,^),比較演算子(=,≠,>,<,≧,≦) など

3.関数

関数と数値,関数とセル,関数と関数などを組み合わせて式を作成する。

修得項目:引数,関数の入れ子,合計,平均,標本標準偏差,母標準偏差,最大,最小,IF,個数,条件付個数,整数部,剰余,平方根,論理積,論理和,否定,切上げ,四捨五入,切捨て,結合,順位,乱数,表引き,垂直照合,水平照合,照合検索,照合一致,条件付合計 など

4.マクロ

変数,セル変数,配列,演算子,関数を使ってマクロを作成する。

修得項目: 変数,セル変数,絶対表現,相対表現,配列,宣言,注釈,代入,選択処理,繰返し処理 など

5.表計算ソフトの応用

会計処理,成績処理などの業務処理に表計算ソフトを適用する。具体的には,対象業務を把握し,業務処理のアルゴリズムを表計算ソフトで実装する。

 

プロセッサ

情報処理技術者試験での学習内容

【応用情報・基本情報】
・コンピュータの種類,構成を修得し,応用する。
・プロセッサの種類,アーキテクチャ,構造,方式,動作原理を修得し,応用する。
・プロセッサの性能を表す指標を修得し,応用する。
・プロセッサの高速化技術,高信頼化技術を修得し,応用する。

【ITパスポート】
・コンピュータの基本的な構成と役割を理解する。

(1)コンピュータの種類 ITパスポート 基本情報 応用情報

パーソナルコンピュータ(PC),ワークステーション,スーパコンピュータなどの特徴,用途を理解する。

用語例:デスクトップPC,ノートPC,サーバ,携帯端末(スマートフォン,タブレット端末ほか),汎用コンピュータ,制御用コンピュータ,マイクロコンピュータ

(2)コンピュータの構成 ITパスポート 基本情報 応用情報

コンピュータが五つの装置から構成されること,装置間の制御の流れ,データの流れを理解する。

用語例:演算装置,制御装置,記憶装置,入力装置,出力装置

(3)プロセッサの種類 ITパスポート 基本情報 応用情報

プロセッサの種類,それぞれの特徴,用途を理解する。

用語例:CPU,GPU,DSP

(4)プロセッサのアーキテクチャ 基本情報 応用情報

1.データ処理の単位

プロセッサのアーキテクチャによって,プロセッサが1 命令で処理するデータサイズに違いがあることを理解する。

用語例:ビット,キャラクタ,バイト,ワード

2.命令形式

1 命令で処理するオペランドの数で命令の形式を分類できることを理解する。

用語例:1 オペランド形式,2 オペランド形式

3.命令セット

プロセッサのアーキテクチャによって命令セットに違いがあること,プロセッサアーキテクチャとしてはRISC とCISC があることを理解する。

用語例:固定長命令,可変長命令

 (5)プロセッサの構造と方式 基本情報 応用情報

プロセッサを構成する制御装置と演算装置の役割,それらを構成する加算器,レジスタ,デコーダ(命令解読器,復号器)などの役割,プロセッサの能力とシステムの処理能力の関係を理解する。また,命令実行時のレジスタの動作を理解する。

用語例:アキュムレータ,補数器,乗算器,積和演算器,命令アドレスレジスタ(命令カウンタ, プログラムカウンタ, 逐次制御カウンタ), IR ( Instruction register:命令レジスタ),GR(General Register:汎用レジスタ),インデックスレジスタ( 指標レジスタ), ベースレジスタ, MAR ( Memory Address Register:メモリアドレスレジスタ),DR(Data Register:データレジスタ),MR(Memory Register:メモリレジスタ),スタックポインタ

(6)プロセッサの動作原理 基本情報 応用情報

1.演算の仕組み

AND 回路,OR 回路,NOT 回路などの基本となる論理回路の組合せによって半加算器,全加算器が実現され,演算が行われていることを理解する。

用語例:順序回路,組合せ回路,NAND 回路

2.命令とアドレッシング

代表的な機械語命令の種類,命令語の構成,命令の実行手順(命令の取出し,命令部の解読,データの取出し,命令の実行),アドレス修飾を理解する。また,機械語演算のバイナリ表現,アセンブラの記号表現との対応,相互の変換を行う方法を理解する。

用語例:算術演算命令,論理演算命令,転送命令,比較命令,分岐命令,シフト命令,入出力命令,アドレス部(オペランド),フェッチ,アドレス計算,アドレス方式,アドレス修飾,直接アドレス指定,間接アドレス指定,インデックスアドレス指定(インデックス修飾),ベースアドレス指定,相対アドレス指定,絶対アドレス指定,即値アドレス指定,有効アドレス(実効アドレス)

3.割込み

割込みの仕組み,内部割込み,外部割込みに分類される割込みの種類,多重割込み時の処理を理解する。

用語例:SVC(SuperVisor Call)割込み,入出力割込み,割込み制御,マシンチェック割込み,プログラム割込み

(7)マイクロプログラム制御 応用情報

プロセッサの動作を制御する仕組みとして,1 機械語命令を実行するためのプログラム(マイクロプログラム)をファームウェア化して内蔵する方式があること,その特徴を理解する。

用語例:マイクロプログラムメモリ,マイクロプログラムカウンタ,エミュレーション,水平型マイクロコード,垂直型マイクロコード

(8)プロセッサの性能 基本情報 応用情報

クロック周波数,CPI(Cycles Per Instruction),MIPS などの意味を理解する。

用語例:サイクルタイム,FLOPS,命令ミックス

(9)プロセッサの高速化技術 基本情報 応用情報

プロセッサの代表的な高速化技術の種類,特徴を理解する。

用語例:命令パイプライン,スーパパイプライン,スーパスカラ,VLIW,ベクトル処理方式,ハイパスカラ方式,超並列プロセッサ,パイプラインハザード,データハザード,構造ハザード,制御ハザード,シングルコアプロセッサ,マルチコアプロセッサ,マルチスレッディング

(10)並列処理 基本情報 応用情報

1.命令とデータの流れ

代表的な並列処理方式の種類,特徴を理解する。

用語例:SISD,SIMD,MISD,MIMD

2.並列処理の隘路

並列化できないため逐次処理にならざるを得ない処理として,複数のプロセッサからの主記憶装置の使用要求の競合,データベースへの同時アクセスによるロックの発生などがあること,それらの処理が能力向上を阻害する原因となることを理解する。

(11)マルチプロセッサシステム 基本情報 応用情報

複数のプロセッサを搭載し,高速化や高信頼化を実現したシステムについて,種類,特徴,仕組み,マルチプロセッサシステムを適切に組み合わせた基盤設計を理解する。

用語例:疎結合マルチプロセッサシステム,密結合マルチプロセッサシステム,タンデム結合マルチプロセッサシステム,アレイコンピュータシステム,アムダールの法則,同期, SMP(Symmetric Multi Processing:対称型マルチプロセッシング),クラスタ,トーラス,ハイパキューブ,ハイパツリー

 

コンピュータの種類

この記事での学習内容 ITパスポート 基本情報 応用情報

パーソナルコンピュータ(PC),ワークステーション,スーパコンピュータなどの特徴,用途を理解する。

用語例:デスクトップPC,ノートPC,サーバ,携帯端末(スマートフォン,タブレット端末ほか),汎用コンピュータ,制御用コンピュータ,マイクロコンピュータ

コンピュータの種類

コンピュータは、用途やサイズ、機能などによっていくつかに分けられます。

汎用コンピュータ
メインフレームとも呼ばれ、企業の基幹システムなどに用いられるコンピュータです。大量のバッチ処理やリアルタイム処理を高速に処理できます。
サーバコンピュータ
多数のクライアントに対してサービスを提供するコンピュータを総称してサーバコンピュータと呼びます。一般的にPCと比べて信頼性に優れる、高性能のコンピュータ(*)が使われます。サーバ向けコンピュータにはいくつかの形状があります。
・デスクトップ型: パソコンと同じような形状。
・タワー型: パソコンよりも筐体が大きい形状で、拡張性に優れる。
・ラックマウント型: サーバ用のラックに積み重ねて収納できる形状で、少ない設置面積で複数の機器を設置できる。
・ブレード型: 専用の母体に接続する形状で、電源や外部インタフェースを共有できる。
PC(Personal Computer:パソコン)
パソコンは、個人が使うのに適した小型のコンピュータの総称です。様々な用途に使うためのアプリケーションソフトが豊富にあるのが特徴です。
PDA(Personal Digital Assistants)
個人携帯情報端末ともいい、持ち運びに便利なように小型に設計された情報機器です。主な機能には個人スケジュールの管理や住所録の管理機能、無線LANや赤外線による通信機能、ビジネスソフトなどのアプリケーションがあります。
最近では、携帯電話が高機能化して、携帯情報端末となっているものが増えています。(スマートフォンやタブレット端末など)
*サーバ向けの高性能なコンピュータ

ここでいう「高性能」とは、CPUのクロック数やメモリの容量、といったカタログ上の「高性能」ということではなく、部品レベルでの「高信頼性」が大きい。
PCを使用していると時々「フリーズ」といったことが起こるが、サーバではそれが起こっては深刻な影響が出るため。

コンピュータの構成

この記事での学習内容 ITパスポート 基本情報 応用情報

コンピュータが五つの装置から構成されること,装置間の制御の流れ,データの流れを理解する。

用語例:演算装置,制御装置,記憶装置,入力装置,出力装置

コンピュータの5大要素

「コンピュータ」には、非常に多様な種類が存在するが、その構成要素は基本的に共通しています。一般的には、「コンピュータの五大構成要素」と呼ばれる、下記のもので構成されています。

制御装置/演算装置/記憶装置/入力装置/出力装置

 パソコンであれば、それぞれ下記の装置が、該当します。

  • 制御装置&演算装置:CPU(中央処理装置)、プロセッサとも呼ばれる。
  • 記憶装置:いわゆる『メモリ』のこと。ハードディスクやDVDドライブなどは補助記憶装置、または外部記憶装置と言われる。
  • 入力装置:キーボードやマウス、スキャナやマイクなど
  • 出力装置:モニタ、プリンタ、スピーカなど

 

プロセッサの種類とアーキテクチャ

この記事での学習内容 基本情報 応用情報

プロセッサの種類,それぞれの特徴,用途を理解する。
プロセッサのアーキテクチャによって命令セットに違いがあること,プロセッサアーキテクチャとしてはRISC とCISC があることを理解する。

用語例:CPU,GPU,DSP、ビット,キャラクタ,バイト,ワード、1 オペランド形式,2 オペランド形式、固定長命令,可変長命令

CPU

CPU(Central Processing Unit:中央処理装置)は、コンピュータの五大構成要素(制御・演算・記憶・入力・出力)のうち、もっとも重要な働きである制御と演算を行う装置です。 

CPUは人間で言えば「頭脳」にあたる役割を担うので、CPUの性能がパソコン全体の性能を左右し、高速なCPUを搭載したコンピュータほど高性能といえます。

CPUの構造

コンピュータのCPUは通常、コンピュータ本体に内蔵されたマザーボード上にある一つのLSI(Large Scale Integration)チップからなっています。

CPUは主記憶装置からプログラムを読み出して、そこに書かれた命令を解読し、演算を行い、コンピュータ上の各装置の動作を制御する働きをします。

最近のコンピュータでは、一つのCPU内に演算の実行部分(=コア)を複数持たせることで高速化した、マルチコアプロセッサも使用されています。

CPUの構造の種類

CPUの実行できる命令の集まりを「命令セット」といいます。この命令セットの構造の設計概念には、CISCとRISCの2種類があります。

 RISCCISC
命令の長さ固定可変
重視するもの高速性機能性
ハードウェアの構造単純複雑
制御方式ワイヤドロジック制御方式マイクロプログラム制御方式

RISC

RISC(Reduced Instruction Set Computer:縮小命令セットコンピュータ)は、単純な動作をする命令セットを持つCPUです。ワイヤドロジック制御方式で単純な動作をする命令セットだけを持ち、構造が単純で高速に動作します。

ワイヤドロジック制御方式

ワイヤドロジック制御方式とは、コンピュータの制御部と演算部で行われる命令の実行を、ハードウェアの物理的な結線(電子回路)だけで制御する方式です。動作が高速なのが特徴ですが、複雑な命令には適しません。

CISC

CISC(Complex Instruction Set Computer:複合命令セットコンピュータ)とは、複雑な命令セットを持つCPUです。一つの命令で複数の処理を行い、マイクロプログラム制御方式を用います。

マイクロプログラム制御方式

マイクロプログラム制御方式とは、一つの複雑な命令を実行しようとすると、あらかじめ定義しておいた複数の単純な命令の並びである「マイクロプログラム」を実行する方式です。

ハードウェアの物理的な結線(電子回路)はRISC方式より複雑になりますが、全てをワイヤドロジックにするよりは単純ですみます。機能の追加や変更をマイクロプログラムの変更で行うことが出来るのも特徴です。

RISCに比べると、速度性能は劣ります。

 

プロセッサの構造と方式

この記事での学習内容 基本情報 応用情報

プロセッサを構成する制御装置と演算装置の役割,それらを構成する加算器,レジスタ,デコーダ(命令解読器,復号器)などの役割,プロセッサの能力とシステムの処理能力の関係を理解する。また,命令実行時のレジスタの動作を理解する。

用語例:アキュムレータ,補数器,乗算器,積和演算器,命令アドレスレジスタ(命令カウンタ, プログラムカウンタ, 逐次制御カウンタ), IR ( Instruction register:命令レジスタ),GR(General Register:汎用レジスタ),インデックスレジスタ( 指標レジスタ), ベースレジスタ, MAR ( Memory Address Register:メモリアドレスレジスタ),DR(Data Register:データレジスタ),MR(Memory Register:メモリレジスタ),スタックポインタ

制御装置と演算装置の役割

コンピュータの五大機能のうち、中核となる制御と演算は、高速な中央処理装置(CPU)で行われます。LSIチップであるCPUの内部は、制御装置と演算装置とで構成されています。

演算装置は、それぞれの命令を実行する電子回路の集まりです。

制御装置は、コンピュータ全体の処理の進行を制御する電子回路です。

 

レジスタ

レジスタとは、CPUの内部に存在する高速の記憶装置です。計算入力や計算結果の一時的な保持や、周辺機器の動作状態の保持に利用されます。
大容量で相対的に低速な記憶装置の中のデータは、CPUの中の高速なレジスタへ移して処理します。
これによって処理を高速にしつつ、装置間の回路を単純にします。レジスタの動作は非常に高速ですが、容量は少量です。

レジスタは複数存在し、いくつかの種類があります。代表的なレジスタは以下の表のとおりです。

名称役割
アキュムレータ演算結果を一時的に格納するレジスタ
命令アドレスレジスタ次に実行する命令の先頭アドレスを格納するレジスタ
命令レジスタ現在実行中の命令を格納するレジスタ
汎用レジスタ様々な目的で利用することが出来るレジスタ
インデックスレジスタ
(指標レジスタ)
インデックスアドレス指定で、基準となるアドレスを格納するレジスタ
ベースレジスタベースアドレス指定で、基準となるアドレスを格納するレジスタ

命令アドレスレジスタ

命令アドレスレジスタは、制御装置の中にあるレジスタの一種であり、次に実行する記憶装置中の命令の先頭アドレスを格納するレジスタです。命令カウンタやプログラムカウンタとも呼ばれます。

通常は、一つの命令の演算が終わると、命令アドレスレジスタには次の命令の先頭アドレスが格納されます。これによって、複数の命令が並んだ順序に実行されます。

一方、プログラム言語の反復、選択、サブルーチンの呼び出しや再帰に対応する分岐命令は、分岐先の命令の先頭先アドレスを命令アドレスレジスタに格納する働きをします。

命令レジスタ

命令レジスタは、現在実行中の命令を格納するレジスタです。命令アドレスレジスタが指す記憶装置の中の命令が次々と格納されていきます。

汎用レジスタ

汎用レジスタは、演算やアドレス保持などの様々な用途を持つレジスタです。どんな用途で使うかは命令で指示します。

汎用レジスタは、電子回路を簡潔にし、プログラミングの自由度を増します。インデックスレジスタやベースレジスタを用途に含む場合もあります。

インデックスレジスタ

インデックスレジスタは、アドレスを扱うレジスタの一種です。指標レジスタともいいます。

命令に含まれるアドレス値に、レジスタに格納されているインデック値を加算する機能を持っています。

そのインデックス値は、プログラム言語の配列のインデックス値(添字)に相当するので、配列処理のプログラムが簡潔になります。

ベースレジスタ

ベースレジスタは、アドレスを扱うレジスタの一種です。命令に含まれるアドレス値に、レジスタに格納されているベース値を加算する機能を持っているのが特徴です。仕組みとしては、インデックスレジスタと変わりはなく、用途と呼称が違うだけです。

ベースレジスタの値を変えるだけで、プログラムの主記憶装置中の位置を自由に再配置したり、命令のアドレス用ビット数を節約したりする役割を果たします。

インデックスレジスタとベースレジスタの使い分け

簡単に両者の違いを言い表すならば、実行時にリロケータブルにするために、ベースアドレス方式を使い、配列要素を参照するためにインデックスアドレス方式を使う、というのが一般的な使い分け方です。

デコーダの役割

デコーダは、符号や暗号、圧縮状態に変えられていたデータを、元のデータに変換するハードウェアやソフトウェアです。

CPUの制御装置の中にある命令デコーダは、記憶装置から命令レジスタに移された命令コードを解釈して、命令の実行の準備をして、命令コードに対応する電子回路を選択する電子回路です。例えば、命令コードが「加算」を意味しているなら、演算装置の加算回路が実行されるようにします。

(参考)プログラムの再利用性に関するキーワード

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

プログラムを補助記憶装置から主記憶装置に読み込む際、主記憶のどの位置に読み込んでも実行が可能なプログラムを再配置可能なプログラムといいます。アドレス指定が、プログラムの先頭アドレスからの相対位置で表現されている必要があります。

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

主記憶に読み込まれて実行を終えたプログラムが、再度の主記憶への読み込みを行うことなく再実行できることをいいます。

再帰可能(リカーシブル)

自分自身を呼び出すことが可能なものを再帰可能なプログラムといいます。

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

1つのプログラムにおいて、複数の処理要求が来ても同時に処理できることを指します。各データが処理中に混合しないように、データの領域を処理要求の数だけ用意しています。

プロセッサの動作原理

この記事での学習内容 基本情報 応用情報

・AND 回路,OR 回路,NOT 回路などの基本となる論理回路の組合せによって半加算器,全加算器が実現され,演算が行われていることを理解する。
・代表的な機械語命令の種類,命令語の構成,命令の実行手順(命令の取出し,命令部の解読,データの取出し,命令の実行),アドレス修飾を理解する。また,機械語演算のバイナリ表現,アセンブラの記号表現との対応,相互の変換を行う方法を理解する。
・割込みの仕組み,内部割込み,外部割込みに分類される割込みの種類,多重割込み時の処理を理解する。

用語例:順序回路,組合せ回路,NAND 回路、算術演算命令,論理演算命令,転送命令,比較命令,分岐命令,シフト命令,入出力命令,アドレス部(オペランド),フェッチ,アドレス計算,アドレス方式,アドレス修飾,直接アドレス指定,間接アドレス指定,インデックスアドレス指定(インデックス修飾),ベースアドレス指定,相対アドレス指定,絶対アドレス指定,即値アドレス指定,有効アドレス(実効アドレス)、SVC(SuperVisor Call)割込み,入出力割込み,割込み制御,マシンチェック割込み,プログラム割込み

加算機

加算器は、CPUの中にある2進数を加算する電子回路です。デジタル回路によって計算装置を発明する時に、考察の中心となった電子回路です。

加算器は、最下位の桁用の一つの半加算器と、それ以上の桁用の複数の全加算器とで構成されます。

半加算器

2進数の加算の一部を担う半加算器という電子回路は、AND・OR・NOTの3種類の論理回路の組み合わせで実現できます。
桁上りの信号は2桁目の全加算器へ送ります。

なお、半加算器を実現するには、上図の例以外にも色々な電子回路の組み合わせが考えられますが、排他的論理和(XOR)回路が使えるのであれば、下記のようにXORとANDの組合せが最も簡単です。

全加算器

2進数の加算の一部を担う全加算器という電子回路は、2つの半加算器と1つのOR回路で実現できます。

下位の桁用の回路から桁上りの信号を受け取り、それ自身の桁上りの信号は上位桁用の全加算器へ送ります。

命令とアドレス指定

一つの命令の形式は、CPUの種類や命令の種類によって異なりますが、典型的な命令の形式は「命令部」と「オペランド部」で構成されます。

命令部は命令の種類を表し、オペランド部は処理する対象のアドレス(主記憶装置中の位置)を表します。

命令の実行手順

一つの命令の実行は、一般には次のような細かい段階を経て進められます。細部は命令の種類によって異なる場合もあります。

  1. 命令の読み込み:
    次に実行するべき一つの命令を、主記憶装置からCPUの命令レジスタへ読み込む。
  2. 命令の解読:
    命令の命令部を解読して、以降の処理の種類を選ぶ。
  3. アドレスの決定:
    命令のオペランド部を解読して、処理スべき主記憶装置中の位置を決定する。
  4. データの読み込み:
    主記憶装置からデータをレジスタに読み込む。
  5. 命令の実行:
    選んだ演算処理の回路が演算などの処理をする。
  6. データの書き出し:
    レジスタからデータを主記憶装置に書き出す。

アドレス指定

直接アドレス方式

命令のオペランド部の値には、処理対象のアドレスが直接示されています。

間接アドレス指定方式

間接アドレス指定方式は、命令のオペランド部が指す「主記憶装置中の値」を最終的なアドレスとする方式です。

プログラムの実行中に主記憶装置中の値を変更することによって、最終的なアドレスを変更できます。

インデックスアドレス指定方式

インデックスアドレス指定方式は、オペランド部の値にインデックスレジスタの値を加えてアドレスを決定する方式です。
プログラム言語の配列の処理に役立ちます。

ベースアドレス指定方式

ベースアドレス指定方式は、オペランド部の値にベースレジスタの値を加えてアドレスを決定する方式です。プログラムを再配置自由にしたり、アドレスを表すオペランド部のビット数を節約したりするのに役立ちます。

相対アドレス指定方式

相対アドレス指定方式は、オペランド部の相対アドレス地に命令アドレスレジスタのアドレス値を加えてアドレスを決定する方式です。プログラムを主記憶装置中の任意の位置に再配置するのに適しています。

インデックスアドレス指定方式、ベースアドレス指定方式、および相対アドレス指定方式の仕組みは同じであり、用途や呼称が異なるだけです。

割込みの仕組み

割込みは、一つのプログラムの一連の命令の実行を中断することです。割込みによって別のプログラムの一連の命令を実行した後、中断していたプログラムの実行を再開します。
複数のプログラム全体の処理効率を向上させたり、例外状態に対処したりするのに役立ちます。

割込み発生時には、CPU内のレジスタ類の内容は他の記憶場所(スタック領域)へ退避して、再開する時に元通りにします。

割込みには、実行中のプログラムが原因で行われる内部割込みと、実行中のプログラム以外が原因で行われる外部割込みとがあります。

内部割込み

内部割込みは、実行中のプログラムが原因で行われる割込みです。内部割込みには次のようなものがあります。

  • 演算結果が許容範囲を越えようとする例外状態の割込み
  • 決定したアドレスが許容範囲を越えようとする例外状態の割込み。
  • プログラムが意図的に起こす割込み。(入出力装置用のプログラムに処理を依頼する時にスーパーバイザコールという命令を実行するときなど)
SVC割込み

スーパーバイザコール(SVC)割込みは、プログラム中のスーパーバイザコール命令を実行して発生させる割込みです。

入出力装置用のプログラムに処理を依頼するときなど、プログラム自身が意図的に割込みをしたい場合に用いられます。

外部割込み

外部割込みは、実行中のプログラム以外が原因で行われる割込みです。外部割込みには次のようなものがあります。

  • 入出力処理が完了したり、入出力処理で異常が発生したりした場合の割込み。
  • そのプログラムへ割当てた単位時間が終了した時のタイマ割込。
入出力割込み

入出力割込みは、入出力処理が完了したり、入出力処理で以上が発生したりした場合に発生する割込みです。

CPUの処理は入出力装置の処理に比べてケタ違いに高速なので、CPUが単純に入出力装置の処理の完了の終了を待つのは非常に効率が悪くなります。そのため、該当のプログラムが入出力処理の完了を待っている間に、CPUは他のプログラムを並行して処理します。入出力割込みによって、元のプログラムの実行を再開します。

タイマ割込み

タイマ割込みは、そのプログラムへ割当てた単位時間が終了した時に発生する割込です。

正確なタイミングを必要とする処理や、複数のプログラムに平等に時間を割り当てて処理する場合などに用いられます。

 

プロセッサの性能

この記事での学習内容 基本情報 応用情報

クロック周波数,CPI(Cycles Per Instruction),MIPS などの意味を理解する。

用語例:サイクルタイム,FLOPS,命令ミックス

クロック周波数

コンピュータの内部には、各装置の動作のタイミングを合わせるために、一定のテンポでパルス信号を発するクロック機構があります。その信号の頻度をクロック周波数と言います。

周波数とは1秒間に繰り返す振動の数で、単位は Hz(ヘルツ)です。クロック周波数が高いほど1秒あたりの振動数が多く、かつ一つの振動にかかる1クロック時間(周期)が短いことになります。

CPUの処理速度

CPUはクロック周波数に合わせて動作します。そのため、クロック周波数はCPUの性能を表す指標の一つとして用いられます。

通常、CPUは1~数クロックごとに1命令を実行します。つまり、クロック周波数によってCPUが命令を実行するタイミングが決まります。クロック周波数が高いほどCPUが1命令を実行する時間が早まり、コンピュータの処理速度も速くなります。

現在市販されているコンピュータの多くは1~3GHz(ギガヘルツ:1GHz=10億Hz)のクロック周波数で動作するCPUを搭載しています。

なお、クロック周波数が同じCPUであっても、機種が異なると処理速度が違う場合があります。また、コンピュータの処理速度には、メモリの容量や入出力の速度などいろいろな要素が影響するため、同じCPUを搭載したコンピュータでもプログラム実行性能が必ず同じとは限りません。

MIPS

MIPS(Million Instructions Per Second:ミップス)もCPUの性能を表す指標です。MIPSは、CPUが1秒間に何百万回の命令を実行できるかを表す数です。

*1MIPS = 100万命令/秒

なお、一般的にはほとんど分岐のない命令セットを用いて計測され、CPUのピーク性能を示す指標とされています。

CPI

命令あたりの平均クロックサイクル数(=CPI:Cycle Per Instruction)も、CPUの性能を表す指標です。これは少ないほど性能が良くなります。

FLOPS

FLOPS(Floating point number Operations Per Second:フロップス)はCPUが1秒間に何回の浮動小数点数演算が出来るかを表す数です。MIPSと似ていますが、こちらは主にコンピュータの科学技術計算の性能を表すのに用いられます。特に、天文や地学などの分野のシミュレーションに使うスーパーコンピュータの性能を比較する際に用いられます。

命令ミックス

命令ミックスとは、様々な種類の命令の使用頻度を考慮して、コンピュータの性能を評価する手法で、MIPSやFLOPSよりも実態に近い指標を出そうとする手法です。

命令の種類によって実行速度が異なるので、命令の平均速度で性能を評価するのは、命令の使用頻度によって左右されますので、コンピュータの応用分野によって標準的な使用頻度を定めた命令ミックスを用いて性能を評価します。

科学記述計算用のギブソン・ミックスや、事務計算用のコマーシャル・ミックスなどがあります。

プロセッサの高速化技術

この記事での学習内容 基本情報 応用情報

プロセッサの代表的な高速化技術の種類,特徴を理解する。

用語例:命令パイプライン,スーパパイプライン,スーパスカラ,VLIW,ベクトル処理方式,ハイパスカラ方式,超並列プロセッサ,パイプラインハザード,データハザード,構造ハザード,制御ハザード,シングルコアプロセッサ,マルチコアプロセッサ,マルチスレッディング

パイプライン

 

例えば、化学工場の場合、数々の加工装置の間をパイプでつないで、次々と物質を加工していきます。それぞれの装置は同時に並行して動作することで、効率を向上させています。

コンピュータのパイプライン方式とは、一つの命令の実行が完了するのを待つことなく、「命令の読み込み」「命令の解読」「アドレスの決定」「データの読み込み」「命令の実行」「データの書き出し」などの細かな段階を、命令ごとに段階をずらして同時に並行して処理する方式です。CPUの内部でも、命令の段階で使っている機器は異なる(デコーダ、各種レジスタなどなど)ので、それを有効に活用しようとする技術です。

一つの命令の実行を段階1(S1)から段階5(S5)まで、パイプライン方式で同時並行処理すると、処理の進行は次のようになります。

この場合の性能は5倍になります。但し、命令の種類によっては段階の間に依存関係があって、完全な同時並行処理はできない場合もあります。

スーパーパイプライン

スーパーパイプライン方式は、一つの命令を実行する段階を細分化して、パイプライン処理を更に効率良く行う方法です。通常のパイプラインは4~5段階ですが、7~10段階程度の方式をスーパーパイプライン方式と呼びます。

但し、段階を増やせば、並列度は高まるが、1命令に要するクロック数はどうしても増えてしまうので、一概に段階数を増やせば良いというものでもありません。

スーパースカラ

スーパースカラ方式は、命令実行の同じ段階を同時並行処理ができる装置を複数揃える方式です。二つの装置を揃えた場合の処理の進行は以下のようになります。

この場合には、パイプライン方式に比べて、性能が2倍になります。

VLIW

超長命令語(Very Long Instruction Word:VLIW)は、複数の命令で構成されるビット数の多い命令語のことです。
超長命令語を処理できるコンピュータは、複数の命令を同時並行処理して性能を向上させます。

プログラム言語のコンパイラが、依存関係を持たないことを保証できる命令語群にできる部分を見抜いて、超長命令語に変換します。この考え方は、コンパイラの性能向上に寄与しており、より効率の良い機械語への変換を行えるようになっています。

並列処理

この記事での学習内容 基本情報 応用情報

代表的な並列処理方式の種類,特徴を理解する。

用語例:SISD,SIMD,MISD,MIMD

並列処理

並列処理とは、一つの処理を複数のプロセッサで並行して行うことです。並列処理の目的は処理効率を向上させることです。
サーバーコンピュータやそれよりも上位のコンピュータでは並列処理(マルチプロセッサ処理)はよく利用されています。

単一の処理のことをSISDといい、並列処理には SIMD、MISD、MIMDという種類があります。

  • SISD: Single Instruction Single Data
  • SIMD: Single Instruction Multiple Data
  • MISD: Multiple Instruction Single Data
  • MIMD: Multiple Instruction Multiple Data

SISD

SISD(Single Instruction Single Data)は、通常の単一の処理であり、一つの命令を一つのプロセッサで実行して、一つのデータを処理することです。

SIMD

SIMD(Single Instruction Multiple Data)は、一つの命令を複数のプロセッサで実行して、複数のデータを並行処理することです。

MISD

MISD(Multiple Instruction Single Data)は、複数の命令を複数のプロセッサで実行して、一つのデータを並行処理することです。

MIMD

MIMD(Multiple Instruction Multiple Data)は、複数の命令を複数のプロセッサで実行して、複数のデータを並行処理することです。

並列処理の隘路

並列化できないため逐次処理にならざるを得ない処理として,複数のプロセッサからの主記憶装置の使用要求の競合,データベースへの同時アクセスによるロックの発生などがあります。

これらの処理によっては、並列処理を行なっても処理能力の向上が図りにくい場合もあります。

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

この記事での学習内容 基本情報 応用情報

複数のプロセッサを搭載し,高速化や高信頼化を実現したシステムについて,種類,特徴,仕組み,マルチプロセッサシステムを適切に組み合わせた基盤設計を理解する。

用語例:疎結合マルチプロセッサシステム,密結合マルチプロセッサシステム,タンデム結合マルチプロセッサシステム,アレイコンピュータシステム,アムダールの法則,同期, SMP(Symmetric Multi Processing:対称型マルチプロセッシング),クラスタ,トーラス,ハイパキューブ,ハイパツリー

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

 

マルチプロセッサシステムは、複数のプロセッサを有する単一のコンピュータシステムです。マルチプロセッサシステムの目的は処理能力の向上や可用性の向上です。

可用性

システムの一部に障がいが発生しても、使い続けることの出来る性質。

処理効率の向上も重要な要素ですが、24時間365日稼動のシステムを構築するにあたっては、可用性の確保のためにマルチプロセッサシステムが取られていることが多くあります。

マルチプロセッサシステムには、疎結合マルチプロセッサ、密結合マルチプロセッサ、クラスタなどの種類があります。

疎結合マルチプロセッサシステム

疎結合マルチプロセッサシステムは、複数のプロセッサが通信回線を経由してデータを共有する、マルチプロセッサシステムです。

プロセッサ同士の余分な影響が少ないことや、普通のコンピュータの組合せで実現できるのが利点です。

通信回線を経由するので処理効率は劣りますが、ローカルエリアネットワークの高速化によって処理能力が向上しています。

密結合マルチプロセッサシステム

密結合マルチプロセッサシステムは、複数のプロセッサが主記憶装置を共有するマルチプロセッサシステムです。複数のプロセッサは共通バスを経由して接続されます。

始めからマルチプロセッサシステムとして設計する必要があり、プロセッサ間の独立性も低いですが、バス接続なので処理効率が良いのが特徴です。

クラスタ

クラスタは、一つのシステムとして処理を実行するひとまとまりの複数のコンピュータ群です。

疎結合マルチプロセッサや密結合マルチプロセッサはプロセッサ同士が対称的な構成ですが、クラスタは対称性は問われません。

この技術の一つの発展形が、最近のトレンドである『クラウドコンピューティング』であり『グリッドコンピューティング』です。

機能分散の意味合いを持たせる場合もあり、可用性の向上、負荷分散を狙ったものなど、色々なケースがある。単に複数のコンピュータを連携させて、一台の高性能なコンピュータであるかのように動かす、というのがクラスタ構成のポイントです。

メモリ

情報処理技術者試験での学習内容

【応用情報・基本情報】
・メモリの種類,特徴,メモリ選択の考え方を修得し,応用する。
・主記憶装置の構成,メモリシステムの構成,記憶階層など,記憶装置の仕組みを修得し,応用する。
・記録媒体の種類,特徴を修得し,応用する。

【ITパスポート】
・メモリの種類と特徴を理解する。
・記録媒体の種類と特徴を理解する。

(1)メモリの種類と特徴 ITパスポート 基本情報 応用情報

半導体の記憶回路,磁気記憶,光記憶を用いたメモリなどの種類があること,半導体メモリ(IC メモリ)の種類,特徴(揮発性,不揮発性,アクセス速度,容量,コスト,物理サイズなど),代表的な用途,システム設計におけるメモリの選択の考え方を理解する。

用語例:RAM,ROM,DRAM,SRAM,リフレッシュ,マスクROM,PROM(Programmable Read Only Memory ), EPROM ( Erasable Programmable Read Only Memory ), EEPROM(Electrically Erasable Programmable Read Only Memory),フラッシュメモリ,SDRAM(DDR2 SDRAM,DDR3 SDRAM)

(2)主記憶装置の構成 基本情報 応用情報

主記憶装置の構成,主記憶装置内のデータがアクセスされるアドレス選択動作,アクセス動作などの手順を理解する。

用語例:記憶部,アドレス選択機構,読取り書込み機構,ECC(誤り検出訂正),パリティ

(3)メモリシステムの構成と記憶階層 ITパスポート 基本情報 応用情報

記憶階層の構成,キャッシュメモリからデータを主記憶に書き出す方式の種類と特徴を理解する。また,キャッシュメモリからデータを主記憶に書き出す方式を理解する。

用語例:補助記憶,ディスクキャッシュ,ライトスルー,ライトバック,ダイレクト方式,フルアソシエイティブ方式,セットアソシエイティブ方式,連想メモリ,命令キャッシュ,データキャッシュ

(4)アクセス方式 基本情報 応用情報

主記憶装置を高速化するメモリインタリーブ方式を理解する。

用語例:バンク

(5)メモリの容量と性能 基本情報 応用情報

アクセス時間とサイクル時間,キャッシュメモリのヒット率,ミス率,実効アクセス時間,ミスペナルティなど,メモリの容量と性能の関係を理解する。

(6)記録媒体の種類と特徴 ITパスポート 基本情報 応用情報

取り外しできる記録媒体(リムーバブルメディア)の種類,記録容量,可搬性,利用法,用途などの特徴を理解する。

用語例:読出し専用型,追記型,書換型,ハードディスク,SSD(ソリッドステートドライブ),光ディスク,CD(CD-ROM,CD-R),DVD(DVD-ROM,DVD-RAM,DVD-R),ブルーレイディスク,光磁気ディスク,MO,半導体ディスク,フラッシュメモリ(USB メモリ,SD カード),ストリーマ,DAT,RAM ファイル

 

メモリの種類と特徴

この記事での学習内容 ITパスポート 基本情報 応用情報

半導体の記憶回路,磁気記憶,光記憶を用いたメモリなどの種類があること,半導体メモリ(IC メモリ)の種類,特徴(揮発性,不揮発性,アクセス速度,容量,コスト,物理サイズなど),代表的な用途,システム設計におけるメモリの選択の考え方を理解する。

用語例:RAM,ROM,DRAM,SRAM,リフレッシュ,マスクROM,PROM(Programmable Read Only Memory ), EPROM ( Erasable Programmable Read Only Memory ), EEPROM(Electrically Erasable Programmable Read Only Memory),フラッシュメモリ,SDRAM(DDR2 SDRAM,DDR3 SDRAM)

半導体メモリ

半導体メモリとは、半導体素子によって構成されるメモリです。半導体メモリは物理的な動作を必要とするメモリ(*)と比べて高速で耐震性に優れています。

半導体メモリは、RAM(Random Access Memory)とROM(Read Only Memory)の二種類があります。

*物理的な動作を必要とするメモリとは、例えばハードディスクなど、モーター等の動作部品がある記憶媒体のこと。

RAM

RAM(Random Access Memory)とは、自由にデータの読み書きを出来ることの出来るメモリです。電源を切ると記憶していた内容が消えてしまう「揮発性」という特徴があります。

RAMにはDRAM(Dynamic Random Access Memory)とSRAM(Static Random Access Memory)があります。

DRAMとSRAM

キャッシュメモリにはDRAMより高速なSRAMが使われます。SRAMは再書き込みをしなくても、通電している限りデータを保持できるメモリです。

 SRAMDRAM
特徴フリップフロップ回路を用いてデータを記憶するコンデンサの電荷のある無しでデータを記憶する
主な用途キャッシュメモリメインメモリ
記憶容量小容量大容量
ビットあたりのコスト高コスト低コスト
再読み込み
(リフレッシュ)
不要必要
消費電力小さい大きい
DRAMとSRAMの比較

名称特徴
ファーストページDRAM高速なデータ転送機能を持つ
EDODRAMファーストページDRAMの読み出し効率を向上させた
SDRAMSynchronous Dynamic Random Access Memory
クロック周波数に同期して高速読み出しを行う
DDR-SDRAMDDR:Double Data Rate の略で、SDRAMの2倍の速度
近年では、さらに高速化して、DDR2(SDRAMの4倍)、DDR3(8倍)、DDR4(16倍)といった規格も出ていている。
DRAMの種類

ROM

ROM(Read Only Memory)は、記録されている情報を読み出すことだけが可能なメモリです。

書き込みができる種類もありますが、RAMと比較して随時書き込みできないものはROMに分類されています。ROMには以下のような種類があります。

名称書き込み消去特徴
マスクROM製造時にデータが書き込まれ、その後は書き換え不可。
EPROMErasable Programmable Read Only Memory
紫外線照射で全消去可能。UV-EPROMという場合もある。
EEPROMElectrically Erasable Programmable Read Only Memory
電圧をかけて部分的に消去することが可能。
フラッシュメモリ電圧をかけて全消去、ブロック単位での消去が可能。
USBメモリやSDカード、SSDなどはこのタイプの記憶媒体。

主記憶装置の構成

この記事での学習内容 基本情報 応用情報

主記憶装置の構成,主記憶装置内のデータがアクセスされるアドレス選択動作,アクセス動作などの手順を理解する。

用語例:記憶部,アドレス選択機構,読取り書込み機構,ECC(誤り検出訂正),パリティ

記憶装置

記憶装置とは、コンピュータが扱うデータやプログラムを記憶しておく装置です。

記憶装置のうち、システムバスを通じてCPUと直接データをやり取りするものを主記憶装置といい、主記憶装置とデータをやり取りするものを補助記憶装置といいます。

いわゆる「メモリ」と呼ばれるものは主記憶装置の方を指します。

主記憶装置

主記憶装置は、システムバスを通じてCPUと直接やり取りをし、CPUでのプログラム処理に必要なプログラムやデータを渡す働きをします。

主記憶装置には、データを電気信号として記憶する半導体を使ったDRAMというLSIチップが用いられます。DRAMはデータ容量あたりのコストが低く、大容量のメモリを構成できるという特徴があります。一方で、放電によってデータが消える性質(揮発性)であるため、データを保持し続けるためには、定期的な再書き込み(リフレッシュ)の動作が必要になります。

パソコンの主記憶装置には、DDR-SDRAMがよく用いられています。

主記憶装置の構成

主記憶装置は、記憶部、アドレス選択機構、読み取り書き込み機構から構成されています。

補助記憶装置

大量のデータを長期間記録するための記憶装置を、補助記憶装置といいます。

補助記憶装置にはOokuno種類があり、ハードディスクやSSD、CD、DVD、USBメモリなどが、用途に応じて使い分けられています。

主記憶装置は、CPUから要求されたデータが自身のもとになければ、補助記憶装置からそのデータを読み込み、CPUに渡します。

キャッシュメモリ

CPUのデータ処理速度に比べると、CPUと主記憶装置間のデータ転送は遅いので、主記憶装置とのやり取りの際にCPUが待たされることがあります。

この速度差を縮めるための仕組みとして、主記憶装置とは別にCPU内に高速な緩衝用のメモリを置きます。これをキャッシュメモリといいます。

キャッシュメモリは複数設置することが多く、CPUがアクセスする順番によって、1次キャッシュ、2次キャッシュなどと呼び分けます。CPUがメモリにアクセスするときには、1次キャッシュ→2次キャッシュ→主記憶装置、という順序で行われます。

キャッシュメモリは読み込みだけでなく書き込みもできます。書き込みには、主記憶装置に反映させるタイミングによってライトスルー方式とライトバック方式の二つの方式があります。

ライトスルー

ライトスルー方式は、キャッシュメモリにデータの書き込み命令が実行された時に、キャッシュメモリと主記憶装置の両方を同時に書き換える方式です。

キャッシュメモリと主記憶装置に同じデータを同時に書き込むためトラブルには強いですが、主記憶装置の処理速度に合わせるため、全体の処理速度は下がります。

ライトバック

ライトバック方式は、データの書き込み命令が実行された時にキャッシュメモリだけ書き換える方式です。キャッシュメモリのブロックを入れ替える時に主記憶装置の書き換えを行います。

キャッシュメモリにだけ書き込むので高速に処理が可能ですが、主記憶装置の書き換えが行われるまで、キャッシュメモリのデータが反映されないため、トラブルに弱く整合性に欠けるという問題もあります。

 

メモリシステムの構成と記憶階層

この記事での学習内容 ITパスポート 基本情報 応用情報

記憶階層の構成,キャッシュメモリからデータを主記憶に書き出す方式の種類と特徴を理解する。また,キャッシュメモリからデータを主記憶に書き出す方式を理解する。

用語例:補助記憶,ディスクキャッシュ,ライトスルー,ライトバック,ダイレクト方式,フルアソシエイティブ方式,セットアソシエイティブ方式,連想メモリ,命令キャッシュ,データキャッシュ

記憶階層

コンピュータの各種の記憶装置は、CPUから補助記憶装置まで、次のような階層構造を持ちます。このことを記憶階層といいます。

高速で小容量のレジスタから、低速で大容量の補助記憶媒体まで、順序よく階層にすることによって高速性と大容量とを両立させます。

ディスクキャッシュ

ディスクキャッシュは、主記憶装置と補助記憶媒体との間に、高速なメモリを置いて高速化する技術、又はそのための半導体メモリのことです。

使用頻度の高いデータを高速なメモリに置けば、いちいち補助記憶媒体からデータを読み込む必要が無いので、速度が向上します。

アクセス方式

この記事での学習内容 基本情報 応用情報

主記憶装置を高速化するメモリインタリーブ方式を理解する。

用語例:バンク

主記憶装置の容量

主記憶装置は容量が大きいほど一度に多くのデータを保持しておけるので、CPUから要求されたデータを補助記憶装置に読みに行く回数が減り、全体の処理が速くなります。

パソコンの主記憶装置では、数Gバイト程度の容量が主流です。

主記憶装置の容量は、LSIチップを搭載したメモリモジュールを追加したり交換したりすることによって拡張できます。

メモリモジュールの種類には、デスクトップパソコン向けのDIMMや、ノートパソコン向けの小型のSODIMMなどがあります。

*DIMM:Dual Inline Memory Module
 SODIMM:Small Outline DIMM

メモリインタリーブ

メモリインタリーブは、CPUと主記憶装置との間のデータ転送を高速化する方法です。

主記憶装置を複数のメモリバンクという区分に分割し、CPUからのデータ転送要求を複数のメモリバンクへ並行して発行します。それによって、CPUの待ち時間が減って高速になります。

メモリの容量と性能

この記事での学習内容 基本情報 応用情報

アクセス時間とサイクル時間,キャッシュメモリのヒット率,ミス率,実効アクセス時間,ミスペナルティなど,メモリの容量と性能の関係を理解する。

アクセス時間とサイクル時間

CPUが主記憶装置へアクセスする詳細な手順は次のとおりです。

  1. アクセス要求
  2. アドレス選択
  3. データ転送
  4. リフレッシュ(DRAMの場合)

アクセス時間は、アクセス要求を始めてからデータ転送が終わるまでの時間です。

サイクル時間は、アクセス要求を始めてから、次のアクセス要求を始められるまでの時間です。

キャッシュメモリのヒット率

キャッシュメモリのヒット率は、CPUが要求するデータがキャッシュメモリに存在する確率です。キャッシュメモリにデータが存在しない場合は、主記憶装置にアクセスする必要があります。ヒット率が高いほど、処理は高速になります。

実効アクセス時間

実効アクセス時間は、キャッシュメモリの効果を踏まえた主記憶装置へのアクセス時間です。以下の式で求められます。

この式は、キャッシュにあった場合のアクセス時間と、主記憶にあった場合の平均を取るための式となっています。

実効アクセス時間の計算例

キャッシュメモリのアクセス時間: 10ナノ秒
主記憶装置のアクセス時間: 60ナノ秒
ヒット率: 70%

実効アクセス時間= 10  × 0.7 + 60 × ( 1-0.7 )
  =7 +18
  =25(ナノ秒)

 

記録媒体の種類と特徴

この記事での学習内容 ITパスポート 基本情報 応用情報

取り外しできる記録媒体(リムーバブルメディア)の種類,記録容量,可搬性,利用法,用途などの特徴を理解する。

用語例:読出し専用型,追記型,書換型,ハードディスク,SSD(ソリッドステートドライブ),光ディスク,CD(CD-ROM,CD-R),DVD(DVD-ROM,DVD-RAM,DVD-R),ブルーレイディスク,光磁気ディスク,MO,半導体ディスク,フラッシュメモリ(USB メモリ,SD カード),ストリーマ,DAT,RAM ファイル

メモリを使った補助記憶装置

小型で持ち運びしやすい補助記憶装置には、SDカードやUSBメモリスティックなどがあります。

これらには、電源を切っても内容が消えない半導体メモリである、フラッシュメモリが使われているのでアクセスが高速です。

容量は数十MBのものから、数百GBのものもあります。

光ディスク

光ディスクは樹脂やアルミの円盤の表面のピットと呼ばれる穴を記録情報として、レーザー光を用いてデータを書き込み、読み出しする補助記憶媒体です。

名称特徴容量
CD-ROMCD-Read Only Memory
読み出し専用の光ディスク
650~700Mバイト
CD-RCD-Recordable
追記は出来るが書き換えはできない
650~700Mバイト
CD-RWCD-Re Writable
書き換えが可能
650~700Mバイト
DVD記録密度が高く大容量な光ディスク。片面記録や両面記録、2層記録など様々な方式がある。
読み出し専用のDVD-ROM、追記型のDVD-R、書き換え可能なDVD-RAM等がある。
数Gバイト
規格により異なる
ブルーレイ波長の短い青紫色のレーザーを使うことで記録密度を向上した光ディスク。片面1層で約25GB
両面2層で約50GB

 

磁気テープ

磁気テープは、粉末状の磁性体をテープ状のフィルムに塗布した記録媒体です。磁化の変化により情報を書き込み、読み出しする磁気記録媒体の一種です。

テープを巻き取るという構造上、アクセスは低速で、順読み出ししか出来ません。しかし数十~数百Gバイトなどの容量があり、単価が安いので、データのバックアップ用に使われます。

ストリーマ

磁気テープを記憶媒体とする補助記憶装置を、磁気テープ装置あるいはストリーマといいます。ストリーマはデータを次々と転送するストリーミング方式を用いるという意味の名称です。

磁気テープを扱う補助記憶装置には、音楽カセット用のDATの技術を用いたDDSなどがあります。

 

バス(概要)

情報処理技術者試験での学習内容

【応用情報】
・バスの種類,特徴,制御方式,標準規格を修得し,応用する。

【基本情報】
・バスの種類,特徴,構成のあらましを理解する。

(1)バスの種類と特徴 基本情報 応用情報

コンピュータ内部でデータをやり取りするための伝送路であるバスの種類,特徴,内部バス(CPU 内部バス),外部バス,拡張バスなどの分類,転送方式を理解する。

用語例:アドレスバス,データバス,コントロールバス(制御バス),システムバス,メモリバス,入出力バス,シリアルバス,パラレルバス

(2)バスのシステムの構成 基本情報 応用情報

バスのシステムの構成には,命令の読込みとデータのアクセスを分離したハーバードアーキテクチャ,両者を分離せず同一のバスでアクセスするプリンストンアーキテクチャがあること,アーキテクチャごとの特徴を理解する。

(3)バスの制御方式 応用情報

複数の装置がバスを共有している場合に,どの装置がバスを使用するかを決めるバスの制御方式や,具体的な動作を理解する。

用語例:バスアービタ,バスマスタ,集中制御方式,割込み方式,ポーリング方式

(4)バスのアクセスモード 応用情報

外部データバス幅を制御するモードであるバスのアクセスモード,その動作,モードを指定することによって,バス幅を指定できることを理解する。

(5)バスの容量と性能 基本情報 応用情報

バス幅を意味するバスの容量,クロック周波数を意味するバスの性能,バスのスループットの計算方法を理解する。

(6)バスの標準規格  応用情報

バスの標準規格の種類と特徴を理解する。

用語例:PCI(Peripheral Component Interconnect)バス,PCI Express,IEEE 1394,ANSI-X3.131(SCSI),USB(Universal Serial Bus)

バスの種類と特徴

この記事での学習内容 基本情報 応用情報

コンピュータ内部でデータをやり取りするための伝送路であるバスの種類,特徴,内部バス(CPU 内部バス),外部バス,拡張バスなどの分類,転送方式を理解する。

用語例:アドレスバス,データバス,コントロールバス(制御バス),システムバス,メモリバス,入出力バス,シリアルバス,パラレルバス

バス

CPUや主記憶装置などの内部装置は、データをやり取りするための伝送路で結ばれています。この伝送路をバスといいます。

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

CPUが内部でデータを伝送するバスを内部バスといいます。内部バスには16ビット、32ビット、64ビットなどのバス幅があり、パソコンでは32ビットバスが主流でしたが、近年は64ビットバスもかなり普及しています。

内部バスに対し、主記憶装置などマザーボード上の各装置を結ぶバスを、外部バス(システムバス)といいます。

アドレスバス

アドレスバスは、CPUがアクセスしたいデータのアドレスを主記憶装置に伝えるためのバスです。アドレスバスのバス幅が広いほど、大きなサイズの主記憶装置のアドレスを扱えます。

16ビットなら 216 = 65536のアドレス、32ビットなら232 = 4,294,967,296(約4G)のアドレス、64ビットなら 264≒約1,800京(約16E)のアドレスを扱うことが出来ます。

但し、64ビットの場合、理論上は16エクサのアドレスを扱うことが出来るが、あまりにも膨大すぎるので、パソコンなどでは数テラバイトまでとしている事が多い、(1エクサ=10億ギガ)

データバス

データバスはCPUが主記憶装置とデータをやり取りするためのバスです。データバスのバス幅が広いほど、一度に多くのビット数のデータをやり取りできます。

コントロールバス

コントロールバスは制御バスともいい、CPUと周辺機器などの間に、タイミング調整などの信号をやり取りするためのバスです。

バスのシステムの構成

この記事での学習内容 基本情報 応用情報

バスのシステムの構成には,命令の読込みとデータのアクセスを分離したハーバードアーキテクチャ,両者を分離せず同一のバスでアクセスするプリンストンアーキテクチャがあること,アーキテクチャごとの特徴を理解する。

バスのシステムの構成

バスは3つ以上の装置が、バス(交通)の停留所を用いて乗り合いするように接続する伝送路です。他の結線方法に比べて単純なのが特徴です。

速度の遅い入出力装置のバスを、高速な装置用のバスと階層構造にする方法もあります。

ノイマンアーキテクチャとハーバードアーキテクチャ

ノイマンアーキテクチャは主記憶に命令もデータも格納する方式です。Pentiumなどの多くのCPUはこの方式です。

プログラムを記憶するメモリとデータを記憶するメモリを別にした構成をハーバードアーキテクチャといい、マイコンなどで使われる方式です。命令とデータに同時にアクセスできるので、高速化に向いています。

最近の高性能CPUチップでは両方の長所を活かした設計が利用されているものもあります。

バスの容量と性能

この記事での学習内容 基本情報 応用情報

バス幅を意味するバスの容量,クロック周波数を意味するバスの性能,バスのスループットの計算方法を理解する。

バス幅とクロック周波数

バスが1クロックで送信できるビット数をバス幅といいます。バス幅には8ビット、16ビット、32ビット、64ビットなどがあります。バス幅が大きいほど性能が良くなります。
また、バスのクロック周波数が高いほど性能が良くなります。

これらのバスの性能と、CPUの性能(MIPS値やFLOPS値)によって、CPUとバスを接続した時の性能が決まります。

バスのアクセスモード

1ビットずつ順番に伝送するバスを、シリアルバスといいます。
対して、複数ビットを1度に伝送するバスをパラレルパスといいます。(伝送路の本数の違いではないので注意)

一見、パラレルバスのほうが高性能に思えますが、パラレルバスの場合、並行する通信路の干渉などの問題があり、そういった問題のないシリアルバスのほうが高性能であることが多いです。

特に通信路同士の干渉は、伝送距離が長くなるほど影響を受けやすくなります。そのため、物理的に距離の短いPCI等のコンピュータ内部のバスにはパラレルバスがよく用いられ、外部との接続に使うLANやUSBなどにはシリアルバスが採用されている。

なお、シリアルバスだからといって伝送路が1本というわけではなく、複数の伝送路で並行して別々の情報を伝送するタイプのシリアルバスもあります。

  • 並列で個別の異なる情報を流す:シリアルバス
  • 複数の伝送路でまとめて一つのデータを流す:パラレルバス

 

入出力デバイス

情報処理技術者試験での学習内容

【応用情報・基本情報】
・入出力インタフェースの種類,特徴を修得し,応用する。
・ デバイスドライバの役割,機能を修得し,応用する。

【ITパスポート】
・入出力インタフェースの種類と特徴を理解する。

(1)入出力インタフェース

1.入出力インタフェースの種類と特徴 ITパスポート 基本情報 応用情報

入出力インタフェースの種類,転送方式,伝送速度,接続可能台数,用途などの特徴を理解する。

用語例:USB,RS-232C,IEEE 1394,SCSI,HDMI,PC カード,シリアルATA, Bluetooth,ZigBee,IrDA,NFC,FC(ファイバチャネル)

2.データ転送の方式と接続形態 基本情報 応用情報

シリアルデータ転送方式とパラレルデータ転送方式や,周辺装置を接続する際の接続形態(トポロジ)の種類,特徴,使用される機器を理解する。

用語例:アナログ,ディジタル,スター接続,カスケード接続,ハブ,デイジーチェーン接続,ターミネータ,ツリー接続

3.入出力制御の方式 基本情報 応用情報

CPU を介さない転送方式であるDMA 方式やチャネル制御方式を理解する。また,入出力割込みが果たす役割を理解する。

用語例:プログラム制御方式,DMA(Direct Memory Access:直接記憶アクセス)方式,チャネルコマンド,光チャネル,オフラインシーク,オフラインサーチ,超高速チャネル,拡張チャネルシステム

4.チャネルの種類と特徴 応用情報

チャネルの種類,特徴,動作モードを理解する。

用語例:マルチプレクサモード,バーストモード

(2)デバイスドライバ 基本情報 応用情報

デバイスドライバの役割,プラグアンドプレイ,ホットプラグの機能,デバイスとの同期を理解する。

入出力インタフェースの種類と特徴

この記事での学習内容 ITパスポート 基本情報 応用情報

  • 入出力インタフェースの種類,転送方式,伝送速度,接続可能台数,用途などの特徴を理解する。
  • シリアルデータ転送方式とパラレルデータ転送方式や,周辺装置を接続する際の接続形態(トポロジ)の種類,特徴,使用される機器を理解する。

 

用語例:USB,RS-232C,IEEE 1394,SCSI,HDMI,PC カード,シリアルATA, Bluetooth,ZigBee,IrDA,NFC,FC(ファイバチャネル)、アナログ,ディジタル,スター接続,カスケード接続,ハブ,デイジーチェーン接続,ターミネータ,ツリー接続

入出力インタフェース

入出力インタフェースとは、コンピュータに周辺機器を接続するためのコネクタやケーブルの形状、伝送に用いる通信規格などを指します。

インタフェースは、コンピュータ本体と周辺装置との通信を整える働きをする部分で、データの転送方式には、シリアル方式のインタフェースと、パラレル方式のインタフェースとがあります。

シリアルインタフェース

1本の信号線を使って1ビットずつ順番にデータを転送する方式です。一度に転送するデータの量は少ないですが、ケーブルやコネクタの構造を単純化出来るので、高い動作周波数での転送速度を上げることが出来ます。

例:USB、LANケーブル、シリアルATA

パラレルインタフェース

複数の信号線を束ねたケーブルで、複数のビットを同時に転送する方式です。一度に転送するデータが多いので、動作周波数が低くてもデータを転送できます。しかし、シリアルインタフェースに比べ仕組みが複雑になること、ケーブルが太く、伝送距離が短いなどの短所もあります。

例:SCSIケーブル、IDE、パラレルケーブル

通信速度

データ通信の速度は「ビット/秒」(bps:bits per second)を単位として表します。「ビット/秒」は1秒間に転送できるデータ量をビット単位で表したものです。

1bpsは、1秒間に1ビットのデータを送ることが出来る速さです。

USB

USBはコンピュータ用の入出力インタフェースとして広く使われている規格です。現在主流であるUSB2.0規格は最高480Mbpsの高速通信が可能です。

USB2.0には3つの転送モードがあり、高速性の求められる外付けハードディスクなどには、480Mbpsのハイスピードモード、プリンタやスキャナなどには12Mbpsのフルスピードモード、低速なキーボードやマウスなどには1.5Mbpsのロースピードモードが使用されています。
*一見、フルスピードモードが最も速いように思えますが、12Mbps=フルスピードモードなのは、旧規格のUSB1.1の規格の名残で、USB1.1の最高速度が12Mbpsであったため。

なお、最近では、転送速度が5Gbpsとさらに高速なUSB3.0という規格も登場し、外付けハードディスクなど対応商品も出てきています。

USB普及の背景

USBが広く使われるのは、プラグ・アンド・プレイやホットプラグインに対応するインタフェースであることも理由の一つです。
ホットプラグインとはコンピュータの電源を入れたままでケーブルの抜き差しができる機能です。
プラグ・アンド・プレイは、接続した周辺機器をOSが自動認識する機能です。

また、USBケーブルを介して周辺機器の電源がコンピュータ側から供給される「バスパワー」にも対応するため、消費電力の小さい機器なら、電源ケーブルを使わずにコンピュータからUSB経由で電源供給を受けて稼働できます。

USBハブ

USBハブを用いると、一つのUSBポートにコンピュータやハブを含めて最大127台までの機器を階層的なツリー型に接続できます。

コンピュータと周辺機器、USBケーブル、USBハブのうち、USB1.1のみに対応する機器が一つでもあれば、USB1.1の最高速度である12Mbpsでしか通信できなくなるため、USB接続する機器の選定には注意が必要です。

IEEE1394

IEEE1394は転送速度が100Mbps以上という高速なシリアルインタフェースで、主にデジタルビデオカメラなどで採用されています。「FireWire」や「i.Link」という名称で商標登録しているメーカーもあります。

最大63台の機器をデイジーチェーン接続(数珠つなぎ)でき、周辺装置同士を直結することもできます。

その他の主なインタフェース

コンピュータに使われる入出力インタフェースには、次のようなものがあります。

名称接続方法特徴
RS-232Cシリアル従来からモデム、TAなどの接続に用いられてきた低速なインタフェース。
セントロニクスパラレル従来からプリンタなどとの接続に用いられてきたインタフェース。
現在はIEEE1284として規格化されている。
SCSIパラレル従来からスキャナや外付けのハードディスクなどに用いられてきたインタフェース。
最大7台までデイジーチェーン接続が可能。
IDE/E-IDEパラレル内蔵ハードディスク、CD-ROMなどを内部で接続するためのインタフェース。
別名でATA、ATAPIともいう。
シリアルATAシリアルIDE/E-IDEの後継として位置づけられる磁気ディスクの高速インタフェース。
ケーブルが細く延長距離も長いため接続がしやすい。
最大転送速度が150MB/秒などと高速である。
IrDA赤外線赤外線による無線通信インタフェース。
最大4Mbpsの通信速度があるが、通信距離が1m程度と短く、機器を向き合わせる必要がある。
PDAとコンピュータ間や携帯電話同士のデータ交換などに使われる。
Bluetooth電波2.4GHz帯の電波を利用する無線通信インタフェース。
半径10m以内で最大3Mbpsの通信速度がある。
赤外線を利用するIrDAと違い、機器間に障害物があっても通信できる。

デバイスドライバと入出力制御

この記事での学習内容 基本情報 応用情報

  • デバイスドライバの役割,プラグアンドプレイ,ホットプラグの機能,デバイスとの同期を理解する。
  • CPU を介さない転送方式であるDMA 方式やチャネル制御方式を理解する。また,入出力割込みが果たす役割を理解する。

用語例:プログラム制御方式,DMA(Direct Memory Access:直接記憶アクセス)方式,チャネルコマンド,光チャネル,オフラインシーク,オフラインサーチ,超高速チャネル,拡張チャネルシステム

デバイスドライバ

デバイスドライバは周辺機器の動作をコントロールするソフトウェアです。OSと周辺機器の仲立ちをし、メーカーや機種の違いによる機器の制御方法の差を吸収するものです。

コンピュータに周辺機器を接続して正常に稼働させるためには、その装置に付属するデバイスドライバをコンピュータにインストールする必要があります。

入出力制御の方式

入出力制御の方式には、CPUを介さないDMA方式、チャネル制御方式、プログラム制御方式などがあります。

プログラム制御方式

CPUがプログラムを実行する中で、CPUが入出力装置と主記憶装置との間のデータ転送を行う方式です。低速の入出力装置が動作する間、CPUが待っているので処理効率が落ちます。

DMA方式(Direct Memory Access:直接記憶アクセス)

DMA方式とは、CPUを介さずに入出力装置が主記憶装置との間のデータ転送を行う方式です。DMA方式によってCPUの待ち時間を減らすことができます。この方式の場合、CPUからの入出力の指示は主記憶装置に対して行われます。

なお、別途DMAコントローラという装置が必要です。

チャネル制御方式

チャネル制御方式とは、チャネル装置が入出力装置と主記憶装置との間のデータの転送を行う方式です。この方式の場合、CPUからの入出力の指示はチャネルに対して行われます。

CPUとチャネルが並行処理をすることによって、CPUの待ち時間を減らすことができます。

 

入出力装置

情報処理技術者試験での学習内容

【応用情報・基本情報】
・代表的な入出力装置の種類,特徴,仕組み,用途を修得し,応用する。
・代表的な補助記憶装置の種類,特徴,仕組み,用途を修得し,応用する。

(1)入力装置 基本情報 応用情報

代表的な入力装置の種類,特徴,仕組み,用途を理解する。

用語例:ポインティングデバイス(マウス,タッチパネル,タッチスクリーン,ジョイスティック,トラックボール,デジタイザ,ペンタブレットほか),キーボード,音声入力装置,画像入力装置(スキャナ,OCR,OMR,ディジタルカメラほか),生体認証装置,バーコード読取装置,磁気カード読取装置,IC カード読取装置,A/D コンバータ

 

(2)出力装置 基本情報 応用情報

代表的な表示装置や出力装置の種類,特徴,仕組み,用途を理解する。また,画像のデータ容量などに関連する計算方法を理解する。

用語例:CRT ディスプレイ,液晶ディスプレイ,TFT 液晶,STN 液晶,有機EL ディスプレイ,プラズマディスプレイ,インタレースモード,ノンインタレースモード,テキストモード,グラフィックスモード,パックトピクセル方式,プレナピクセル方式,VGA,SVGA,XGA,電子ペーパ,インパクトプリンタ,ノンインパクトプリンタ,シリアルプリンタ,ラインプリンタ,ページプリンタ,レーザプリンタ,インクジェットプリンタ,3D プリンタ,プロッタ,D/A コンバータ,プロジェクタ,音声出力装置

(3)補助記憶装置 基本情報 応用情報

代表的な補助記憶装置や記憶媒体の種類,特徴,仕組み,用途,装置の諸元に基づく記憶容量や,平均アクセス時間の計算方法を理解する。

用語例:ハードディスク装置,SSD(ソリッドステートドライブ),SD/SDHC/SDXC カード,CD-R/RW ドライブ,ブルーレイドライブ,DVD-R/RW ドライブ,磁気テープ装置,トラック,シリンダ,ブロック化因数,IBG(Interblock Gap:ブロック間隔),セクタ,トラック密度,スピンドル,アクセスアーム,磁気ヘッド,固定ディスク,デフラグメンテーション,シークタイム,サーチタイム,データ転送時間,データ転送速度,ボリューム,ボリュームラベル,見出しラベル,後書きラベル,ディスクアレイ,RAID

(4)その他の入出力装置 基本情報 応用情報

代表的な通信制御装置,駆動装置,撮像装置の種類,特徴,仕組み,用途を理解する。

用語例:有線LAN インタフェースカード,無線LAN インタフェースカード

入力装置

この記事での学習内容 基本情報 応用情報

代表的な入力装置の種類,特徴,仕組み,用途を理解する。

用語例:ポインティングデバイス(マウス,タッチパネル,タッチスクリーン,ジョイスティック,トラックボール,デジタイザ,ペンタブレットほか),キーボード,音声入力装置,画像入力装置(スキャナ,OCR,OMR,ディジタルカメラほか),生体認証装置,バーコード読取装置,磁気カード読取装置,IC カード読取装置,A/D コンバータ

代表的な入力装置

入力装置では、文字を入力するためのキーボードが代表的です。

その他の入力装置には、マウス、ペンタブレット、タッチパネルなどがあります。

マウスやペンタブレットなど、カーソルを移動して画面上の位置情報をクリックして指示入力できる装置を総称して「ポインティングデバイス」といいます。

画像を読み取る入力装置

イメージスキャナ
印刷物や手書きの絵を静止画像データとしてPCに読み込むことができます。
バーコードリーダ
バーコードを読み取り、数値や文字のデータに置き換えて処理することができます。小売店のPOSシステムなどで広く利用されています。
OCR
OCR(Optical Character Reader:光学文字読取装置)は、画像データを走査して、記憶してある文字とパターン認識して、手書きの文字や印字された文字を入力する装置です。
OMR
OMR(Optical Mark Reader:光学マーク読取装置)は、画像データを走査して、比較的単純な記号を認識して入力する装置です。いわゆる「マークシート」の読取り装置です。
キーボードの代わりに筆記具で記入し、OCRよりも正確に認識できるので、各種試験やアンケート用紙にコンピュータ処理に用いられます。
デジタイザ
デジタイザとは、画面上の位置を指示するためのペン型、あるいはマウス型の装置と、位置を検出するための板状の装置を組合せた入力装置で、ペンタブレットはデジタイザの一種です。
手書きの作業をそのままコンピュータに入力するのに用います。

出力装置

この記事での学習内容 基本情報 応用情報

代表的な表示装置や出力装置の種類,特徴,仕組み,用途を理解する。また,画像のデータ容量などに関連する計算方法を理解する。

用語例:CRT ディスプレイ,液晶ディスプレイ,TFT 液晶,STN 液晶,有機EL ディスプレイ,プラズマディスプレイ,インタレースモード,ノンインタレースモード,テキストモード,グラフィックスモード,パックトピクセル方式,プレナピクセル方式,VGA,SVGA,XGA,電子ペーパ,インパクトプリンタ,ノンインパクトプリンタ,シリアルプリンタ,ラインプリンタ,ページプリンタ,レーザプリンタ,インクジェットプリンタ,3D プリンタ,プロッタ,D/A コンバータ,プロジェクタ,音声出力装置

ディスプレイ

画像を表示するディスプレイとしては、以下の種類が代表的です。

液晶ディスプレイ
液晶を使ったディスプレイです。液晶自体は発光しないため、液晶に電圧をかけて光の透過を変え、バックライトなどをつけることで表示します。
プラズマディスプレイ
ガス放電による発光を利用したディスプレイです。阻止自体が発行するため視野角が大きく、薄型化・大型化しやすいですが、消費電力は大きく、価格は高めです。
有機ELディスプレイ
電圧をかけると発光する有機ELを使ったディスプレイです。バックライトが不要で消費電力が少なく、プラスチック等の曲がる基盤に作ることも可能です。
CRTディスプレイ
ブラウン管を使ったディスプレイです。コストが安く精細なカラー表示が可能ですが、設置面積が大きく、消費電力が大きいため、利用が減っています。

薄型で消費電力の少ない液晶ディスプレイは、パソコン用の画面装置として標準的に使われています。パソコン向けの液晶ディスプレイでは、精細なカラー表示が可能で応答速度も速いTFT型が主流です。

プリンタ

印刷用のプリンタとしては、以下の種類が代表的です。

インクジェットプリンタ
ノズルからインクを噴射して印字するプリンタです。印字音が静かで、小型・低価格でありながら高品質なため、オフィスや家庭で広く使われています。
レーザプリンタ
レーザ光線でドラムを感光させ、ドラムにトナーを付着させてページ単位に印字する方式のプリンタです。
高品質な印刷ができ、印字も高速ですが、印字時の消費電力が比較的大きくなります。
ドットインパクトプリンタ
印字ヘッドをインクリボンに打ち付けて印字するプリンタです。印字音が大きいため余り使われませんが、加圧式なので伝票などのカーボン複写が可能です。

プリンタの性能を表す値

プリンタの印字品質は「dpi値」が目安となります。
dpi(dots per inch)は1インチ(2.54cm)内に印字できるドット(画素)数のことで、この値が大きいほど精細な印刷ができます。

また、印刷性能は1秒間に印字できるページ数である「ppm」(pages per minute)などで表します。

プロッタ

プロッタはCADデータなどの精密な図面を描画する装置です。

描画方式で分類すると、ペンが用紙上を移動するペンプロッタと、図面をビットマップデータとして描画するペンレスプロッタに分けられます。

用紙送りの方式には、用紙を固定するフラットベッド型と、用紙を送り出しながら印字するフリクション型があります。

プロジェクタ

プロジェクタは、映像をスクリーンに投影する投影機です。コンピュータのディスプレイ装置よりも大きく表示することができ、プレゼンテーションなどに利用されます。
光源の明るさをルーメンという単位で表します。

画面の大きさ

ディスプレイが表示する画像は、細かい点(ドット)を縦横に敷き詰め、それぞれに色を発色させることで描いたものです。この点を画素といい、画像データは画素の集合としてメモリに記憶されます。

ディスプレイの大きさは、縦横に何画素数まで表示できるかで決まります。この値が大きいほど、1画面で表示できる文字や画像が多くなり、画面が広く使えます。

パソコン向けのディスプレイは、横1,024ドット×縦768ドットのXGAと呼ばれる規格が主流でしたが、最近ではより画素数が大きく、幅の広いワイドタイプが主流です。

画像のデータ容量

カラー画像は、発色する色の種類が多いほど、一つひとつの画素について色を細かく区別しなければならないため、1画素をメモリに記憶するためのデータ量が多くなります。
例えば、256色に色分けをするには、256=28通りを区別するために、1画素あたり8ビットの情報量が必要です。

画像データの要領を計算するには、画素数の合計に、カラー情報に必要なビット数をかけて求めます。

画像データの容量

画像データ量(byte) =画素数 × カラー情報のビット数 ÷ 8

*最後の「÷8」はビットをバイトに換算するため。

(関連)グラフィックスソフトウェア

グラフィックスソフトウェアとは、図形やイラストを作成するソフトウェアです。ペイント系ソフトウェアとドロー系ソフトウェアに分けられます。

分類特徴代表的なソフトウェア
ペイント系ソフト画像をビットマップ(ラスタデータ)として扱う。
写真などの色調の変化や加工を行ったりするのに向いている。
Adobe Photoshop等のフォトレタッチソフト
ドロー系ソフト図形を輪郭のベクトル(ベクタデータ)として扱う。
実態に近いなめらかな曲線を描くのに向いており、新たにイラストを起こしたり、ロゴを作成したり、という用途に向いている。
Adobe Illustrator等のドローソフト、CADソフト

補助記憶装置

この記事での学習内容 基本情報 応用情報

代表的な補助記憶装置や記憶媒体の種類,特徴,仕組み,用途,装置の諸元に基づく記憶容量や,平均アクセス時間の計算方法を理解する。

用語例:ハードディスク装置,SSD(ソリッドステートドライブ),SD/SDHC/SDXC カード,CD-R/RW ドライブ,ブルーレイドライブ,DVD-R/RW ドライブ,磁気テープ装置,トラック,シリンダ,ブロック化因数,IBG(Interblock Gap:ブロック間隔),セクタ,トラック密度,スピンドル,アクセスアーム,磁気ヘッド,固定ディスク,デフラグメンテーション,シークタイム,サーチタイム,データ転送時間,データ転送速度,ボリューム,ボリュームラベル,見出しラベル,後書きラベル,ディスクアレイ,RAID

ハードディスク

ハードディスクは、磁気を使った高速かつ大容量の補助記憶装置として、広く使われています。PC用としては、数100GB~数TB程度の容量が主流です。

ハードディスクの構造

内部には磁性体をぬった金属などの円盤(ディスク)が数枚、軸を中心に固定されており、高速に回転します。(5000~10000回転/分 程度)
磁気ヘッドの付いたアームがディスク状をスライドし、表面を磁化することでデータを読み書きします。この時に、磁気ヘッドはディスクの表面と接触することはありません。
なお、磁気ヘッドとディスクは接触しないようになっているが、外部からの強い振動で接触してしまう可能性があり、それが故障につながるため、ハードディスクは振動に弱いとされています。

トラックとセクタ

ディスクのオモテウラには、トラックというデータ記録用の領域が同心円状に何本も作られます。1本のトラックはさらにセクタというデータを格納するための小さい区画に分割されます。

各トラックとセクタにはアドレス番号が振られ、この番号でデータが格納されたセクタの記録位置を識別します。

なお、磁気ヘッドのアームはディスクの裏表それぞれに伸びているので、同じ半径上にある全トラックに同時にアクセスできます。同時にアクセスできるトラックをまとめて、シリンダと呼びます。

ディスクの容量

ディスク1面のトラック数や、1トラックあたりのセクタ数、各セクタに格納できるバイト数は、ディスクのフォーマット(初期化)時の形式によって異なります。
これによって、ハードディスク全体の格納容量が決まります。

ディスクの容量

ディスク容量 = ディスク面数 × トラック数 × セクタ数 × セクタのサイズ

ディスクのアクセス時間

ハードディスクはデータを読み取る時、次のような順序で動作します。

  1. 磁気ヘッドがデータのあるトラック位置に来るまでアームを移動(シーク)
  2. ディスクが回転してデータのあるセクタがヘッド位置に来るまで待つ(サーチ)
  3. セクタ内のデータを読み取ってメモリに転送

シーク時間、ディスク回転の平均時間、データ転送時間の合計をディスクのアクセス時間といいます。

ディスクのアクセス時間

アクセス時間 = シーク時間 + サーチ時間 + データ転送時間

*サーチ時間は1/2回転にかかる時間とするのが一般的

ハードディスクの断片化

ディスク内のファイルにデータの削除や追加を何度も繰り返すと、論理的には1つのファイルでありながら、物理的にはディスクのバラバラな領域に格納されてしまうことがあります。この状態を断片化(フラグメンテーション)といいます。

断片化が起きると、データを読み取るために磁気ヘッドがディスク状を頻繁に移動しなければならず、シーク時間が増えてアクセスが遅くなります。

断片化を解消するためには、ファイルを連続した領域に格納し直します。断片化を解消する作業を「デフラグ」(デフラグメンテーション)といいます。
デフラグを行うためには、OSに付属するツールを使うか、ファイルを一旦別の媒体にバックアップし、初期化したハードディスクに再度書き戻します。

ブロック化因数

ブロック化因数とは、入出力ファイルの1ブロックに含まれるレコード数です。レコードはプログラムが処理する論理的なデータの単位です。それに対して、ブロックはコンピュータが入出力装置とデータをやり取りする単位です。

ブロック化因数がnなら、入出力のやり取りをするアクセス回数がn分の1になり、効率が向上します。

ブロック間隔

ブロック間隔は入出力のブロックとブロックの間の間隔です。ブロック間隔は本来記憶可能な部分ですが、1ブロックのアクセス開始や終了に必要な空き領域です。

ブロック化したファイルの容量

ファイル容量 = (レコード長 × ブロック化因数 + ブロック間隔)× ブロック数

その他の入出力装置

この記事での学習内容 基本情報 応用情報

代表的な通信制御装置,駆動装置,撮像装置の種類,特徴,仕組み,用途を理解する。

用語例:有線LAN インタフェースカード,無線LAN インタフェースカード

その他の入出力装置

その他の入出力装置には、PCI(Peripheral Component Interconnect)やAGP(Accelerated Graphics Port)があります。

PCIは代表的な拡張バスでLANカードやSCSIカードなどがあります。AGPはビデオカード用の拡張バスです。

LAN接続に使われる機器

LANインタフェースカードはコンピュータやプリンタなどをLANに接続するための拡張カードです。LANボード、LANカードなどとも呼ばれます。

最近のパソコンにはマザーボード上にネットワークインタフェースが組み込まれています。

無線LANインタフェースカード

無線LANインタフェースカードは、無線の受発信機能を持つLANインタフェースカードです。

システムの構成

情報処理技術者試験での学習内容

【応用情報・基本情報】
・システムの処理形態,利用形態,適用領域を修得し,応用する。
・代表的なシステム構成の種類,特徴,システム構成要素間の機能配分を修得し,応用する。
・クライアントサーバシステムの特徴,構成を修得し,応用する。
・システムの信頼性設計の考え方,技術を修得し,応用する。

【ITパスポート】
・システム構成の基本的な特徴を理解する。

(1)システムの処理形態・利用形態・適用領域 ITパスポート 基本情報 応用情報

1.集中処理システム

集中処理システムの仕組み,特徴を理解する。

用語例:コスト性能比,保守要員の集中化

2.分散処理システム

分散処理システムの仕組み,特徴を理解する。

用語例:分散アーキテクチャ,管理責任,機能配分,水平機能分散システム,水平負荷分散システム,垂直機能分散システム,対話型処理,情報資源の組織への対応性,管理責任,TCO

3.利用形態

バッチ処理,リアルタイム処理などシステムの利用形態の種類と特徴,どのような業務
にどの形態が適しているかを理解する。

(2)システム構成 ITパスポート 基本情報 応用情報

代表的なシステム構成の種類,特徴を理解する。また,システム構成要素間の機能配分,冗長構成によるシステムの信頼性向上,負荷分散によるレスポンス速度の向上などを理解する。

用語例:デュアルシステム,デュプレックスシステム,クラスタ,クラスタリング,タンデム結合,マルチプロセッサシステム,ロードシェアリングシステム,バックアップサイト,ホットサイト,ウォームサイト,コールドサイト,主系(現用系),
従系(待機系),シェアードエブリシング,シェアードナッシング,密結合,疎結合,シンクライアント,ピアツーピア,グリッドコンピューティング,仮想化,VM(Virtual Machine:仮想マシン),クラウドコンピューティング,SaaS,PaaS,IaaS,マイグレーション

(3)ハイパフォーマンスコンピューティング 基本情報 応用情報

高精度な高速演算を必要とするような分野で利用されるHPC ( High Performance Computing:ハイパフォーマンスコンピューティング)の特徴や,HPC を可能にするためのスーパコンピュータや複数のコンピュータをLAN などで結んで,CPU などの資源を共有して単一の高性能なコンピュータとして利用できるようにした構成を理解する。

用語例:大規模並列,アレイプロセッサ

(4)クライアントサーバシステム 基本情報 応用情報

クライアントサーバシステムの特徴,2 層クライアントサーバシステム,3 層クライアントサーバシステムの構成を理解する。また,データベースに対するストアドプロシージャなど,関連技術の特徴を理解する。

用語例:プレゼンテーション層,ファンクション層,データベースアクセス層,クライアント,サーバ,シンクライアントシステム,RPC,ローカル処理の応答速度,コスト性能比,柔軟性,管理責任,サーバへの利用集中

(5)Web システム 基本情報 応用情報

Web システムの特徴,アーキテクチャ,構成,各層間の通信の仕組みを理解する。

用語例:Web ブラウザ,Web サーバ

(6)RAID 基本情報 応用情報

複数の磁気ディスク装置をまとめて一つの装置として扱い,信頼性や速度を向上させる技術であるRAID の種類と特徴,NAS,SAN などストレージ関連技術の特徴を理解する。

用語例:RAID0,RAID1,RAID2,RAID3,RAID4,RAID5,RAID6,ストライピング,ミラーリング,パリティ,チャンクサイズ

(7)信頼性設計 基本情報 応用情報

システム障害の影響を最小限に抑えるフォールトトレラントやヒューマンエラー回避技術など,信頼性設計に関する考え方,どのようなシステム構成,技術があるかを理解する。

用語例:フォールト,信頼性ブロック図,予備切替,並列運転,競合制御,,アクティブ-スタンバイ構成,アクティブ-アクティブ構成,フォールトトレラントシステム,フォールトアボイダンス,フェールセーフ,フェールソフト,フールプルーフ,無停止コンピュータ,UPS

システムの処理形態・利用形態・適用領域

この記事での学習内容 ITパスポート 基本情報 応用情報

  • 集中処理システムの仕組み,特徴を理解する。
  • 分散処理システムの仕組み,特徴を理解する。
  • バッチ処理,リアルタイム処理などシステムの利用形態の種類と特徴,どのような業務にどの形態が適しているかを理解する。

用語例:コスト性能比,保守要員の集中化、分散アーキテクチャ,管理責任,機能配分,水平機能分散システム,水平負荷分散システム,垂直機能分散システム,対話型処理,情報資源の組織への対応性,管理責任,TCO

 

コンピュータシステムの処理形態

コンピュータシステムの処理形態をコンピュータの配置の仕方で分類すると、集中処理と分散処理に分けられます。

1台の高性能コンピュータに複数の端末をつないでユーザー間で共有し、すべての処理を1台で行う方式を集中処理方式といいます。

対して、複数のコンピュータをネットワークで接続し、演算処理などを分担しながら、全体で処理を進める方式を、分散処理方式といいます。

分散処理の利点

分散処理システムの、1台のコンピュータに障害が発生しても、他のコンピュータが処理を肩代わりできるため、システム全体の保全性が高くなります。

また、処理が分散するため、負荷が一極に集中しにくい構造にできます。

分散処理システムは比較的短い期間で構築できるので、導入コストを安くできます。また、業務や技術の変化に合わせて、システムを部分ごとに入れ替えていける柔軟性があります。

分散処理のデメリット

パソコンのような小型で高性能なコンピュータを使った分散処理システムが広く利用されていますが、以下のようなデメリットもあります。

分散処理システムは、遠隔地にあるコンピュータ同士を接続する場合が多いので、リアルタイムに更新するデータの整合性が取りにくくなります。そのため、障害管理やセキュリティ管理の方法も、集中処理方式に比べて複雑になりがちです。

また、バックアップやバージョン管理といった運用管理の作業も各所で行うため、一括管理できる集中処理に比べて管理コストがかさみます。

シンクライアント

運用管理のコストがかかることを踏まえて、シンクライアントという方法を用いて分散処理を行う場合もあります。

これは、アプリケーションソフトやデータなどはサーバで一元管理し、ユーザが使うパソコンには必要最低限の機能だけを持たせて、運用管理のコストを下げようという方法です。

並列処理

ひとまとめの仕事を幾つかに分割し、複数のCPUやコンピュータに割り当てて同時並行に処理をすすめることで、システム全体の処理効率を上げる形態を並列処理といいます。

コンピュータ内部で行う並列処理としては、一つのCPU内に複数のコアを持たせて、同時並行に演算を行うマルチコアプロセッサがあります。

また、コンピュータそのものを複数設置し、並列に接続して処理を分散する技術を並列コンピューティングといいます。

この並列コンピューティングの一つに、グリッドコンピューティングがあります。グリッドコンピューティングは、遠隔地にある多数のパソコンや大型コンピュータ、ストレージなどをネットワークで結んで、複数のプロセッサに処理を分散し仮想的な高性能コンピュータを作り上げる技術です。

コンピュータシステムの利用形態

処理のタイミングでシステムの利用形態を分類すると、バッチ処理とリアルタイム処理に分けられます。

また、システムとユーザの関係で分類した場合、バッチ処理に対するものとして、対話型処理があります。

バッチ処理

バッチ処理とは、処理すべきデータを貯めておき、まとめて処理することです。一連の処理を自動化して、人手を使わずに一括処理することで効率をあげます。

例えば、日中の業務時間内に作られたデータを、業務が止まる夜間にまとめて自動バックアップする処理などがこれに当たります。その他、月毎に行う給与計算の処理などもバッチ処理の典型的な例です。

リアルタイム処理

一つひとつの仕事を即時に処理することをリアルタイム処理といいます。

例えば、ユーザの操作や状況の変化に応じて素早く処理する必要のある、コンピュータゲームなどがこれに当たります。その他、銀行ATMやPOSレジなどもリアルタイム処理の例です。

対話型処理

対話型処理は、処理のたびにユーザからの指示を受け付け、それに応じた処理結果を返すことを会話のように繰り返すものです。対話型処理には操作性の良さと応答時間が短いことが求められます。

多くのアプリケーションソフトがダイアログボックスを表示してユーザの指示を受け、指示に応じた結果を表示するといった対話型の処理を採用しています。

 

システム構成

この記事での学習内容 ITパスポート 基本情報 応用情報

代表的なシステム構成の種類,特徴を理解する。また,システム構成要素間の機能配分,冗長構成によるシステムの信頼性向上,負荷分散によるレスポンス速度の向上などを理解する。

用語例:デュアルシステム,デュプレックスシステム,クラスタ,クラスタリング,タンデム結合,マルチプロセッサシステム,ロードシェアリングシステム,バックアップサイト,ホットサイト,ウォームサイト,コールドサイト,主系(現用系),従系(待機系),シェアードエブリシング,シェアードナッシング,密結合,疎結合,シンクライアント,ピアツーピア,グリッドコンピューティング,仮想化,VM(Virtual Machine:仮想マシン),クラウドコンピューティング,SaaS,PaaS,IaaS,マイグレーション

コンピュータシステムの構成

システムの信頼性を上げる目的で、一つの仕事に二つのシステムを用意することがあります。デュアルシステムとデュプレックスシステムが代表的です。一つのシステムで処理する形態はシンプレックスシステムといいます。

デュアルシステム

全く同じシステムを2系統用意し、並行して同じ処理を行い、結果の突き合わせを行うことで信頼性を向上させる方式です。

片方の系統で障害が発生しても、故障した側を切り離し、残りの系列で処理を中断することなく稼働できます。

デュプレックスシステム

2系統のシステムを用意し、一方を主系としてオンライン処理を行い、もう一方は待機系としておく方式です。稼働中の主系システムが故障したら、待機中のシステムに切り替えて処理を続けます。

通常、待機系はバッチ処理や開発作業などで利用するため、デュアルシステムよりコストパフォーマンスに優れます。

ホットスタンバイ

デュプレックスシステムのうち、待機系のシステムを常時起動しておき、障害発生時に瞬時に切り替えられる設計をホットスタンバイといいます。

コールドスタンバイ

デュプレックスシステムのうち、待機系のシステムは通常別の処理を行い、主系の障害発生時にはその処理を中断して、システムを再起動してから切り替える構成をコールドスタンバイといいます。

ピアツーピア(P2P)

ネットワーク上のコンピュータに特別な役割を与えず、お互いを対等の関係でつなぐ形態をピアツーピアといいます。

ピアツーピア型のネットワークでは、一つのコンピュータがあるときはクライアントとなって、他のコンピュータの機能を利用し、またあるときはサーバとなってサービスを提供するので、専用のサーバは必要ありません。

ホットサイト

ほっとサイトとは、ハードウェア、ソフトウェア、データ等が主要サイトと同じ状態で作動しているバックアップサイトです。ここでいう「サイト」とはコンピュータシステムやその設置場所の意味です。

準備OKの状態で待機しているので、最も短時間に交代が可能ですが費用が高くなります。

コールドサイト

コールドサイトとは、ハードウェア、ソフトウェア、データの基本的なものは用意されているものの、完全には主要サイトと同じ状態にはなっていないバックアップサイトです。

費用は最も安いですが、交代するには最も時間がかかります。

ウォームサイト

ウォームサイトとはホットサイトとコールドサイトの中間の性質を持つバックアップサイトです。ハードウェア、ソフトウェア、データは主要サイトと似た状態に保たれているものの、交代するには少々の作業を必要とします。

費用も交代に要する時間も、ホットサイトとコールドサイトの中間です。

 

クライアントサーバシステム

この記事での学習内容 基本情報 応用情報

クライアントサーバシステムの特徴,2 層クライアントサーバシステム,3 層クライアントサーバシステムの構成を理解する。また,データベースに対するストアドプロシージャなど,関連技術の特徴を理解する。

用語例:プレゼンテーション層,ファンクション層,データベースアクセス層,クライアント,サーバ,シンクライアントシステム,RPC,ローカル処理の応答速度,コスト性能比,柔軟性,管理責任,サーバへの利用集中

クライアントサーバシステム

ネットワークに接続されたコンピュータが、それぞれファイル管理やWebページの提供などの特定の役割を担い、ネットワーク上で処理を分散する仕組みを、クライアントサーバシステムといいます。

サービスを提供する側のコンピュータをサーバ、サービスを要求する側のコンピュータをクライアントといいます。

サーバの種類

クライアントサーバシステムではネットワーク上に各種サーバ機能とクライアント機能を分散して配置します。

主なサーバ機能には次のようなものがあります。

名称役割
ファイルサーバファイルを集中管理し、ファイルの共有機能を提供する。
WebサーバWebページを格納し、クライアントに公開する。
メールサーバ電子メールの送受信、転送を行う。
プリントサーバ印刷要求をプリントキューに格納し、プリンタの共有機能を提供する。
データベースサーバデータベースを集中管理し、アクセス制御とデータの登録/削除などの機能を提供する。

サーバは一つのネットワーク上に複数配置することができます。また、1台のコンピュータが複数のサーバ機能を持つこともできます。
サーバが他サーバのクライアントとして処理要求を出すこともあります。

2層クライアントサーバ

サービスを提供するサーバとそれを利用するクライアントという形態を2層クライアントサーバといいます。

2層クライアントサーバには、ネットワークに接続されるクライアントの数が増えると、サーバとクライアント間の通信料が増えて、ネットワークの負荷やサーバの負荷が高くなるという欠点があります。

3層クライアントサーバ

ネットワークやサーバに掛かる負荷を減らす手法として、処理全体を論理的に3層構造に分け、データの加工などの一部の処理を別のサーバが行うことで、全体の通信料を抑えるという、3層クライアントサーバという形態もあります。

データ層
サーバ又はホストコンピュータにあるデータベースやファイルなどを指します。
アプリケーション層
データの処理や加工、ホストコンピュータへの接続など、中間の業務処理機能です。3層クライアントサーバシステムにおいては、データベースとクライアントの仲介役を果たします。
プレゼンテーション層
クライアント側の処理で、ユーザからの入力を受け付け、処理要求をサーバに送信し、サーバから戻ってきた結果を表示します。

RPC(遠隔手続き呼び出し:Remote Procedure Call)

遠隔地にあるサブルーチンや手続きを、ローカルなサブルーチンや手続きと同じように呼び出すこと、又はその方式をRPCといいます。

遠隔地にあるサブルーチンや手続きに対して、パラメータを渡して実行し、結果を得るインタフェースが基盤としてあって、プログラムの側は遠隔地にあることを意識しなくても良いようにするものです。

Webシステム

この記事での学習内容 基本情報 応用情報

Web システムの特徴,アーキテクチャ,構成,各層間の通信の仕組みを理解する。

用語例:Web ブラウザ,Web サーバ

Webシステムの特徴

世界各地のテキスト(文献)がインターネットで結ばれた世界で一つのシステムが、ワールドワイドウェブ(WWW)です。

Webシステムは、WWWの一部としての、特定の目的を持った情報システムで、クライアントサーバシステムの一種でもあります。例えば、インターネットバンキングや通販サイト、SNSなどもWebシステムの一例です。

Webシステムは次のような特徴を持っています。

  1. 閲覧ソフトウェア(ブラウザ)さえあれば、ソフトウェアをインストールしたり、遠隔地のサイトのアドレスを意識したりすることなく、簡単にシステムを利用できる。
  2. 文献システムがWWWの出発点なので、システムの操作説明も、システムへのアクセスも、データの入力も、結果の表示も一体となっており、操作性に優れている。
  3. 文献のリンクと同様に、複数のWebシステムの連携が容易である。例えば、不動産検索のシステムが、物件の場所を示すために地図システムと連携するなどの事例がある。
  4. Webシステムの提供者側は、宣伝、契約、機能提供、料金授受など、全てWWWで済ませることが出来る。

Webシステムの基本的な構成

Webシステムの基本的な構成は次のとおりです。WebシステムはWebサーバを中心としたシステムです。

アプリケーションサーバやデータベースサーバの役割はローカルな情報システムと同様です。ワールドワイドウェブへの窓口の部分をWebサーバが担当します。また、簡単なシステムの場合、Webサーバがアプリケーションサーバやデータベースサーバの役割を兼ねることもあります。
なお、Webサーバ側に複数のサーバを置く場合、セキュリティ面を考慮し、Webサーバ以外はWWWに直接接続せず、外部からはアクセス出来ないようにするのが一般的です。

Webシステムの仕組み

Webシステムの処理は次のようにして行われます。

  1. クライアントコンピュータ側で、HTMLなどのマークアップ言語や小さな部品で、説明や簡単な対話操作を処理します。
    これらの処理機構は、閲覧用のWebページと同じように、ブラウザの操作によってWebサーバから送信されます。
  2. Webサーバ側では、PHPやPerlなどのスクリプト言語や部品で複雑な処理を担当します。また、アプリケーションサーバやデータベースサーバへのアクセス処理も担当します。

インターネットとは

TCP/IPという通信プロトコルによって、全世界のネットワークを相互に接続した巨大なコンピュータネットワークのこと。起源はアメリカ国防省のARPANetと言われている。

WWWとは、インターネットの構成要素の一つで、インターネット上での文書のつながりのことを指している。よって、インターネットとWWWは厳密には別物。また電子メールやWWWはともにインターネットを使ったサービスの一つという位置付けである。

 

RAID

この記事での学習内容 基本情報 応用情報

複数の磁気ディスク装置をまとめて一つの装置として扱い,信頼性や速度を向上させる技術であるRAID の種類と特徴,NAS,SAN などストレージ関連技術の特徴を理解する。

用語例:RAID0,RAID1,RAID2,RAID3,RAID4,RAID5,RAID6,ストライピング,ミラーリング,パリティ,チャンクサイズ

RAIDの種類と代表的な特徴

RAID(Redundant Arrays of Inexpensive Disks)は、信頼性や速度の向上を目的として、複数のハードディスク装置をまとめて仮想的な一つのハードディスク装置に見せかけることです。

RAIDには以下の7つのレベルが定義されています。

レベル特徴
RAID0データを分割して、複数のディスクに分散して保存する。(ストライピング)
一つのディスクにアクセスが集中しないので、速度が向上する。
RAID1同じデータを二つのハードディスクに書き込む。(ミラーリング)
一方が故障しても他方を使用できるので信頼性が向上する。
RAID2データとエラー検出用のハミングコードを複数のディスクに分散して保存する。
実用化はされていない方式。
RAID3データをバイト単位で複数のディスクに保存。
パリティ情報を専用のハードディスクに書き込む。
RAID4データをセクタ単位で複数のディスクに保存。
パリティ情報を専用のハードディスクに書き込む。
RAID5パリティ情報を全てのディスクに分散して記録。
信頼性を向上させつつ、パリティ情報へのアクセス集中を避けて速度を向上させる。
RAID6パリティ情報を二つ生成して全てのハードディスクに分散して保存する。

この内、比較的よく用いられているのは、RAID0、RAID1、RAID5ですが、近年ではこれらの発展形である、RAID10やRAID01という種類も存在しています。

RAID0

RAID0は、ストライピングという方法でデータを複数のディスクに分散して保存する方式で、高速化を重視した方式です。

RAID0の場合、ハードディスクが1台でも故障すると全てのデータにアクセスできなくなるため、信頼性には劣ります。

最低でも2台のディスクが必要で、使用できるディスク容量としては、使用しているディスクの合計となります。

RAID1

RAID1は、同じデータを2つのディスクに書き込む、ミラーリングという方法を用いる方式で、信頼性を重視した方式です。

RAID1の場合、1台のハードディスクが故障しても、もう片方のディスクでデータにアクセスすることができます。

最低でも2台のディスクが必要で、使用できる容量は、使用しているディスクの半分となります。

RAID3

RAID3は、データを複数のディスクに分散し、復旧用のパリティを専用のディスクに書き込む方式で、信頼性を重視した方式です。

RAID3の場合、データディスクのうちの1台が故障した場合は、パリティ情報を使って復元が可能ですが、パリティ用のディスクが故障すると、データの復元が出来なくなってしまいます。

最低でも3台のディスクが必要で、使用できる容量は、使用しているディスク全体からパリティ用のディスクを除いた容量となります。

RAID5

RAID5は、データもパリティ情報も複数のディスクに分散する方式で、信頼性と高速性の両立を狙った方式です。

RAID5の場合、ディスクが1台故障しても、分散させているパリティ情報を使用して復元が可能で、稼働中にディスクの交換ができる「ホットスワップ」という機能を持っている製品もあります。

最低でも3台のディスクが必要で、使用できる容量は、使用しているディスク全体からディスク1台分を除いた容量となります。

RAID01

RAID0の発展形として、「RAID01」という方式があります。これは、RAID0でストライピングしたディスクをさらにミラーリングする、という方式です。

この場合、ディスクが1台故障すると、片方のストライピンググループは使用できなくなりますが、もう片方のグループを使ってデータにアクセスすることができます。
複数ディスクが故障した場合は、故障箇所によって異なり、同一のストライピンググループ内であれば復旧できるが、グループをまたがっていれば、全体がアクセス不可能となります。

最低でも4台のディスクが必要で、使用できる容量は、使用しているディスクの半分となります。

RAID10

RAID1の発展形として、「RAID10」という方式があります。(RAID イチゼロで、RAIDジュウではありません)これは、RAID1でミラーリングしたディスクに対してストライピングを行うという方式です。

この場合、1台のディスクの故障は復旧できますが、ミラーリングしているディスクの組が両方故障すると全体がアクセス不能となります。

最低でも4台のディスクが必要で、使用できる容量は、使用しているディスクの半分となります。

NAS

NAS(Network Attached Storage:ネットワークアタッチストレージ)は、ネットワークに直接接続して使用できる、ファイルサーバ機能付きのハードディスク装置です。

ファイルサーバを構築するのに比べて速度も早く管理が容易です。SANに比べて汎用的で安価な方式です。

SAN

SAN(Strage Area Network:ストレージエリアネットワーク)は、サーバとハードディスクや磁気テープ装置を高速なチャネルで結んだネットワークです。

NASと比較して、専用的でローカルな方式であり、膨大なデータを管理するのに特化しています。

信頼性設計

この記事での学習内容 基本情報 応用情報

システム障害の影響を最小限に抑えるフォールトトレラントやヒューマンエラー回避技術など,信頼性設計に関する考え方,どのようなシステム構成,技術があるかを理解する。

用語例:フォールト,信頼性ブロック図,予備切替,並列運転,競合制御,,アクティブ-スタンバイ構成,アクティブ-アクティブ構成,フォールトトレラントシステム,フォールトアボイダンス,フェールセーフ,フェールソフト,フールプルーフ,無停止コンピュータ,UPS

フォールトトレランス

コンピュータシステムに障害が発生した時に、正常な動作を保ち続ける能力のことをフォールトトレランスといい、その能力を備えたシステム設計をフォールトトレラント設計といいます。

フォールトトレラント設計

フォールトトレラント設計は、システムの一部を冗長化したり分散処理化したしすることによって、一部に障害が発生してもシステム全体が停止することがないようにする設計概念です。

フォールトトレラント設計には次のようなものがあります。

フェールセーフ
故障時にも、予備の機構を使って本来の機能を維持し、安全な方向に動作を固定してその影響を限定させる設計のこと。
フェールソフト
縮退運転ともいい、故障時にも、障害箇所を部分的に切り離し、システムの機能や処理能力を落としても停止することなく最小限の機能を維持できる設計のこと。
フールプルーフ
「人間は必ずミスをするもの」という前提に立って、ユーザが操作ミスをしても故障しないような設計のこと。
冗長化

冗長化とは、故障に備えるために、設備を必要な量よりも多めに用意することです。具体的にはディスクのミラーリングや、システム全体の二重化などが挙げられます。

フォールトアボイダンス

フォールトアボイダンス(故障排除)とは、システム又はそれを構成する要素の故障の発生を可能な限り排除することです。フォールトトレランスと反対の概念であると同時に、フォールトトレランスと組み合わせて、費用対効果のバランスをとる場合もあります。

フォールトアボイダンスと実現する手段として、高信頼部品の採用、高信頼設計、および品質管理の徹底などがあります。

 

 

システムの評価指標

情報処理技術者試験での学習内容

【応用情報・基本情報】
システムの性能,信頼性,経済性を測るための考え方,評価指標,それらを高める設計の考え方を修得し,応用する。

【ITパスポート】
システムの性能,信頼性,経済性の考え方を理解する。

(1)システムの性能特性と評価 ITパスポート 基本情報 応用情報

1.システムの性能指標

システムの性能を評価する際の評価項目の種類や特徴,その指標を理解する。

用語例:レスポンスタイム(応答時間),スループット,ベンチマーク,システムモニタ,TPC,SPEC(Standard Performance Evaluation Corporation),SPECint,SPECfp,モニタリング,ギブソンミックス

2.キャパシティプランニング

キャパシティプランニングの目的,考え方,システムに求められる処理の種類,量,処理時間などを検討し,性能要件からサーバやストレージなどの性能諸元を見積り,システムの性能を継続的に把握,評価するという手順を理解する。

用語例:負荷,サイジング,スケールアウト,スケールアップ,容量・能力管理,システムパラメータ,プロビジョニング

(2)システムの信頼性特性と評価 ITパスポート 基本情報 応用情報

1.RASIS

システムを評価する際の評価項目となるReliability(信頼性),Availability(可用性),Serviceability(保守性),Integrity(完全性),Security(安全性)とその指標を理解する。

2.信頼性指標と信頼性計算

MTBF,MTTR,稼働率などシステムの信頼性を評価する際の評価項目とその指標,並列システム,直列システムの稼働率の計算方法を理解する。

用語例:バスタブ曲線

(3)システムの経済性の評価 ITパスポート 基本情報 応用情報

システムの経済性に関する評価の考え方,評価項目,指標,評価の対象と具体的な方法や,初期コスト(イニシャルコスト)やTCO による評価を理解する。また,初期コスト,運用コスト(ランニングコスト)に含まれる費用,直接コストと間接コストの区別などを理解する。

 

システムの性能特性と評価

この記事での学習内容 ITパスポート 基本情報 応用情報

システムの性能を評価する際の評価項目の種類や特徴,その指標を理解する。

用語例:レスポンスタイム(応答時間),スループット,ベンチマーク,システムモニタ,TPC,SPEC(Standard Performance Evaluation Corporation),SPECint,SPECfp,モニタリング,ギブソンミックス

システムの性能評価

システムの性能を数値化して評価するための指標には、次のものがあります。

  • レスポンスタイム: 入力完了から出力完了までの応答時間、内部処理時間やデータ転送時間など
  • スループット: 単位時間あたりのシステムの仕事量
  • ターンアラウンドタイム: 情報がシステムを一巡して返ってくるまでの時間


幾つかのシステムの性能を比較するために、同じ条件下で同じ処理をさせてスループットなどを計測するテスト方式を、ベンチマークテストといいます。

ベンチマーク

ベンチマークとは、異なるコンピュータのハードウェアやソフトウェアの性能を表す指標のことです。

ベンチマークテストでは、特別なプログラムを実行して性能を測定します。高性能コンピュータの性能を測る「LINPACK」、トランザクション処理の性能を測る「TPC」、3次元画像処理性能の性能を測る「3DMark」などがあります。

インストラクションミックスと同様の指標の仲間ですが、インストラクションミックスは使用を基に計算できるのに対して、ベンチマークは主にプログラム実行によって測定します。

TPC(Transaction Processing Performance Council)

TPC(トランザクション処理性能評議会)は、異なるトランザクション処理システムの共通のベンチマークを制定している企業等の団体です。制定されたベンチマークはTPC-A, B, C, D, E などと命名されています。

SPECint(Standard Performance Evaluation Corporation Integer benchmark)

SPECint(標準性能評価法人整数指標)は、標準性能評価法人(SPEC)によって制定された、異なるコンピュータの整数演算を測定するベンチマークです。

SPECfp(Standard Performance Evaluation Corporation Floating Point number benchmark)

SPECfp(標準性能評価法人浮動小数点数指標)は、標準性能評価法人(SPEC)によって制定された、異なるコンピュータの浮動小数点数演算を測定するベンチマークです。

モニタリング

モニタリングとは、情報システムの全体が意図通りに運用されているかどうかを把握するために、実行状況を眺めている活動です。次のような事項を監視します。

  • さまざまな処理を効率的に処理しているか
  • 負荷が大きくなって効率が低下していないか
  • サーバやネットワークが停止していないか

キャパシティプランニング

情報システムのニーズによって、情報システムの処理性能や数量などを見積もって、費用や納期を考慮しつつ最適なシステム容量を計画することを、キャパシティプランニングといいます。

情報システムが稼働を開始した後も、利用件数の増加に応じてサーバを高性能のものへ変えたり、外部記憶装置の容量を増やしたり、通信回線の容量を増やしたりすることがあります。

したがって、キャパシティプランニングはシステムの新規開発のときだけではなく、稼働を開始した後も継続的に行われます。

 

システムの信頼性特性と評価

この記事での学習内容 ITパスポート 基本情報 応用情報

  • システムを評価する際の評価項目となるReliability(信頼性),Availability(可用性),Serviceability(保守性),Integrity(完全性),Security(安全性)とその指標を理解する。
  • MTBF,MTTR,稼働率などシステムの信頼性を評価する際の評価項目とその指標,並列システム,直列システムの稼働率の計算方法を理解する。

用語例:バスタブ曲線

システムの信頼性

システムの信頼性を評価する指標に「RASIS」があります。RASISとは、下の表に上げる各キーワードの頭文字を取ったものです。

Reliability(信頼性)故障や障害の発生しにくさ、安定性を表します。
Availability(可用性)稼働している割合の多さ、稼働率を表します。
Serviceability(保守性)障害時のメンテナンスのしやすさ、復旧の速さを表します。
Integrity(保全性・完全性)障害時や過負荷時におけるデータの書き換えや不整合、消失の起こりにくさを表します。
Security(機密性)情報漏えいや不正侵入などの起こりにくさを表します。

システムの稼働率

システムの信頼性を数値的に評価する基準として、MTBFやMTTR、稼働率が使われます。稼働率はシステムの全稼働時間に対する、正常に動作している時間の割合です。

MTBFとMTTR

MTBF(Mean Time Between Failure:平均故障間隔)
故障から次の故障までの時間の平均値です。システムが正常に稼働していた時期を指します。
MTTR(Mean Time To Repair:平均修復時間)
修理にかかる時間の平均値です。システムが停止していた時期を指します。

全稼働時間を「MTBF+MTTR」とし、全稼働時間のうち正常に稼働した時間(MTBF)の割合を稼働率として求めます。

稼働率やMTBF、MTTRはRASISの尺度となる値です。

MTBFが長い:停止しにくく「信頼性」の高いシステム
MTTRが短い:復旧が速く「保守性」の高いシステム
稼働率が高い:「可用性」の高いシステム

直列接続の稼働率

いくつかの装置やシステムを組み合わせて構築したシステム全体の信頼度は、個々の装置などの稼働率から求めることができます。

二つ(又はそれ以上)のサブシステムが直列の状態で連結している構造のシステムでは、いずれかのサブシステムが停止するとシステム全体の機能が停止してしまいます。この場合、システム全体の稼働率は各サブシステムの稼働率をかけ合わせた値となります。

並列接続の稼働率

二つ(又はそれ以上)のサブシステムが並列の状態で連結している構造のシステムは、いずれかのサブシステムが停止しても、残りのサブシステムで処理と代行できるため、システム全体の停止を避けられる構造です。この場合、システム全体の稼働率は以下の式で求めます。

バスタブ曲線

バスタブ曲線とは、システムの故障率曲線のことで、機械や装置の時間経過tに伴う故障率y(t)の典型的な変化を表す曲線のことです。形状が浴槽(バスタブ)の底の曲線に似ているためバスタブ曲線と呼ばれます。

時間経過により、初期故障期、偶発故障期、摩耗故障期の3期に分けられます。

  • 初期故障機には、故障率が高い状態から始まって、次第に故障率が減少して、安定した状態へ移ります。主に製造上の欠陥による故障が起きます。
  • 偶発故障期には、故障率は時間経過にかかわらず、ほぼ一定です。故障は主に偶発的に起きます。
  • 摩耗故障機には、故障率は次第に増加して寿命に達したと判断されます。故障は主に摩耗などによっておきます。

ソフトウェアの場合「摩耗」というのはイメージしにくいですが、技術の陳腐化による保守性の低下や、セキュリティホールの発覚など、摩耗機に顕在化するリスクも存在します。

システムの経済性の評価

この記事での学習内容 ITパスポート 基本情報 応用情報

システムの経済性に関する評価の考え方,評価項目,指標,評価の対象と具体的な方法や,初期コスト(イニシャルコスト)やTCO による評価を理解する。また,初期コスト,運用コスト(ランニングコスト)に含まれる費用,直接コストと間接コストの区別などを理解する。

システムの経済性

 

システムを新たに導入するときには、ソフトウェアの開発費用はハードウェアの購入設置費用といった初期コストがかかります。

また、導入後には設備維持費や光熱費、人件費、リース料などの運用コスト(ランニングコスト)がかかります。

システム導入を検討する際には、ランニングコストを含めた総保有費用(TCO:Total Cost of Ownership)を試算して、費用対効果を検討する必要があります。

リースとレンタル

・リース
 数ヶ月~数年の長期の賃貸契約
 期間あたりの費用は安い
 基本的には中途解約は出来ない
 修繕費などの維持管理コストは貸した側が負担する

・レンタル
 数日程度の短期の賃貸契約
 期間あたりでは割高
 修繕費用は借りた側が負担する

 

オペレーティングシステム(OS)

情報処理技術者試験での学習内容

【応用情報】
・OS の種類,特徴,機能,構成を修得し,応用する。
・ジョブ管理,タスク管理,記憶管理などOS の代表的な機能,役割を修得し,応用する。
・プログラムの形態,性質,OS の動向を修得し,応用する。

【基本情報】
・OS の種類,特徴,機能,構成を理解し,担当する事項に適用する。
・ジョブ管理,タスク管理,記憶管理などOS の代表的な機能について,管理の仕組みを
理解し,担当する事項に適用する。

【ITパスポート】
オペレーティングシステム(OS:Operating System)の必要性,機能,種類を理解する。

(1)OS の種類と特徴 ITパスポート 基本情報 応用情報

ソフトウェアの体系におけるOS の位置付けと必要性,汎用機用,パソコン用,リアルタイム用などのOS の種類,特徴を理解する。

用語例:システムソフトウェア,UNIX,PC 用OS,オープンOS,リアルタイムOS,VM(Virtual Machine:仮想マシン),互換性

(2)OS の機能と構成 ITパスポート 基本情報 応用情報

OS の機能,構成,カーネル,言語プロセッサなどを理解する。

用語例:マイクロカーネル,モノリシックカーネル,ミドルウェア,カーネルモード(スーパバイザモード),特権モード,ユーザモード,非特権モード,コンパイラ,インタプリタ,リンケージエディタ,サービスプログラム,仮想記憶管理,プロセス管理,タスク管理,記憶管理,データ管理,運用管理,障害管理,入出力管理,ユーザ管理,割込み,多重(マルチ)プログラミング,ブートストラップ,ネットワークブート,マルチブート,フラッシュブートローダ

(3)ジョブ管理 基本情報 応用情報

一つのまとまった仕事の単位であるジョブと,それを構成するジョブステップの概念,ジョブ管理の手順,ジョブ管理に関連する制御プログラムの役割を理解する。

用語例:ジョブスケジューラ,マスタスケジューラ,セション,省力化,自動運転,システム管理,バックグラウンドジョブ,バッチ処理,cron

(4)タスク管理 基本情報 応用情報

1.タスクと状態遷移

タスクとジョブステップ,スレッドとの関係,タスクの生成から実行,消滅までの状態遷移,ディスパッチャの役割を理解する。

用語例:軽量プロセス,実行可能状態,実行状態,待ち状態,プロセス,スレッド

2.多重(マルチ)プログラミング(マルチタスク)とスケジューリング

多重(マルチ)プログラミングの考え方,タスクのスケジューリングの代表的な方式について,スケジューリングの方法,特徴,スケジューリングにおけるトリガと優先順位の役割,同期制御・排他制御の必要性,実現方法を理解する。また,タスクとタスクの同期,タスク間でのデータの受け渡し,マルチスレッドの考え方,並列処理などを理解する。

用語例:プリエンプティブ方式,ノンプリエンプティブ方式,タイムスライス方式,イベントドリブン方式,フィードバック待ち行列方式,処理時間順方式,優先順,静的優先順位方式,動的優先順位方式,ラウンドロビン,SJF(Short Job First),最短時間順,割込み禁止,マルチCPU,排他制御,FCFS(First Come First Served),タイムクウォンタム,リソーススタベーション,SVC(Super Visor Call)割込み,入出力終了割込み,ディスパッチ

(5)データ管理 基本情報 応用情報

補助記憶装置へのアクセスを装置に依存しないインタフェースで応用プログラムに提供する機能を理解する。

用語例:レコード,スペース管理,カタログ管理,ファイル保護

(6)入出力管理 基本情報 応用情報

入出力装置を効率良く動作させる入出力制御方式の種類,特徴,チャネルの種類,データ転送方式など,入出力制御の仕組みを理解する。また,スプール,バッファリングなどCPUのアイドル時間を減らして効率を上げるための仕組みを理解する。

IOCS(Input/Output Control System:入出力制御システム),スプーリング,バッファプール,入出力ポート(I/O ポート),入出力マッピング(I/O マッピング),メモリマッピング,チャネル,チャネル制御方式,DMA(Direct Memory Access:直接記憶アクセス),チャネルサブシステム,セレクタチャネル,マル
チプレクサチャネル,入出力割込み,メモリマップドI/O,I/O マップドI/O

(7)記憶管理 基本情報 応用情報

1.実記憶管理

記憶領域の管理方式である固定区画方式,可変区画方式など,実アドレス空間の割当て方式の特徴,フラグメンテーションとその対策を理解する。また,主記憶装置を効率良く使うためのスワッピングとオーバレイを理解する。

用語例:実アドレス方式,単一連続割当て方式,記憶域管理アルゴリズム(ファーストフィット,ベストフィット,ワーストフィット),メモリコンパクション,ロールイン,ロールアウト,スワップイン,スワップアウト,セグメント方式,コンパクション

2.仮想記憶管理

実記憶と仮想記憶の関係,仮想記憶の有効性,仮想記憶方式の種類と特徴,動的アドレス変換の仕組みを理解する。また,ページング方式の代表的なページ置換えアルゴリズムについて,ページ置換え手順を理解する。

用語例:ベースアドレス方式,セグメント方式,セグメントページング方式,単一仮想空間方式, 多重仮想空間方式, スラッシング, DAT ( Dynamic Address Translator:動的アドレス変換),TLB(Translation Lookaside Buffer),ページフォールト,ページイン,ページアウト,デマンドページング,ページリプレースメント,LRU,FIFO,ワーキングセット

(8)ネットワーク制御 基本情報 応用情報

ネットワーク制御プログラムの役割,機能,OS における位置付けを理解し,OS が提供する通信インタフェースを理解する。

用語例:ネットワークOS,LAN,WAN,プロトコル制御,リアルタイムOS,通信プロトコル,TCP/IP,OSI 基本参照モデル

(9)運用の管理 基本情報 応用情報

システム始動処理(OS の初期化),システム終了処理,オペレータとの交信,ユーザ管理機能,スケジューリング,システムモニタリングなど,運用に関する容易性や柔軟性を実現する機能を理解する。

用語例:プロファイル,ユーザアカウント,システム利用権,ファイルアクセス権,端末利用権,ディスククオータ

(10)ユーザ管理 基本情報 応用情報

ユーザアカウントの種類,特徴を理解し,アカウントの作成方法,パスワードの設定や変更方法,権限の付与や変更方法などを理解する。また,アカウントを一元管理するためのディレクトリサービスなどを理解する。

用語例:スーパユーザ,root,Administrator,ゲスト,管理者権限,LDAP,Active Directory

(11)セキュリティ制御 基本情報 応用情報

OS には,アクセス制御,フロー制御,推論制御,暗号化制御などのセキュリティ制御機能があることを理解し,OS での制御方法の種類と特徴を理解する。また,ファイル保護,外部からの侵入検出と防御などのセキュリティが施されたセキュリティカーネルの特徴を理解する。

用語例:外部セキュリティ,内部セキュリティ,多重レベルセキュリティ,BLP(Bell-LaPadula)モデル,ロギング機能,オーディット機能,アカウンタビリティ,信頼プロセス, 完全性, 隔離, 認証, 検証可能性, ITSEC ( Information Technology Security Evaluation Criteria)

(12)障害管理 基本情報 応用情報

障害の検出,試験と診断,自動訂正,障害の記録,再構成,リスタート,原因の解決など,障害発生から対策完了までの一連の工程を理解する。

用語例:タイマ監視,CPU 監視装置,ハードウェア障害,ソフトウェア障害,再構成(動的装置再構成,自動CPU 再構成),多重化(入出力パスの多重化,補助記憶装置の二重化,ライブラリの二重化,ディスクの二重書き),システムの多重化(デュアルシステム,デュプレックスシステム),ホットスタンバイシステム,障害回復ルーチン

(13)プログラムの形態と性質 応用情報

プログラムには,ソースプログラム,オブジェクトプログラムなどの形態があること,ソースプログラムの管理対象には,データ構造定義,レコード構造定義などのマクロソースがあることを理解する。また,再入可能プログラム,逐次再使用可能プログラムなどの性質と,それらの使用のされ方を理解する。

用語例:原始プログラム,目的プログラム,コンパイラ,ロードモジュール,ローダ,ライブラリ,動的リンキング,リエントラント,API,ABI(Application Binary Interface),POSIX(Portable Operating System Interface),SCM(Software Configuration Management:ソフトウェア構成管理)

(14)サービスプログラム 応用情報

サービスプログラムの種類と特徴を理解する。

用語例:ユーティリティプログラム,整列プログラム,併合プログラム,フォーマッティング,アーカイバ,データ編集,ファイルコピー,バックアップ

(15)OS の動向 応用情報

OS に関連する最新のトピックス,標準化,技術動向などを理解する。

用語例:移動型小型OS,JavaOS,携帯電話系OS,OSE(Open Systems Environment),ODP(Open Distributed Processing:開放型分散処理),セキュアOS,クラウドコンピューティング用OS

OSの種類と特徴

この記事での学習内容 ITパスポート 基本情報 応用情報

ソフトウェアの体系におけるOS の位置付けと必要性,汎用機用,パソコン用,リアルタイム用などのOS の種類,特徴を理解する。

用語例:システムソフトウェア,UNIX,PC 用OS,オープンOS,リアルタイムOS,VM(Virtual Machine:仮想マシン),互換性

オペレーティングシステム(Operating System:OS)

OSはプログラムの実行を管理するソフトウェアです。作業の運用(オペレーション)に由来しています。

OSは「プログラムを主記憶装置に読み込む」「ユーザが入力した文字を画面に表示させる」などといった、コンピュータの基本的な動作を指示するソフトウェアであり、OSがあることによって、さまざまなアプリケーションソフトを起動できるようになります。

OSの種類

主なOSには次のようなものがあります。

名前インタフェースハードウェア特徴
WindowsGUIPC
(PC/AT互換機)
マルチタスク、プラグアンドプレイ等に対応
PC向けOSのデファクトスタンダード
Mac OSGUIPC
(Macintosh)
マルチタスク、プラグアンドプレイ等に対応
GUIに優れ、マルチメディア系のソフトが豊富
UNIXCUIサーバマルチユーザ、マルチタスク対応OS
ソースコードが公開されており移植性が高い
LinuxCUIPC/サーバPC上でUNIX環境を作るために開発され、無償で配布されるOS

OSの働き

OSの主な働きには次のものがあります。

入出力管理
周辺機器のコントロールやヒューマンインタフェースの提供など、コンピュータが動作する環境を管理します。
タスク管理
タスクの実行管理を行います。一度に複数のアプリケーションを動かすOSの機能を、マルチタスクといいます。
メモリ管理
マルチメディア処理のような大容量のメモリが必要な処理にも対応できるよう、メモリの使用領域を管理して効率良く使えるようにします。
ファイル管理
ディレクトリ(フォルダ)などを使ってファイルを効率よく格納します。
ユーザ管理
ユーザIDの登録・抹消の管理、ユーザ別のアクセス権の管理を行います。

*ハードウェアやOSによって構成される、アプリケーションソフトを実行するための動作環境のことをプラットフォームといいます。

OSの機能と構成

この記事での学習内容 ITパスポート 基本情報 応用情報

OS の機能,構成,カーネル,言語プロセッサなどを理解する。

用語例:マイクロカーネル,モノリシックカーネル,ミドルウェア,カーネルモード(スーパバイザモード),特権モード,ユーザモード,非特権モード,コンパイラ,インタプリタ,リンケージエディタ,サービスプログラム,仮想記憶管理,プロセス管理,タスク管理,記憶管理,データ管理,運用管理,障害管理,入出力管理,ユーザ管理,割込み,多重(マルチ)プログラミング,ブートストラップ,ネットワークブート,マルチブート,フラッシュブートローダ

システムソフトウェア

システムソフトウェアは、基本ソフトウェアとミドルウェアに大別されます。基本ソフトウェアというのは、広い意味でのOSです。

基本ソフトウェアには、狭義のOS、言語プロセッサ、サービスプログラムが含まれます。

ミドルウェア

ミドルウェアはOSとアプリケーションソフトウェアの中間で動作するソフトウェアです。多くのアプリケーションソフトウェアに共通する機能を標準的なインタフェースで提供します。

ミドルウェアの例としては、Java VMなどの仮想マシン環境や、データベース管理システム、クラスタ管理システム、統合運用管理システムなどがあります。

API(Application Programming Interface)

多くのアプリケーションに共通する、ウィンドウ操作や印刷などの機能については、OSやミドルウェアで用意されていることがあります。これらをアプリケーションから、呼び出すための仕様をAPIといいます。

OSの構成

OSはカーネルとカーネルモジュールから構成されています。

カーネルは、メモリ管理やタスク管理、周辺機器の管理などを行うOSの中核的な機能です。

カーネルモジュールは必要に応じてOSに追加される部品で、デバイスドライバなどがあります。

OSの実行モード

OSの実行モードには以下のものがあります。

  • カーネルモード:あらゆるハードウェアにアクセス可能(OSの実行モード)
  • ユーザモード:周辺機器やメモリへのアクセスが制限・監視される(通常のアプリケーションの実行モード)

マイクロカーネル

マイクロカーネルとは、オペレーティングシステムの同心円構造において、タスク管理やメモリ管理などの最小限の機能だけを担うように設計されたカーネルです。それ以外の機能は外側の層として作動します。マイクロカーネルの特徴は、簡潔で保守性が良いことです。

モノリシックカーネル

モノリシックカーネルとは、オペレーティングシステムの同心円構造において、プログラム管理、メモリ管理、入出力管理、ネットワーク管理などの基本的な機能をモノリシック(一枚岩)のように担うように設計されたカーネルです。

言語プロセッサ

言語プロセッサとは、ある文法に従うコンピュータ言語を処理するソフトウェアの総称です。オペレーティングシステムが作業を運用するのに対して、言語プロセッサは作業の段取り(プログラム)を準備するものです。

言語プロセッサには次のような種類があります。

名称特徴
アセンブラアセンブラ言語を機械語へ翻訳する。
コンパイラ高水準言語を機械語へ翻訳する。
インタプリタ高水準言語の文を一つひとつ解釈しながら実行する。
ジェネレータパラメータを入力してプログラムを生成する。
エミュレータ別の種類のコンピュータ用のプログラムを実行する。
トランスレータ高水準言語を異なる高水準言語に翻訳する。

言語プロセッサが入力するプログラムを原始プログラム、言語プロセッサが出力する機械語などのプログラムをオブジェクトモジュールといいます。

サービスプログラム

サービスプログラムとは、コンピュータの基本ソフトウェアの中で、オペレーティングシステム、言語プロセッサ以外の、様々な機能を提供するソフトウェアのことで、ユーティリティプログラムともいいます。

言語プロセッサがプログラムという製品(プロダクト)を提供するのに対して、サービスプログラムは利用者が直接何かを処理するための役務(サービス)を提供します。

プログラム実行の手助けになる機能や、システム運用のための定型業務を行うプログラムなどがあります。

 

ジョブ管理

この記事での学習内容 基本情報 応用情報

一つのまとまった仕事の単位であるジョブと,それを構成するジョブステップの概念,ジョブ管理の手順,ジョブ管理に関連する制御プログラムの役割を理解する。

用語例:ジョブスケジューラ,マスタスケジューラ,セション,省力化,自動運転,システム管理,バックグラウンドジョブ,バッチ処理,cron

ジョブ

ジョブとは、メインフレームコンピュータやサーバに処理させる一連の仕事のまとまりを指し、ユーザから見た仕事の単位となります。一つのジョブはバッチ処理させる幾つかのジョブステップのまとまりで、ジョブ制御言語によって記述されます。
一つのジョブステップはいくつかのタスクで構成されます。タスクはシステム側から見た仕事の単位となります。

ジョブステップ

ジョブステップとは、一つのジョブを構成するより小さな単位です。ジョブとタスクの中間のまとまりです。一つのジョブステップが一つのプログラムの実行に相当します。

ジョブ管理

ジョブ管理はオペレーティングシステムの管理作業の一つであり、ユーザから依頼されるジョブ及びジョブステップの実行を管理します。オペレーティングシステムを構成するジョブ管理プログラムが、次のような処理をします。

  • ジョブの起動
  • ジョブステップの実行順序の管理
  • ジョブの終了の監視・報告
  • 複数のジョブの実行順序の管理
  • 日時指定のジョブの実行や定例的なジョブの反復

なお、ジョブ管理プログラムの構成は下記のようになっています。

  • マスタスケジューラ
  • ジョブスケジューラ
    • リーダ
    • イニシエータ
    • ターミネータ
    • ライタ

マスタスケジューラ

マスタスケジューラは、ジョブスケジューラより上位の制御をするプログラムです。オペレータからの指示をジョブスケジューラに伝えたり、ジョブスケジューラからの状況報告をオペレータに伝えたりします。(ユーザとジョブ管理プログラムとのやりとりを管理する部分)

ジョブスケジューラ

ジョブスケジューラは、待ち行列として並んでいるジョブの実行順序を制御します。

ジョブスケジューラは下記のプログラムから構成されています。

リーダ

ジョブ管理プログラムの最初の処理をするリーダは、ユーザから依頼された一連のジョブ制御分を入力して、解釈するプログラムです。

イニシエータ

イニシエータはジョブに必要な資源を割り振る準備処理をして、プログラムの実行を開始します。

ジョブの実行順序は、下記のようなルールで管理されます。

  1. 原則としてジョブは入力された順序に実行されます。
  2. 優先順位が指定されていれば、それに従います。
  3. 前提となるジョブの正常終了や異常終了に応じて、後継のジョブの実行開始や実行中止が指定されていれば、それに従います。
  4. 開始日時が指定されていれば、それに従います。
ターミネータ

ターミネータは、ジョブが使用した資源を解放する後始末をします。

ライタ

ライタは、ジョブの出力を処理します。例えばプリンタへの出力は速度が遅いので、指定したプログラムの実行中は高速な外部記憶装置へいったん出力して、ライタがプリンタへの出力を引き継ぎます。ジョブの実行とプリンタへの出力を並行処理することによって、コンピュータシステムの効率を向上させます。

ジョブスケジューリング

ジョブ管理プログラムでの、ジョブの処理順序をまとめると、以下のようになります。

  1. リーダが一連のジョブ制御文を入力する。
  2. ジョブスケジューラが、ジョブの実行順序をスケジューリングする。
    1. イニシエータがジョブの開始処理をする。
    2. <ジョブステップとして指定したプログラム群が実行される>
    3. ターミネータがジョブの終了処理をする。
  3. 必要ならマスタスケジューラが、オペレータとジョブスケジューラのやりとりを仲介する。
  4. ライタがジョブの報告を出力する。

タスク管理

この記事での学習内容 基本情報 応用情報

  • タスクとジョブステップ,スレッドとの関係,タスクの生成から実行,消滅までの状態遷移,ディスパッチャの役割を理解する。
  • 多重(マルチ)プログラミングの考え方,タスクのスケジューリングの代表的な方式について,スケジューリングの方法,特徴,スケジューリングにおけるトリガと優先順位の役割,同期制御・排他制御の必要性,実現方法を理解する。また,タスクとタスクの同期,タスク間でのデータの受け渡し,マルチスレッドの考え方,並列処理などを理解する。

用語例:軽量プロセス,実行可能状態,実行状態,待ち状態,プロセス,スレッド、プリエンプティブ方式,ノンプリエンプティブ方式,タイムスライス方式,イベントドリブン方式,フィードバック待ち行列方式,処理時間順方式,優先順,静的優先順位方式,動的優先順位方式,ラウンドロビン,SJF(Short Job First),最短時間順,割込み禁止,マルチCPU,排他制御,FCFS(First Come First Served),タイムクウォンタム,リソーススタベーション,SVC(Super Visor Call)割込み,入出力終了割込み,ディスパッチ

タスクとジョブステップ

ジョブステップは一つのプログラムの実行に相当し、一つのプログラムはいくつかの小さなタスクに分解されて、CPUや入出力チャネルなどのハードウェアで実行されます。

ジョブステップの実行順序は、ユーザがジョブ制御分によって指定することができます。これは人間の作業の日程計画に相当します。

一方、タスクの実行順序はユーザが指定するというよりも、前のタスクの実行終了によるCPUや入出力チャネルの空き具合に応じて、臨機応変に決定されます。

スレッド

タスクと似た仕事の単位には、プロセスやスレッドがあります。これらはオペレーティングシステムの種類によって用語の異なる同義語であることがあります。あるいはハードウェアの並列処理の細かさによる階層関係であることもあります。

典型的には、一つのタスクが幾つかのプロセスで構成され、一つのプロセスが幾つかのスレッドで構成されます。それらが並行処理の単位になり、ハードウェアを有効利用して、性能を向上させます。

タスクの生成から実行

タスクは、ハードウェアで実行される小さな作業単位であり、次のように状態遷移をして処理されます。

タスクが生成されると「実行可能状態」になります。ディスパッチャによって実行可能状態から「実行状態」になります。

タスクの消滅までの状態遷移(実行可能状態、実行状態、待ち状態)

実行状態のタスクは、入出力処理の間は待ち状態になります。入出力処理が終わると実行可能状態になります。
実行状態のタスクは、割り込みがあると実行状態から実行可能状態になります。

どちらの場合も実行可能状態のタスクはディスパッチャによる実行再開を待ちます。

タスクの実行が完了すると、使用した資源が開放され、タスクは消滅します。

ディスパッチャ

ディスパッチャとは並行処理されている複数のタスクやプロセスに、次々とCPUへ割り振るプログラムです。CPUの処理は極めて短時間なので、人間がジョブ制御文で実行順序を計画するよりも、ディスパッチャに実行制御を任せるほうが効率的です。

優先度順方式

スケジューリングの一種である優先度準方式は、各タスクに優先度を設定して、優先度の順に実行する方式です。

即時処理すべき業務と、それ以外の業務を区別することなどに役立ちます。優先度に低いタスクは、待ち時間が長引く可能性があります。

ラウンドロビン方式

スケジューリングの一種であるラウンドロビン方式は、中断されたタスクが待ち行列の最後に並ぶことによって、グルグル回るように順番が来るという単純な方式です。

多重プログラミング(マルチプログラミング)

多重プログラミングとは、1台のコンピュータで複数のプログラムを見かけ上並行処理する方式です。タスク管理などによってCPUと入出力チャネルを並行処理させることによって、ハードウェア資源を有効に利用し、処理能力を向上させます。

多重プログラミングにおけるタスクのスケジューリング方式には以下のような種類があります。

プリエンプティブ方式

プリエンプティブ方式は、本格的なタイムスライス方式です。オペレーティングシステムがハードウェアタイマを用いて、もれなく制御する方式です。

タイムスライス方式

スケジューリングの一種であるタイムスライス方式は、ハードウェア大麻によるクロック割込みによって、一定時間(タイムクォンタム)で次のタスクに切り替える方式です。長時間を要するタスクの終了を、他のタスクが待つ必要がなくなります。

タイムクォンタム

タイムクォンタムとは、タイムスライス方式においてタスクを切り替える一定時間のことです。タイムクォンタムを短くするほど、タスクの待ち時間が減る可能性が高まります。

タイムクォンタムと切替回数は反比例するので、タイムクォンタムを短くするほど、切替処理のオーバーヘッドが増える欠点があります。

ノンプリエンプティブ方式

ノンプリエンプティブ方式とは、簡易的なタイムスライス方式です。オペレーティングシステムの管理のもとに実行されるプログラムの側が、自発的に空き時間を開放する方式です。

オペレーティングシステムの処理が完結になりますが、何らかの理由で空き時間の開放がなされないと、ハードウェア資源の利用効率が落ちるという欠点があります。

マルチタスク(プログラミング)の実行イメージ

以下の2つのプログラムを並行処理させた場合のイメージは以下のようになります。

  • プログラムA:CPU(20ms)→I/O(30ms)→CPU(20ms)→I/O(40ms)→CPU(10ms)
  • プログラムB:CPU(10ms)→I/O(30ms)→CPU(20ms)→I/O(20ms)→CPU(20ms)

データ管理

この記事での学習内容 基本情報 応用情報

補助記憶装置へのアクセスを装置に依存しないインタフェースで応用プログラムに提供する機能を理解する。

用語例:レコード,スペース管理,カタログ管理,ファイル保護

データ管理

データ管理とは、論理的なファイルの入出力の管理です。オペレーティングシステムの一部である、データ管理プログラムが管理します。

特にメインフレームコンピュータのデータ管理では、次のようなことを扱います。

  • 物理的な入出力単位であるブロックを、論理的な入出力単位であるレコードとして扱えるようにする。
  • 固定長レコードや可変長レコードなどの様々な種類のレコードを扱う。
  • ファイルの開始処理および後始末処理をまとめて、オープン処理およびクローズ処理のモジュール呼び出しで済むように抽象化する。
  • 順編成ファイルや区分編成ファイルなどの、様々な編成のファイルを扱う。

 

入出力管理

この記事での学習内容 基本情報 応用情報

入出力装置を効率良く動作させる入出力制御方式の種類,特徴,チャネルの種類,データ転送方式など,入出力制御の仕組みを理解する。また,スプール,バッファリングなどCPUのアイドル時間を減らして効率を上げるための仕組みを理解する。

IOCS(Input/Output Control System:入出力制御システム),スプーリング,バッファプール,入出力ポート(I/O ポート),入出力マッピング(I/O マッピング),メモリマッピング,チャネル,チャネル制御方式,DMA(Direct Memory Access:直接記憶アクセス),チャネルサブシステム,セレクタチャネル,マルチプレクサチャネル,入出力割込み,メモリマップドI/O,I/O マップドI/O

入出力管理

入出力管理とは、コンピュータ本体と入出力装置との間の入出力の管理です。次のような機能があります。

  • オペレーティングシステム全体での標準的な入出力方式と、装置ごとの固有の処理を仲介する。装置ごとの固有の処理のアダプタとなるプログラムをデバイスドライバといいます。
  • データを直接に入出力するのではなく、バッファを経由させることによって、コンピュータ本体と入出力装置を並行処理させて性能を向上させる。バッファとはデータを一時的に保存する場所のことで、バッファ用の領域のことをバッファプールといいます。
  • プリンタなどの低速な装置の入出力データを、高速な外部記憶装置を経由させることによって性能を向上させる。この方式をスプーリングといいます。

入出力制御

入出力制御方式は、各種の入出力装置を効率よく動作させる方式のことです。データ管理や入出力管理と比べると、ハードウェア側の細かな制御です。入出力制御方式には、次のようなものがあります。

プログラム制御方式
プログラム中の入出力命令を実行して、レジスタを経由して、主記憶装置と入出力装置との間のデータのやり取りをします。低速な入出力処理の間、CPUが待たされます。
DMA(Direct Memory Access)方式
DMA方式とはプログラムが入出力命令を実行した時に、DMAコントローラという専用のハードウェアが主記憶装置と入出力装置との間のデータのやり取りをします。CPUと入出力装置が並行処理されます。
チャネル制御方式
チャネル制御装置という専用のプロセッサが。主記憶装置上のチャネルプログラムを解読して、一連の入出力命令とCPUとを並行処理します。元のプログラムはチャネルプログラム単位の処理依頼だけをします。

チャネル

チャネルとは、入出力や通信のためのデータの通路のことです。電気ケーブルに対応する物理チャネルと、一対一には対応しない論理チャネルとがあります。

チャネル制御装置(チャネルコントローラ)は、チャネルを経由してデータをやり取りする簡単なプロセッサです。CPUと入出力装置の並行処理を可能にします。DMAコントローラもこの仲間です。

入出力割込み

外部割込みの一種であり、入出力が完了したり、入出力に異常が起きたりした時に起こります。入出力割込みが起きるまでは、CPUは他のタスクを処理できるので、並行処理によって性能を向上させることができます。

 

記憶管理

この記事での学習内容 基本情報 応用情報

  • 記憶領域の管理方式である固定区画方式,可変区画方式など,実アドレス空間の割当て方式の特徴,フラグメンテーションとその対策を理解する。また,主記憶装置を効率良く使うためのスワッピングとオーバレイを理解する。
  • 実記憶と仮想記憶の関係,仮想記憶の有効性,仮想記憶方式の種類と特徴,動的アドレス変換の仕組みを理解する。また,ページング方式の代表的なページ置換えアルゴリズムについて,ページ置換え手順を理解する。

用語例:実アドレス方式,単一連続割当て方式,記憶域管理アルゴリズム(ファーストフィット,ベストフィット,ワーストフィット),メモリコンパクション,ロールイン,ロールアウト,スワップイン,スワップアウト,セグメント方式,コンパクション、ベースアドレス方式,セグメント方式,セグメントページング方式,単一仮想空間方式, 多重仮想空間方式, スラッシング, DAT ( Dynamic Address Translator:動的アドレス変換),TLB(Translation Lookaside Buffer),ページフォールト,ページイン,ページアウト,デマンドページング,ページリプレースメント,LRU,FIFO,ワーキングセット

実記憶管理

実記憶管理とは、それぞれのプログラムとそのためのデータが使用する主記憶装置の領域の確保および解放の管理です。基本的な領域の区画方法の管理、限られた主記憶装置領域の有効利用、および領域の制約の解消などを行います。

固定区画方式

固定区画方式とは、主記憶管理の区画方式の一種であり、主記憶を固定長の区画として管理する方式です。管理が簡単ですが、それぞれのプログラムが使用する領域は可変なので、使用されない部分が無駄になります。固定区画方式には区画が一つだけの単一区画方式と多重区画方式とがあります。

単一区画方式は、区画が一つだけであり、最も簡単な方式です。

多重区画方式は、複数の区画を設けて、それぞれのプログラムに割り当てます。単一区画方式より少し管理が複雑になりますが、複数のプログラムを処理できます。

いずれの方法でも、プログラムが使用しない部分が無駄になります。

可変区画方式

可変区画方式とは、主記憶管理の区画方式の一種であり、それぞれのプログラムに必要なだけの可変長の領域を割り当てるため、主記憶装置の利用効率が高まります。

各プログラムの実行が終了すると、使用していた領域は開放されます。次々に実行されるプログラムの使用領域の大きさはそれぞれ異なるので、空き領域が細分化されて利用しにくくなるという、フラグメンテーションが発生します。

フラグメンテーション対策

主記憶装置や仮想記憶用の外部記憶装置の空き領域は、次々とプログラムを実行して、領域の確保と開放を繰り返しているうちに、領域が細分化されて再利用しにくくなるという、フラグメンテーションが発生します。

使用中の領域を移動させて隣り合わせに配置し直して、細分化されていた空き領域を隣り合わせにまとめて再利用しやすく処理をデフラグメンテーション又はコンパクションといいます。

ガベージコレクション

ガベージコレクションとは、「ゴミ集め」という意味の言葉であり、プログラムが使用しなくなった主記憶領域を集めて、再利用に備えることです。主記憶領域の再利用に備える処理には次のような種類があります。

  • プログラムの実行終了時に、一括して領域を解放する。解放のためのオーバーヘッドが少なくて済みますが、きめ細やかな再利用はできません。
  • プログラムの実行中に、関数実行などによって、きめ細かく領域の確保と解放を行う。領域の有効利用ができますが、開放のためのオーバーヘッドが多くなります。

ガベージコレクションは、専用のプログラムが使用しなくなった領域を開放するので、領域の有効利用とオーバーヘッドのバランスをとることができます。

オーバーレイ方式(セグメント方式)

オーバーレイ方式は、一つのプログラムを主記憶装置の区画に収まる大きさのセグメントに分割しておき、実行するセグメントをその都度外部記憶装置からロードする方式です。オペレーティングシステムの主記憶管理よりも、プログラム側とプログラム管理が主記憶装置の使用方法を考慮する方式です。

仮想記憶

仮想記憶とは、領域の物理的なアドレスとは別に仮想的なアドレスを設けて管理される記憶領域です。飛び飛びの領域を一連の領域として利用したりします。

フラグメンテーション対策として、プログラムやデータを移動したり、空き領域をまとめたりする必要が無いことと、主記憶装置の全体の大きさや区画の大きさを気にせずに、大きな領域を使用できることが仮想記憶のメリットです。

処理しなければならないプログラムやデータが主記憶装置の空き領域に格納しきれない時、一旦ハードディスク上の仮想記憶領域へ一部を書き出し、必要に応じて主記憶装置と仮想記憶の間でプログラムやデータを入れ替えながら処理を進める方法で、この入れ替えをスワッピングといいます。

補助記憶装置は主記憶装置よりも低速なので、スワッピングが多発すると処理に時間がかかるのが仮想記憶のデメリットです。

スワップイン(ロールイン)

仮想記憶のスワッピングにおいて、プログラムやデータを補助記憶装置から主記憶装置へ読み込むことをスワップイン又はロールインといいます。

スワップアウト(ロールアウト)

仮想記憶のスワッピングにおいて、プログラムやデータを主記憶装置から補助記憶装置へ書き出すことをスワップアウト又はロールアウトといいます。

スワッピングの欠点

仮想記憶と、主記憶装置の容量不足で実行できなかったプログラムを動かせるようになります。その反面、転送速度の遅いハードディスクなどの補助記憶装置に繰り返しアクセスしなければならないという欠点があります。そのため、スワッピングが多発すると、全体の処理速度が低下してしまいます。

スラッシング

スラッシングとは、仮想記憶にロードされたプログラムの数が多すぎたり、巨大なプログラムがロードされたりして、主記憶装置と補助記憶装置との間のプログラムやデータのやり取りが頻繁になり、補助記憶装置が激しく作動していながら、プログラムの実行がなかなか進まないことです。

スラッシングへの対策としては、プログラムの数や大きさを制限したり、主記憶装置を容量の大きいものに取り替えるといったことがあります。

仮想記憶管理

仮想記憶管理とは、仮想記憶を取り扱う管理のことです。ハードウェア側の仮想記憶管理の機構が処理する場合があります。また、オペレーティングシステムの記憶管理プログラムが介在する方式もあります。

仮想記憶管理を行うために必須なのが、動的アドレス変換機構(DAT:Dynamic Address Translator)と呼ばれるものです。

動的アドレス変換の代表的な方式としては、ページングという方式があります。(他の方式として、セグメント方式、セグメントページング方式など)

ページング方式

ページング方式は、主記憶とプログラムを固定長であるページに分割し、効率よく記憶管理する方法です。「大きなプログラムの実行でも、ごく短い時間を見れば、必要なのはほとんど一部のみである」という性質を利用したもので、この場合のプログラムの実行は下記の手順で行われます。

  1. 主記憶とプログラムをページ単位に分割
  2. 実行に必要なページを補助記憶から主記憶にロード(ページイン)
  3. 必要なページが主記憶上にない場合、ページ不在の割り込み(=ページフォルト)が発生します。この時、補助記憶から主記憶城の空きスペースにページインします。
  4. どんどんロードしていくと、主記憶に空きスペースがなくなります。
  5. ページ置き換えアルゴリズムに従い、置き換え対象のページを決定します。
  6. 実行に必要のないページを補助記憶に退避します(ページアウト)
  7. 実行に必要なページを主記憶上にロードします(ページイン)

ページイン、ページアウトの操作を総じて、ページングと呼んでいます。また、ページングが多発する現象をスラッシングといいます。

ページフォールト

ページフォールトとは、必要な仮想記憶のページが主記憶装置上にない状態です。ページフォールトは、割込みの形で仮想記憶管理の機構に知らされます。

ページ置き換え

ページ置き換えとは、ページング方式の記憶管理において、主記憶装置の空き領域が不足した時、ページの置き換えをする処理です。ページ置き換えアルゴリズムが使われます。

ページ置き換えアルゴリズム(FIFO,LRU)

ページ置き換えアルゴリズムとは、ページング方式の記憶管理において、主記憶装置の空き領域が不足した時、ページを置換する処理のアルゴリズムです。

FIFOやLRU、LFUというページ置き換えアルゴリズムがあります。

FIFO(First In First Out)
最初に読み込まれたページを最初に補助記憶装置へ書き出すというアルゴリズムです。処理は簡単ですが、頻繁に使われているページが書き出されると性能が低下します。
LRU(Least Recently Used)
最も長く使われていないページを補助記憶装置へ書き出すというアルゴリズムです。使用履歴が必要なのでアルゴリズムは少し複雑ですが、頻繁に使われているページは主記憶装置にある確率が高いので、性能が良くなります。
LFU(Least Frequency Used)
最も使用頻度の低いページを補助記憶装置へ書き出すというアルゴリズムです。使用履歴が必要なのでアルゴリズムは少し複雑ですが、頻繁に使われているページは主記憶装置にある確率が高いので、性能が良くなります。

セグメント方式

セグメント方式は、プログラムやデータをセグメントという可変の大きさの区分で記憶管理をする方式です。セグメントが仮想記憶やメモリ保護の単位になります。各セグメントの先頭アドレスと大きさは、セグメントテーブルで管理されます。

一定の大きさのページという区分を用いるページング方式より、手間はかかりますが、領域のムダは少なくなります。

セグメントページング方式

セグメントページング方式は、ページング方式とセグメント方式を組み合わせた方式です。セグメントテーブルの各セグメントにページテーブルをリンクします。

ページング方式の簡潔さを活かしつつ、セグメントの種類によってプログラムのセグメントを書き換え禁止にしたり、リードオンリーのセグメントを共有したりすることができます。

ネットワーク制御

この記事での学習内容 基本情報 応用情報

ネットワーク制御プログラムの役割,機能,OS における位置付けを理解し,OS が提供する通信インタフェースを理解する。

用語例:ネットワークOS,LAN,WAN,プロトコル制御,リアルタイムOS,通信プロトコル,TCP/IP,OSI 基本参照モデル

ネットワーク制御

ネットワーク制御とは、コンピュータがネットワークを経由してデータの送信・受信をすることやその際の通信異常などを制御することです。オペレーティングシステムの機能の一つであり、入出力管理が入出力装置を管理するように、ネットワーク制御はネットワークアダプタやLANカードなどのネットワーク用の装置を制御します。高水準の処理はネットワーク管理ともいいます。通信制御・通信管理も類似の概念です。

通信プロトコルはコンピュータ同士がネットワーク経由で通信を行うために、ネットワーク全体で決められた通信手順です。送信するデータの他に、送信先アドレス、発信元アドレスなどを付加する規約です。

OSI参照モデルは国際最標準化機構(ISO)が定めた次の表のような階層モデルの規定です。ネットワークを扱うシステムを階層的にして、全体を簡潔かつ柔軟にするのに役立ちます。

7アプリケーション層ユーザレベルの通信。メールやファイルの転送等。
6プレゼンテーション層データの表現方法。圧縮や文字コード、暗号化など。
5セッション層通信の開始から終了までの1回分の手順。プログラム間の会話単位の制御。
4トランスポート層エラー訂正や再送信などの信頼性の確保。
TCP(Transmission Control Protocol)など。
3ネットワーク層通信経路の選択(ルーティング)
IP(Internet Protocol)など。
2データリンク層装置間の信号の送受信。
スイッチングHUBなど。
1物理層物理的なコネクタの形状や電気的な信号

 

 

運用の管理

この記事での学習内容 基本情報 応用情報

システム始動処理(OS の初期化),システム終了処理,オペレータとの交信,ユーザ管理機能,スケジューリング,システムモニタリングなど,運用に関する容易性や柔軟性を実現する機能を理解する。

用語例:プロファイル,ユーザアカウント,システム利用権,ファイルアクセス権,端末利用権,ディスククオータ

運用に関する容易性や柔軟性を実現する機能

オペレーティングシステムの基本的な昨日は、個々のプログラムの運用(実行)を管理することです。その他プログラム群の全体の運用管理をする機能もあります。それによってユーザが全体の運用をする操作が用意かつ安全になります。また、オプションも選択できて、ユーザ間の違いに柔軟に対応します。

システム指導処理は、システムの開始時にはオペレーティングシステムのさまざまな初期化のプログラム群を一連の手続きにまとめて、ユーザの操作を容易にします。また日常のシステムの指導のときには、基盤となるプログラム群をまとめて実行開始します。

システム終了処理は、電源をオフにする前に、基盤として実行されていたプログラム群をまとめて終了させます。

運用の面倒を見るオペレータのためには、システムと更新する機能、システムの状態を監視するためのシステムモニタリング機能、および定形操作や期日指定の処理を容易にするスケジューリング機能があります。

その他に、ユーザ管理、セキュリティ制御、および障害管理の機能があります。

 

 

ユーザ管理

この記事での学習内容 基本情報 応用情報

ユーザアカウントの種類,特徴を理解し,アカウントの作成方法,パスワードの設定や変更方法,権限の付与や変更方法などを理解する。また,アカウントを一元管理するためのディレクトリサービスなどを理解する。

用語例:スーパユーザ,root,Administrator,ゲスト,管理者権限,LDAP,Active Directory

ユーザアカウントの種類

ユーザアカウントは、ユーザの権利の単位となる「口座」に相当します。ユーザアカウントはユーザ名やパスワードによって識別されます。その他のユーザ固有の情報やオプション指定を含めてプロファイルといいます。

ユーザアカウントには権限の異なる次のような種類があります。

スーパユーザ
システムのすべての操作ができる管理者権限を持つユーザです。オペレーティングシステムによっては、rootやAdministratorといいます。
標準ユーザ
一般的なファイル、フォルダ、およびプログラムへのアクセス、自分のプロファイルの変更、およびスーパユーザが許可するソフトウェアやハードウェアのインストールやアンインストールの権限を持ちます。このような権限の範囲が付与されることによって、一つのシステムを他のユーザと共用することができます。
ゲスト
システムを一時的に使用するユーザです。所定のゲスト用のユーザ名やパスワードを用いてシステムを使用します。ソフトウェアやハードウェアのインストール及びアンインストールはできません。また、ファイルの新規作成、削除、および保存には制限がつきます。

管理者権限

システムのすべての操作ができる権限を管理者権限といいます。あらゆすソフトウェアおよびハードウェアのインストールおよびアンインストール、システムの基盤となる設定、ファイル、およびフォルダへのアクセス、およびそれらの新規作成、変更、削除ができます。また、ユーザアカウントの許可や設定変更などの権限も持ちます。

ディレクトリサービス

ディレクトリサービスは、システムやネットワーク上にあるユーザプロファイルやプリンタ等の共有資源のプロファイルを管理するサービスです。

ここでいうディレクトリとは住所録や案内図という意味を持ちます。

LDAP(Lightweight Directory Access Protocol)

LDAPは、ネットワークのディレクトリサービスにアクセスするためのプロトコルの一種です。ユーザプロファイルや共有資源の扱いを標準化することに役立ちます。

セキュリティ制御

この記事での学習内容 基本情報 応用情報

OS には,アクセス制御,フロー制御,推論制御,暗号化制御などのセキュリティ制御機能があることを理解し,OS での制御方法の種類と特徴を理解する。また,ファイル保護,外部からの侵入検出と防御などのセキュリティが施されたセキュリティカーネルの特徴を理解する。

用語例:外部セキュリティ,内部セキュリティ,多重レベルセキュリティ,BLP(Bell-LaPadula)モデル,ロギング機能,オーディット機能,アカウンタビリティ,信頼プロセス, 完全性, 隔離, 認証, 検証可能性, ITSEC ( Information Technology Security Evaluation Criteria)

セキュリティ制御

セキュリティ制御とは、システムの機密性、安全性、可用性、およびアカウンタビリティを保つための制御です。アクセス制御、暗号化制御、外部からの侵入の防御・検出、ロギング機能、オーディット機能などがあります。これらの制御や機能による記録は、記録を根拠にする説明に利用でき、アカウンタビリティを保ちます。

アクセス制御

ユーザごとにシステムの利用券を定義し、アクセスを管理することです。セキュリティポリシに沿わないアクセスはOSが強制的に制御する、管理者権限をできるだけ分散化するなどの仕組みを設定します。

暗号化制御

情報を暗号化して機密が第三者にもれないようにすることです。

外部からの侵入の防御・検出

ファイアウォール機能によって外部からの不正アクセスを防ぎます。

ロギング機能

ロギング機能は、システムのエラーや警告が発生した時に、その情報をファイルに記録する機能です。システムの安全性および可用性を保つのが主な目的です。

オペレータなどが障害に気づいた時に、ログファイルを分析して、原因を究明することができます。また、信頼できないプロセスが実行されようとした時の警告、あるいは監査の成功や失敗なども記録して、監査にも利用されます。

オーディット機能

オーディット機能(監査機能)は、ユーザのシステムへのアクセスやファイルへのアクセスなどセキュリティに関する事象を記録する機能です。

オーディットの記録はシステムの機密性および安全性が保たれていることの証拠や、機密性や安全性を損なったユーザを特定する証拠になります。

 

障害管理

この記事での学習内容 基本情報 応用情報

障害の検出,試験と診断,自動訂正,障害の記録,再構成,リスタート,原因の解決など,障害発生から対策完了までの一連の工程を理解する。

用語例:タイマ監視,CPU 監視装置,ハードウェア障害,ソフトウェア障害,再構成(動的装置再構成,自動CPU 再構成),多重化(入出力パスの多重化,補助記憶装置の二重化,ライブラリの二重化,ディスクの二重書き),システムの多重化(デュアルシステム,デュプレックスシステム),ホットスタンバイシステム,障害回復ルーチン

障害管理

障害管理は、システムのハードウェア障害やソフトウェア障害に対処する機能です。システムの安全性および可用性を保つのが主な目的です。

障害の検出、自動訂正、障害の記録、システムの再構成、リスタートなどが含まれます。

オペレータやユーザは、障害管理機能を用いて、障害の影響範囲限定、現象把握、切り分け、原因究明、修正、およびシステムの復旧をします。

 

ミドルウェア

情報処理技術者試験での学習内容

【応用情報・基本情報】
代表的なミドルウェアの役割,機能を修得し,応用する。

(1)ミドルウェアの役割と機能 基本情報 応用情報

OS と応用ソフトウェアの中間に位置する各種ミドルウェアの役割と機能,ミドルウェアの選択と利用の考え方を理解する。

用語例:応用プログラム間連携ソフトウェア,DBMS,通信管理システム,ソフトウェア開発支援ツール,運用管理ツール,TP(Transaction Processing:トランザクション処理)モニタ

(2)シェルの役割と機能 基本情報 応用情報

シェルは,利用者からのコマンド,指示を受けてそれを解釈し,プログラムの起動,制御などカーネルの機能を呼び出す役割をもつこと,及び代表的なコマンドを理解する。

用語例:コマンドインタプリタ,BShell,CShell,COMMAND.COM,cmd.exe

(3)API 基本情報 応用情報

応用プログラムから見たAPI の役割,機能を理解する。

用語例:関数,ライブラリ,Web API,API 仕様

(4)ライブラリ 基本情報 応用情報

プログラムやマクロなどを格納するライブラリを理解する。

用語例:ソースライブラリ,オブジェクトライブラリ,ロードライブラリ,DLL(Dynamic Link Library),クラスライブラリ

(5)コンポーネントウェア 基本情報 応用情報

オブジェクト指向技術を基盤としたソフトウェアの部品化によるソフトウェア開発手法であるコンポーネントウェアの考え方,代表的なコンポーネントウェア技術を理解する。

用語例:コンポーネント,Java Beans,ActiveX,CORBA

(6)開発フレームワーク 基本情報 応用情報

アプリケーションソフトウェアの標準構造の実装に使われるクラスやライブラリの集まりである開発フレームワークの考え方,代表的なフレームワークを理解する。

Apache Struts,CakePHP,Spring,Ruby on Rails

ミドルウェアの役割と機能

この記事での学習内容 基本情報 応用情報

 

OS と応用ソフトウェアの中間に位置する各種ミドルウェアの役割と機能,ミドルウェアの選択と利用の考え方を理解する。

用語例:応用プログラム間連携ソフトウェア,DBMS,通信管理システム,ソフトウェア開発支援ツール,運用管理ツール,TP(Transaction Processing:トランザクション処理)モニタ

ミドルウェアの役割と機能

ミドルウェアは、オペレーティングシステムと応用ソフトウェアの中間に位置するソフトウェアの総称です。応用プログラム間連携ソフトウェアともいいます。

ミドルウェアには、データベース管理システム、通信管理システム、ソフトウェア開発支援ツール、運用管理ツール、TPモニタなどがあります。これらのソフトウェアはプログラミングやプログラムの実行管理の基本的なソフトウェアとはいえませんし、業種や業務の実務を担う応用ソフトウェアとも言えません。

ミドルウェアを共通基盤として利用することによって、応用ソフトウェアの開発の効率化、および応用ソフトウェアの間の連携の標準化が可能です。

応用プログラム間連携ソフトウェア

応用プログラム間連携ソフトウェアはミドルウェアの別名です。例えば、データベース管理システムは、ファイルにアクセスするインタフェースを高水準かつ柔軟にすることにより、購買管理システム、生産管理システム、販売管理システムなどの応用プログラム間の連携を容易にします。

DBMS(DataBase Management System)

DBMS(データベース管理システム)はファイルに含まれるデータ群を、多角的かつ標準的なアクセスが出来るように管理するシステムです。応用ソフトウェアの間でファイルを受け渡しする必要がなくなり、それぞれが一つのデータベースにアクセスする形で、データを共有できます。また、DBMSはデータ処理の共通機能を提供するので、応用ソフトウェアの開発を効率化したり、ユーザが直接利用したりすることができます。

通信管理システム

コンピュータ間の通信のために、高水準かつ標準的なインタフェースを提供するシステムです。パソコンのオペレーティングシステムには、ネットワーク制御の機能があることが多いですが、本格的な応用ソフトウェアは、ミドルウェアである通信管理システムが用いられることが多いです。

ソフトウェア開発支援ツール

ソフトウェア開発支援ツールは、ソフトウェアの要求分析、設計、開発、試験を支援するソフトウェアの総称です。プログラミングのためのコンパイラというツールがあったのに対して、ソフトウェア開発が大規模な仕事であるという考え方による広い総称です。

運用管理ツール

運用管理ツールは、コンピュータやネットワークの運用のための高水準な機能を持つソフトウェアです。基本的な運用管理機能はオペレーティングシステムに含まれます。本格的な応用情報システム向きのミドルウェアが運用管理ツールです。システムの関し、オペレータ作業の自動化、セキュリティ管理などを行います。

TPモニタ

TP(Transaction Processing)モニタは、通信回線を経由するトランザクション(取引)単位を応用ソフトウェアとオペレーティングシステムの中間で監視・制御するミドルウェアです。

 

その他の主要なミドルウェアとして、障害監視システム、トランザクションスケジューリング、システム資源管理などがあります。

 

シェルの役割と機能

この記事での学習内容 基本情報 応用情報

シェルは,利用者からのコマンド,指示を受けてそれを解釈し,プログラムの起動,制御などカーネルの機能を呼び出す役割をもつこと,及び代表的なコマンドを理解する。

用語例:コマンドインタプリタ,BShell,CShell,COMMAND.COM,cmd.exe

シェルの役割と機能

シェルは、オペレーティングシステムのカーネルに対して、コマンドインタプリタやグラフィカルユーザインタフェースなどの外周の部分です。オーペレーティングシステムを階層化して、標準化や柔軟性を図ります。

カーネル・コアに対して、貝殻のようにそれらを守るということで、”Shell”(=貝殻の意)と呼ばれています。

機能としては、プログラムの起動や制御など、カーネルの機能を呼び出す、ユーザの入力を受け付けてコマンドをOSのカーネルに伝えるといったものです。

コマンドインタプリタ

コマンドインタプリタは、コマンド走査型のオペレーティングシステムのシェルの代表的なプログラムです。ユーザの入力したコマンドの種類とパラメータを解釈して、カーネルの該当機能へ引き継ぎます。

 

API

この記事での学習内容 基本情報 応用情報

応用プログラムから見たAPI の役割,機能を理解する。

用語例:関数,ライブラリ,Web API,API 仕様

API

API(Application Programming Interface:アプリケーション・プログラミング・インタフェース)とは、応用ソフトウェアから利用できるオペレーティングシステムのモジュール、プログラミング言語のライブラリモジュール、及びそれらの利用規約のことです。

多くのアプリケーションに共通する、文字処理、画像処理、入出力、ウィンドウ制御などがその例です。エンドユーザによるプログラミングを推進する役割もあります。

 

ライブラリ

この記事での学習内容 基本情報 応用情報

プログラムやマクロなどを格納するライブラリを理解する。

用語例:ソースライブラリ,オブジェクトライブラリ,ロードライブラリ,DLL(Dynamic Link Library),クラスライブラリ

ライブラリ

ライブラリとは、応用ソフトウェアでよく利用される関数や機能などを一箇所にまとめて、共用できるようにしたもののことです。

提供される形式や利用形態によって、以下の様なものがあります。

ソースライブラリ

ソースライブラリは共用するためのライブラリとして提供されるソースモジュールの集合です。応用ソフトウェアの共通部分をカバーすることによって、開発を効率化します。

APIやオブジェクトライブラリとは異なり、応用ソフトウェアとあわせてコンパイルして用いられます。

オブジェクトライブラリ

オブジェクトライブラリは、共用するためのライブラリとして提供される、実行形式のモジュールの集合です。

クラスライブラリ

ライブラリのうち、オブジェクト指向に基づいて設計・作成されたライブラリのことをクラスライブラリと呼んでいます。

ロードライブラリ

ロードライブラリは、共用するためのライブラリとして提供される、実行形式のモジュールで、主モジュールと連結されて実行されます。

DLL(Dynamic Link Library)

DLL(ダイナミックリンクライブラリ)は、共用するためのライブラリとして提供される、動的リンクを用いた実行形式のモジュールの集合です。

 

コンポーネントウェア

この記事での学習内容 基本情報 応用情報

オブジェクト指向技術を基盤としたソフトウェアの部品化によるソフトウェア開発手法であるコンポーネントウェアの考え方,代表的なコンポーネントウェア技術を理解する。

用語例:コンポーネント,Java Beans,ActiveX,CORBA

コンポーネントウェア

コンポーネントウェアは、ソフトウェアのコンポーネント(部品、モジュール)の総称です。ハードウェアやソフトウェアと同じように命名したものです。

Java Beans

Java Beansとは、Java言語でプログラミングされたオブジェクトライブラリです。Java言語で書かれたコンポーネントウェアとその技術仕様ともいえます。

開発フレームワーク

この記事での学習内容 基本情報 応用情報

アプリケーションソフトウェアの標準構造の実装に使われるクラスやライブラリの集まりである開発フレームワークの考え方,代表的なフレームワークを理解する。

開発フレームワーク

開発フレームワークとは、システム開発を標準化して効率的にすすめるための全体的な枠組みです。ソフトウェアをどのように開発すべきかを、再利用可能なクラスなどによって示し、特定の用途に使えるようにしています。

例えば、Webアプリケーションを開発するための、JavaのStrutsやSpring、RubyのRuby on Rails、PHPのCake PHP等のWebアプリケーションるフレームワークがあります。

 

ファイルシステム

情報処理技術者試験での学習内容

【応用情報・基本情報】
・ファイルを階層化して管理するディクトリの種類,特徴,ファイル管理の仕組みを修得し,応用する。
・ファイルシステムの種類,特徴を修得し,応用する。
・ファイル編成,アクセス手法,検索手法,バックアップ方式を修得し,応用する。

【ITパスポート】
・ファイル管理の考え方を理解し,基本的な機能を利用する。
・バックアップの基本的な考え方を理解する。

(1)ディレクトリ管理とファイル管理 ITパスポート 基本情報 応用情報

ファイルを階層化して扱うディレクトリの種類と特徴,ディレクトリが管理するファイル情報,ファイル制御ブロック,ファイルポインタ,ファイルハンドルなどのファイル管理の仕組み,絶対パス,相対パスを使用したファイルの特定方法を理解する。また,ディレクトリ管理,ファイル共有の仕組み,考え方,アクセス権を理解する。

用語例:物理的位置,保護情報,参照情報,シンボリックリンク,ショートカット,エイリアス,ルートディレクトリ,カレントディレクトリ,ホームディレクトリ,単一ディレクトリ,2 階層ディレクトリ,階層型ディレクトリ,木構造ディレクトリ,パス名,ファイルハンドル,ファイル記述子,キャラクタデバイス,ブロックデバイス,ブロッキング,共有ファイル

(2)ファイルシステムの種類と特徴 ITパスポート 基本情報 応用情報

ハードディスク装置などの補助記憶装置の領域を,OS や利用者がファイルやディレクトリ(フォルダ)として使用できるようにするための機能を理解する。また,OS ごとに異なるファイルシステムが提供されていること,代表的なファイルシステムの特徴を理解する。

用語例:FAT ファイルシステム,NTFS,HFS(Hierarchical File System),NFS(Network File System),ボリューム

(3)ファイル編成とアクセス手法 基本情報 応用情報

ファイル編成やアクセス手法の種類,特徴を理解する。また,各編成方式におけるレコードの追加,削除,変更などの処理方法を理解する。

用語例:論理レコード,物理レコード,ブロック,非ブロックレコード,ブロックレコード,ブロックサイズ,順次アクセス,直接アクセス,動的アクセス,順編成,区分編成,索引順編成,直接編成,VSAM 編成,あふれ域,ブロッキング,デブロッキング

(4)検索手法 応用情報

ディレクトリの構造の特徴による検索手法の違いを理解する。

用語例:ハッシング,インデックス

(5)バックアップ ITパスポート 基本情報 応用情報

ファイルのリカバリを目的としたバックアップの取得方法と手順,世代管理,ファイルの修復方法と手順など,バックアップの方式を理解する。

用語例:多重バックアップ,フルバックアップ,差分バックアップ,増分バックアップ

ディレクトリ管理とファイル管理

この記事での学習内容 ITパスポート 基本情報 応用情報

ファイルを階層化して扱うディレクトリの種類と特徴,ディレクトリが管理するファイル情報,ファイル制御ブロック,ファイルポインタ,ファイルハンドルなどのファイル管理の仕組み,絶対パス,相対パスを使用したファイルの特定方法を理解する。また,ディレクトリ管理,ファイル共有の仕組み,考え方,アクセス権を理解する。

用語例:物理的位置,保護情報,参照情報,シンボリックリンク,ショートカット,エイリアス,ルートディレクトリ,カレントディレクトリ,ホームディレクトリ,単一ディレクトリ,2 階層ディレクトリ,階層型ディレクトリ,木構造ディレクトリ,パス名,ファイルハンドル,ファイル記述子,キャラクタデバイス,ブロックデバイス,ブロッキング,共有ファイル

ディレクトリ(フォルダ)

ディレクトリとは、OSの持つファイル管理機能で、ファイル群を保存、分類、整理するものです。ディレクトリには住所録や案内図という意味があります。ユーザはディスク内に階層的にディレクトリを作ることができます。

ディスク装置の中の最上位に当たるディレクトリを、ルートディレクトリといいます。ルートディレクトリの下には、ファイルを保存したり、さらに別のディレクトリを作ったりすることができます。

あるディレクトリの下に作られている別のディレクトリのことを、サブディレクトリともいいます。

OSによっては、ディレクトリをフォルダと呼ぶものもあり、Windows系では『フォルダ』、UNIX系では『ディレクトリ』と呼ばれるのが一般的です。

なお『ルートディレクトリ』に関して、UNIX系では明確に定義されているものはあるが、Windows系ではイメージしにくくなっています。一部の解説では、『Windowsのルート=デスクトップ』とされているものがあるが、これは明らかな間違いです。例えばWindows7の場合では『C:\Users\(ユーザ名)\Desktop』をさしており、明らかにルートではありません。

パス

コマンドの操作や、HTML文書のハイパーリンクで、あるファイルを参照したいときには、「どのディレクトリに保存されている何というファイルか」を指示する必要があります。

参照するファイルの位置を指定する方法を「パス」といいます。パスの記述には、頂点にあるルートディレクトリを起点とし、そこから順にたどってディレクトリ名を記述する絶対パスと、現在操作しているディレクトリ(=カレントディレクトリ)を起点とする相対パスの二つの方法があります。

絶対パス

絶対パスは、ルートディレクトリを起点として、上位→下位の順にたどる記述方法です。ルートディレクトリを「/」と表し、続けてサブディレクトリ名やファイル名を「/」で区切りながら記述します。

相対パス

相対パスでは、カレントディレクトリを起点として、親ディレクトリ又は子ディレクトリに移りながら順にたどって参照ファイルに行き着きます。

参照元となるファイルがあるディレクトリをカレントディレクトとし、カレントディレクトリを「 . / 」という記号で表して、続けて相対パスを記述します。(「 . / 」は多くの場合省略される)

カレントディレクトリより下位のサブディレクトリの中のファイルを参照するときは、パスにそのサブディレクトリ名を指定し「サブディレクトリ名 / ファイル名」のように記述します。

カレントディレクトリより一つ上位になるディレクトリ(親ディレクトリ)に遡ってファイルを参照する場合には、親ディレクトリを「 . . / 」という記号で表して、「  . . / ファイル名」とします。

 

ファイルシステムの種類と特徴

この記事での学習内容 ITパスポート 基本情報 応用情報

ハードディスク装置などの補助記憶装置の領域を,OS や利用者がファイルやディレクトリ(フォルダ)として使用できるようにするための機能を理解する。また,OS ごとに異なるファイルシステムが提供されていること,代表的なファイルシステムの特徴を理解する。

用語例:FAT ファイルシステム,NTFS,HFS(Hierarchical File System),NFS(Network File System),ボリューム

ファイルシステム

ファイルシステムとは、ハードディスクなどの記憶媒体中にファイルやディレクトリを作成・管理する仕組みのことです。ファイルシステムはOSによって異なり、FAT、NTFS、HFSなどがあります。

FAT(File Allocation Tables)

FATはハードディスク媒体の領域の区分である、クラスタの割り付け状況の表です。クラスタの使用状態・空き状態を記録したり、クラスタの連鎖を表すためにFATをリンクしたりします。FAT方式は、ハードディスク媒体のファイル管理の方式として普及しています。

FATの項目はクラスタの状態をビットで表す簡潔な形式です。ビット数の異なる幾つかの方式があり、扱えるハードディスク媒体の容量には限界があるので、非互換や効率低下があることをユーザが意識することがあります。代表的なものにFAT16、FAT32があり、WindowsでもUSBメモリなどの外部媒体にはFAT32がよく用いられています。

NTFS(NT File System)

NTSFはマイクロソフトのOSであるWindows NTで使われはじめて本格的なファイル管理方式です。FATよりも複雑ですが、アクセス権を記録するので、複数のユーザが使用する場合の安全性が高まります。また、アクセスを記録して障害時の復旧が容易なので信頼性が高まります。

アクセス権の細かな設定の他に、1ファイル、1ドライブの最大容量がFATよりも大きく取れるのが特徴です。

HFS(Hierarchial File System)

HFSは、木構造の管理情報を用いてハードディスク媒体のファイルを階層的に管理する方式です。配列型の表を用いるFATに比べて柔軟性があるのが特徴です。

ボリューム

ボリュームとは一つの記憶媒体の一区画を示す単位です。磁気テープ1本、ハードディスク1台といった単位でボリューム名(ボリュームラベル)がつけられて管理されます。OSによっては、1台のハードディスクに複数のボリュームを作成できるものもあります。

通常、1つのボリュームには複数のファイルを収納します。ファイル管理プログラムが表示するファイルやフォルダの階層図にはボリュームも表示されます。

その他のファイルシステム

その他の代表的なファイルシステムとしては、UNIX系で用いられるJFSがあります。

JFSはジャーナル・ファイル・システムの意味で、ファイルシステム上のメタデータをトランザクション単位で管理・保持している。

その他、Linux系で用いられるext3、ext4などもよく知られています。

 

ファイル編成とアクセス手法

この記事での学習内容 基本情報 応用情報

ファイル編成やアクセス手法の種類,特徴を理解する。また,各編成方式におけるレコードの追加,削除,変更などの処理方法を理解する。

用語例:論理レコード,物理レコード,ブロック,非ブロックレコード,ブロックレコード,ブロックサイズ,順次アクセス,直接アクセス,動的アクセス,順編成,区分編成,索引順編成,直接編成,VSAM 編成,あふれ域,ブロッキング,デブロッキング

アクセス方式

順次アクセス

順次アクセスとは、記憶媒体のデータを先頭から順序どおりに読み込みや書き出しをするアクセス方式です。磁気テープ媒体に向いています。後述する直接アクセスと比較すると、場所を探す時間がかかりませんが、任意の場所にアクセスするためには、順送りや順戻しをするのに時間がかかります。

直接アクセス

直接アクセスとは、記憶媒体のデータを配列とみなして、任意の場所を直接アクセスして、読み込みや書き出しを行うアクセス方式です。ハードディスク媒体やフラッシュメモリに向いています。目的の場所に移動するのに少し時間がかかりますが、順送りや順戻しの時間はかかりません。

動的アクセス

動的アクセスとは、基本的には順次アクセスをしますが、任意の場所へ移動するときだけは直接アクセスで行うという、順次アクセスと直接アクセスを組み合わせた方式です。光ディスクの類はこの方法です。映画のDVDのように、先頭からの順次アクセスであったり、ドラマやバラエティー、音楽等の場合、チャプタや曲の先頭に行くまでは、直接アクセスする必要があるが、そこからしばらくは順次アクセスで良い場合が多いので、映像・音楽コンテンツでよく利用される光ディスクにはこのアクセス方法がマッチしています。

ファイル編成

順編成

順編成は、一つのファイルを構成する複数のレコードが、一次元的に並んだ編成です。順次アクセス向きです。

直接編成

直接編成は、一つのファイルを直接アクセス可能なレコードの集合とする編成です。レコード中のキー値を元にして格納アドレスを決定します。その位置をアクセスして読み込みや書き出しをします。

索引順編成

索引順編成は、本来のデータの他に索引(インデックス)部を持つ本のような編成です。任意に索引を作ることによって、順次アクセスを基本として、直接アクセスや動的アクセスも可能です。

あふれ域

あふれ域とは、索引編成において本来のデータ域に収まりきらなくなったデータを収容する領域です。索引順編成が順次アクセス、直接アクセス、および動的アクセスを可能にするために、あふれ領域が使われます。なお、あふれ域が大きくなってくると、再編成という作業が必要になります。

区分編成

区分編成は、一つのファイルを構成する複数のメンバの先頭アドレスをディレクトリに記録して、それぞれ一つのメンバは複数のレコードの順編成である階層的な編成です。メンバに対して直接アクセスし、メンバ内のレコードに対しては順次アクセスするので、動的アクセス向きです。

VSAM(Virtual Strage Access Method)編成

VSAM編成は主記憶装置と補助記憶装置の両方にわたって、仮想的なファイルを編成するものです。レコードが主記憶装置にあれば、アクセスは高速になります。

仮想記憶が主記憶装置のメモリを補助記憶装置へも仮想的に拡張したものであるのと反対に、VSAMは補助記憶装置上のファイルを主記憶装置に仮想的に拡張したものです。

レコードを論理的な記憶空間上で管理するもので、媒体の物理的特性に依存しない方式です。

ファイル=データセットという単位で扱い、
・入力順データセット=順編成ファイルに相当します。
・キー順データセット=索引順編成ファイルに相当します。
・相対レコードデータセット=直接編成ファイルに相当します。

 

なお、最近のサーバ~PC向けのOSの場合、OSが管理するのはファイルシステムまでとし、ファイルの中身の編成方法については、アプリケーションに任せているケースも多くあります。
例えばPDFファイルなどのように、多数のOSをまたがってやり取りされるようなファイルも存在するので、ファイルの中身についてはプラットフォームに依存しないように、アプリケーション側にファイルの編成方式を委ねています。

バックアップ

この記事での学習内容 ITパスポート 基本情報 応用情報

ファイルのリカバリを目的としたバックアップの取得方法と手順,世代管理,ファイルの修復方法と手順など,バックアップの方式を理解する。

用語例:多重バックアップ,フルバックアップ,差分バックアップ,増分バックアップ

バックアップ

大量のデータを保存し、大勢のユーザが共有利用するデータベースは万が一の障害に備えて、定期的にバックアップを作る必要があります。

バックアップの作成方法には、データをすべてコピーするフルバックアップ方式と、部分的にコピーする差分バックアップ方式、増分バックアップ方式があります。

一般的には、定期的なフルバックアップと差分又は増分バックアップを組み合わせて運用します。

フルバックアップ

ファイルを丸ごとコピーしてバックアップファイルを作成する方法をフルバックアップといいます。

フルバックアップは作成時も復旧(リストア)時も一度のコピー作業で済みますが、大量のデータを一括してコピーするためバックアップ作業に長時間かかるという欠点があります。

差分バックアップ

一度フルバックアップを行った後、さらに更新されたデータのみをバックアップする方法を、差分バックアップといいます。差分バックアップは通常、定期的なフルバックアップと組み合わせて行います。

差分バックアップはフルバックアップに比べるとコピーするデータの量が少なくなるので、作業時間が短くて済むという利点があります。

しかし、障害が起きた後のリストア作業として、一旦フルバックアップのデータを書き戻し、それから障害発生の直前に作成した差分バックアップのデータを書き戻す必要があるため、復旧作業の時間が長くなるという欠点があります。

増分バックアップ

前回のフルバックアップもしくは差分バックアップの後で、さらに更新されたデータのみをバックアップしていく方法を増分バックアップといいます。

増分バックアップはコピーするデータ量が少なくて済むので短時間でバックアップできますが、リストア作業として、直前のフルバックアップのデータを書き戻し、その後に作成した全ての増分バックアップのデータを順に書き戻す必要があるため、復旧作業に手間と時間がかかります。

 

どのバックアップ方式を選ぶか、どんな周期でフルバックアップを作成するかは、データの量や重要度に応じて決定します。

頻繁に更新するデータほど、こまめにバックアップを取る必要があり、速く復旧させることが重視される場合には、フルバックアップもこまめに作成する必要があります。

バックアップの運用ルール

大量のデータのフルバックアップを作るには長い時間がかかるため、運用スケジュールと実施責任者を決め、業務に支障なく確実に行えるように管理する必要があります。

バックアップ処理中にファイルを更新すると正副のデータに矛盾が起きてしまうので、バックアップ処理はユーザからのファイルアクセスのない、業務時間外や深夜などに行います。確実に手間なくバックアップを作成するためには、バックアップ作業を自動化するのが一般的です。

バックアップ用の媒体

バックアップを作成する媒体には、DATなどの磁気テープや、DVD-RAMなど、大量のデータを繰り返し複写できる媒体が適しています。

媒体の管理

バックアップファイルを、原本となるデータと同じハードディスク内などに作ると、ディスク装置が故障した場合に両方共失われてしまうので、通常、原本とは別の媒体に作成します。

また、地震や火事などの災害時を考慮し、バックアップ媒体はシステムのある場所とは別のところに保管するのが望ましいとされています。

世代管理

バックアップ媒体を最新の1セットしか保存しないと、バックアップ作成途中のトラブルなどで正副両方のデータが失われてしまった場合に復旧できなくなるので、以前のバックアップデータも何世代かに渡って残しておくほうが安全です。バックアップ媒体にはラベルを貼るなどし、世代別にきちんと管理します。

開発ツール

情報処理技術者試験での学習内容

【応用情報・基本情報】
ソフトウェア開発に用いる開発ツールの種類,特徴,機能を修得し,応用する。

【ITパスポート】
オフィスツールなどのソフトウェアパッケージの特徴と基本操作を理解する。

(1)開発ツールの種類と特徴 基本情報 応用情報

設計を支援するツール,プログラミングやテストを支援するツール,ソフトウェア開発の各工程を通して自動化,効率化を目的とするツール,開発作業全体を一貫して工程を支援するIDE(Integrated Development Environment:統合開発環境)など,代表的な開発ツールの種類,特徴,機能を理解する。

用語例:設計支援ツール(SADT:Structured Analysis and Design Techniques,SREM:Software Requirement Engineering Methodology,PSL/PSA:Problem Statement Language /Problem Statement Analyzer),設計ツール,ドキュメント生成ツール,構築ツール,テストツール(静的デバッギングツール(プリティプリンタ,クロスリファレンス),動的デバッギングツール,静的解析ツール(ソースコード解析ツール,プログラム構造解析ツール),動的解析ツール(テストデータ生成ツール,テストカバレージツール,テストベッドツール,プログラム検証ツール)),ツールチェーン, エミュレータ,シミュレータ, ICE ( In-Circuit Emulator:インサーキットエミュレータ),トレーサ,インスペクタ,スナップショット,アサーションチェッカ,バージョン管理ツール

(2)言語処理ツールの種類と特徴 基本情報 応用情報

代表的な言語処理ツールの種類,特徴,機能を理解する。

ジェネレータ,原始プログラム,プリプロセッサ,アセンブラ,コンパイラ,実行時コンパイラ,クロスコンパイラ,インタプリタ,目的プログラム,リンカ,ローダ,ロードモジュール

 

開発ツールの種類と特徴

この記事での学習内容 基本情報 応用情報

設計を支援するツール,プログラミングやテストを支援するツール,ソフトウェア開発の各工程を通して自動化,効率化を目的とするツール,開発作業全体を一貫して工程を支援するIDE(Integrated Development Environment:統合開発環境)など,代表的な開発ツールの種類,特徴,機能を理解する。

用語例:設計支援ツール(SADT:Structured Analysis and Design Techniques,SREM:Software Requirement Engineering Methodology,PSL/PSA:Problem Statement Language /Problem Statement Analyzer),設計ツール,ドキュメント生成ツール,構築ツール,テストツール(静的デバッギングツール(プリティプリンタ,クロスリファレンス),動的デバッギングツール,静的解析ツール(ソースコード解析ツール,プログラム構造解析ツール),動的解析ツール(テストデータ生成ツール,テストカバレージツール,テストベッドツール,プログラム検証ツール)),ツールチェーン, エミュレータ,シミュレータ, ICE ( In-Circuit Emulator:インサーキットエミュレータ),トレーサ,インスペクタ,スナップショット,アサーションチェッカ,バージョン管理ツール

CASEツール

CASEツールはコンピュータ支援ソフトウェア工学(Computer Aided Software Engineering:CASE)というソフトウェア開発方法論のための開発支援ツールの総称です。

要求分析、機能設計、内部設計のツールを上流CASEツール、プログラム作成、試験、提供、保守のツールを下流CASEツールに区分されます。

全てのプロセスのツールを備えたものを統合CASEツールといいます。

現在よく使われているツールの例として、業務などをモデル化するためのUML作成ソフトや、プログラムソース生成ツール、バージョン管理システムなどがあります。

統合開発環境(Integrated Development Environment)

統合開発環境(IDE)は、ソフトウェアの開発支援ツール軍に対して、統一された操作インタフェースと、統一されたファイル管理を備えた開発支援システムです。

操作性やファイル管理が標準化されるとともに、開発プロセス間のファイルの受け渡しが用意になります。

ツールチェーン

ツールチェーンは、一連の開発プロセス用に並んだツール群の総称です。一つのツールの出力ファイルが、次のツールの入力ファイルになります。

コンパイラやリンカ、ユーティリティプログラムなどを組み合わせた、一連の開発プロセス用ツール群の総称です。

エミュレータ

エミュレータは、あるハードウェアやオペレーティングシステムで動作していたプログラムを、異なるハードウェアのマイクロプログラムやオペレーティングシステムのAPIを調整して動作可能にする機構です。

コンピュータをリプレースしたときや、新たなコンピュータを開発する時に利用されます。

シミュレータ

シミュレータは、あるハードウェアやオペレーティングシステムで動作していたプログラムを、異なるコンピュータで動作させる模擬実行用のソフトウェアです。

エミュレータと違って、ハードウェアやオペレーティングシステムには手を加えませんが、動作は遅くなります。

最近の流れとして、エミュレータ・シミュレータの境界線は曖昧になっており、どちらの特性も兼ね備えた、『仮想マシン環境』と呼ばれるものも存在しています。

元々は『仮想マシン環境』もテストツールとして用いられることが主流でしたが、機器の高性能化やダウンサイジング化の流れの中で、レンタルサーバ、ホスティングといった事業で、1機器で複数のサーバを運用するといった用途で用いられています。

ICE(In-circuite Emulator)

インサーキットエミュレータは、デジタル回路のエミュレータです。組込みソフトウェアを含むハードウェアの開発に用いられます。

マイクロプロセッサをエミュレーションしつつ、ソフトウェアのデバッグ機能を持っており、実際にマイクロプロセッサにソフトウェアを組み込んでデバッグするのに比べて、バグ分析やソフトウェア修正の手間が減ります。

トレーサ

トレーサは、デバッグツールの一種であり、プログラムの実行経路を表示するツールです。選択や反復の判定の間違いや性能不良の問題箇所を発見するのに役立ちます。

スナップショット

スナップショットは、デバッグツールの一種であり、データの値を表示するツールです。固定のプログラム部と変化するデータぶとを分割するオブジェクト指向プログラミングによく用いられます。

アサーションチェッカ

アサーションチェッカは、デバッグツールの一種であり、プログラムの実行経路の特定の地点で、あるデータが所定の条件を満たすか診断して、満たさなければ警告を表示するツールです。

アサーション(主張)という名前のとおり、人間だけに判断を委ねるスナップショットよりも積極的です。また、通常の診断メッセージがユーザへの表示であるのに対して、アサーションチェッカはソフトウェア開発者へのメッセージを表示します。

 

言語処理ツールの種類と特徴

この記事での学習内容 基本情報 応用情報

代表的な言語処理ツールの種類,特徴,機能を理解する。

ジェネレータ,原始プログラム,プリプロセッサ,アセンブラ,コンパイラ,実行時コンパイラ,クロスコンパイラ,インタプリタ,目的プログラム,リンカ,ローダ,ロードモジュール

原始プログラム

原始プログラムは、プログラム言語で書かれた文字列のファイルです。人間が書いたり読んだりするプログラムであり、そのままではコンピュータでは実行できません。

オブジェクトプログラム

オブジェクトプログラムは、コンパイラやアセンブラが出力した機械語プログラムです。メインルーチンやサブルーチンや再利用のためのルーチンが分かれており、機械語部分の他に、リンカが結合するための結合用の情報がついています。

ロードモジュール

ロードモジュールは、主記憶装置にロードして実行できる機械語命令だけのファイルです。ただし、動的リンクのための情報を持っていることがあります。ロードモジュールはリンカによって出力され、ローダによって入力されます。

リンカ

リンカ(連係編集プログラム)は、複数のオブジェクトプログラムを入力して結合し、一つのロードモジュールを出力するソフトウェアです。コンパイラやアセンブラが原始プログラムの形式のメインルーチンやサブルーチンを翻訳して、複数のオブジェクトプログラムを出力します。リンカはそれらを結合するのに加えて、既存の目的ライブラリの中のオブジェクトプログラムを再利用するために結合することも行います。

ローダ

ローダは、補助記憶装置上のロードモジュールを主記憶装置上へ読み込むソフトウェアです。

クロスコンパイラ

クロスコンパイラは、原始プログラムを翻訳して、異なる種類のコンピュータ向けのオブジェクトプログラムを出力するコンパイラです。

対象のコンピュータの開発途上の期間に用いたり、対象のコンピュータがソフトウェアの開発に向かない場合に用いたりします。

ジェネレータ

ジェネレータは、パラメータを入力して目的プログラムを出力するソフトウェアです。プログラムのロジックが定型的である分野で、本格的なプログラミングをすること無しにプログラムを作成することができます。

プリプロセッサ

プリプロセッサは、何らかのファイルを入力して、原始プログラムを出力するソフトウェアです。

原始プログラムを整形したり、定型的な部分を、ライブラリから取り込んで展開したりします。

コンパイラの前に実行されるプロセッサなので、プリプロセッサといいます。

 

オープンソースソフトウェア(概要)

情報処理技術者試験での学習内容

【応用情報・基本情報】
オープンソースソフトウェアの種類,特徴,機能,構成,利用上の考慮点,動向を修得し,応用する。

【ITパスポート】
オープンソースソフトウェア(OSS:Open Source Software)の特徴を理解する。

(1)OSS の種類と特徴,機能,構成 ITパスポート 基本情報 応用情報

LAMP/LAPP(LAMP:Linux,Apache,MySQL,PHP,LAPP:Linux,Apache,PostgreSQL,PHP)を中心に広く利用されているOSS(Open Source Software:オープンソースソフトウェア)の代表的な種類,特徴,機能,再配布の自由,派生ソフトウェア改変の許諾などオープンソースライセンシングの内容を理解する。

用語例:Linux カーネル,Perl,Python,Ruby,オープンソースライブラリ,CPAN,PEAR,jQuery,コピーレフト(Copyleft),デュアルライセンス,GPL(General Public License ), BSDL ( Berkeley Software Distribution License ), MPL ( Mozilla Public License),Apache ライセンス

(2)UNIX 系OS 基本情報 応用情報

代表的なOSS であるUNIX,UNIX 互換OS を含むUNIX 系OS を理解する。

用語例:NetBSD , IRIX , Linux , FreeBSD ( Free Berkley Software Distribution ),OpenBSD,The Open Group

(3)オープンソースコミュニティ 基本情報 応用情報

オープンソースコミュニティによるソフトウェア開発の仕組みを理解する。

用語例:SCM(Source Code Management:ソースコード管理)

(4)OSS の利用・活用と考慮点 ITパスポート 基本情報 応用情報

ライセンスの適用範囲,利用時のサポートにかかるコスト,問題発生時の対処など,OSSを利用する上で考慮すべき点を理解する。

用語例:安全性,信頼性

(5)OSS の動向 基本情報 応用情報

OSS の開発や普及の動向を理解する。

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

OSSの種類と特徴、構成 ITパスポート 基本情報 応用情報

無償で利用できるソフトウェア

一定の制限のもとに無償で利用できるソフトウェアがあります。インターネット上のサイトからダウンロードして利用できるものが一般的で、利用の仕方によって、フリーウェア、シェアウェア、オープンソースソフトウェアに分けられます。

フリーウェア
開発者が誰でも自由に使えるようにネットワークなどで配布しているソフトウェア。著作権を放棄しているわけではなく、ユーザが無償で使うことを許諾している。
シェアウェア
通常、無償で使える試用期間を設けて、使用を継続するためには料金を払う形式で配布されるソフトウェア
オープンソースソフトウェア
プログラムのソースコードをインターネット状などで公開し、一定の条件のもとでの変更や改変を許しているソフトウェア。
再配布が自由で、ソースコードから派生ソフトウェアを改変することが許されている。Linuxが代表的。

コピーレフト

コピーレフトとは、著作者が著作物の自由な利用、再配布、改変を許諾する考え方です。著作権(コピーライト)が許諾契約なしには、再配布や改変ができないのとは反対の考え方なので、コピーライトに対してコピーレフトという造語で呼ばれています。

ソフトウェアの添付文書や表示画面に、コピーレフトである旨を表示することによって、不特定多数の人が利用、再配布、改変、改変物の再配布ができます。

OSSのライセンス

オープンソースソフトウェア(OSS)は一定の条件下での利用・改変・頒布を認めているソフトウェアのことです。

そのライセンス体系の代表的な種類として、GPL、BSDL、MPLがあります。

GPL(GNU General Public License:GNU GPL)

GPLはコピーレフトの代表的なものです。フリーソフトウェアと比べると、二次的著作物についてもコピーレフトの制約を引き継ぐ点が異なります。

GPLで制約されているコピーレフトの制約とは、2次的著作物を再頒布する場合には、GPLライセンスを継承する必要がある点、GPLライセンスのソースコードを一部でも組み込んだものはその制約によって、ソースコードを公開することが求められる点などがあります。

BSDL

自由度の高いライセンス形態。無保証を宣言し、著作権やライセンス条項にBSDLである旨を表示すれば、改変や再頒布が認められる。その際にソースコードの改変は必要なく、二次的著作物でコピーレフトを引き継ぐ必要はない。

MPL

独自開発のソースコードにMPL適用のOSSのコードを組み合わせた場合、改変部分のソースだけを開示すればよい。また、二次的著作物はMPL/GPL/LGPLのいずれかを採用することが選択できる。

LGPL

GPLライセンスから派生した、主にライブラリとして提供されるソフトウェア向けのライセンス形態。LGPLライセンスのソフトウェアを『リンク』として利用するだけであれば、コピーレフトの制約を引き継ぐ必要がないというもの。

OSSを利用したシステムの構成

LAPP

LAPPとは、オープンソースソフトウェアだけでオペレーティングシステムおよびミドルウェアを揃えた定番の組み合わせです。

Linux、Apache、PostgresSQL、PHPの頭文字を取ってLAPPと呼ばれます。

  • Linux:オペレーティングシステム
  • Apache:Webサーバソフトウェア
  • PostgresSQL:データベース管理システム
  • PHP:Web用スクリプト言語及び言語処理ソフトウェア

LAMP

LAPPと同様に、オープンソースソフトウェアだけでオペレーティングシステムおよびミドルウェアを揃えた定番の組み合わせです。

  • Linux:オペレーティングシステム
  • Apache:Webサーバソフトウェア
  • MySQL:データベース管理システム
  • PHP:Web用スクリプト言語及び言語処理ソフトウェア

UNIX系OS 基本情報 応用情報

主なUNIX系OSには、次のようなものがあります。

Solaris
商用UNIX。旧サン・マイクロシステムズ社が開発し販売したOS。
AIX
商用UNIX。IBM社が開発したOSで、サーバコンピュータで採用される。
UnixWare
SCO社による、商用UNIX。
HP-UX
商用UNIX。ヒューレット・パッカード社が開発したOS。
NetBSD
非商用UNIX。カリフォルニア大学バークレー校が開発したOSをベースとしている。移植性が高い。
FreeBSD
PC/AT互換機向けに特化した、非商用UNIX。
OpenBSD
NetBSDから派生した非商用UNIX。セキュリティが高い。
Linux
ライナス・トーバルス氏によって開発された非商用UNIX。この派生版が多数存在し、インターネット上のサーバによく用いられる。

オープンソースコミュニティ 基本情報 応用情報

オープンソースコミュニティとは、OSSの開発者やユーザから構成される非営利の団体です。

OSSの共同開発やバグ修正のパッチ作成と配布、セミナー開催などの啓蒙活動を行います。

現在、LinuxやApacheなど、さまざまなOSSのオープンソースコミュニティが活動しています。

OSSの利用・活用と考慮点 ITパスポート 基本情報 応用情報

オープンソースソフトウェアを利用・活用するには、次のような点を考慮する必要があります。

  • ソフトウェアの利用条件(ライセンス)をすべての関係者が正確に理解する。
    • フリーウェア、シェアウェア、コピーレフトなどとの違いを理解する。
    • 当該ソフトウェアの添付文書や表示画面の許諾条件を理解する。
    • 条件を遵守できない場合にどういう問題になるかを理解する。
  • 有償であれば、販売者側の営業員、SE、保守員、教育講師、ヘルプデスク等がしてくれる作業が、利用・活用する側の労力コストになるかどうかを見積もる。必要なら適度の料金の有償の支援サービスを依頼する。
  • ソフトウェアの安全性を検討する。委託開発と違って、導入に要する期間が短いが、安全性などの検討を疎かにしないようにする。
  • ソフトウェアに不具合があっても、修正サポートや損害賠償の責任を要求できないことを理解する。自社および社外の再配布先で不具合があった場合にどうするかを考えておく。

 

ハードウェア

情報処理技術者試験での学習内容

【応用情報・基本情報】
・コンピュータの構成部品である電気・電子回路,機械・制御を修得し,応用する。
・構成部品や要素とその実装,組込みシステムを構成する部品の役割,部品間の関係を修得し,応用する。
・最適な構成で設計するための論理設計の留意事項を修得し,応用する。
・組込み機器の開発における消費電力の重要性,関連する技術,動向を修得し,応用する。

(1)電気・電子回路 基本情報 応用情報

コンピュータの基本的な論理回路であるAND 回路,OR 回路,NOT 回路などの動作原理,論理回路は,組合せ論理回路と順序論理回路に分類できること,回路ごとの特徴を理解する。

用語例:NAND 回路,XOR 回路,フリップフロップ

(2)機械・制御 基本情報 応用情報

代表的な機械電子制御の実現方法について,その構造や動作原理,各部の働きを理解する。

用語例:オープンループ制御,クローズドループ制御,シーケンス制御,フィードバック制御,PWM(Pulse Width Modulation:パルス幅変調)制御

(3)構成部品及び要素と実装 基本情報 応用情報

1.半導体素子

代表的な半導体素子の動作原理,構造,特性,実装を理解する。

用語例:ダイオード, LED , トランジスタ, IC , LSI , VLSI ( Very Large Scale Integration),CMOS,バイポーラ,BiCMOS(Bipolar Complementary MOS),バイポーラメモリ

2.カスタムIC

利用者が要求する回路をIC として実現できることを理解する。

用語例:ASIC(Application Specific IC),FPGA(Field Programmable Gate Array),HDL(Hardware Description Language:ハードウェア記述言語)

3.システムLSI

組込み分野などで利用され,複数の半導体を組み合わせることによって占有面積を縮小し,システムを小型化し,高速化,低コスト化などのメリットがあることを理解する。

用語例:コデザイン,SoC(System on a Chip)

4.組込みシステムの構成部品

組込みシステムを構成する部品の役割,部品間の関係を理解する。

用語例:プロセッサ,DSP(Digital Signal Processor),センサ,アクチュエータ,メモリ,ASIC,D/A コンバータ,A/D コンバータ,MEMS,診断プログラム

(4)論理設計 基本情報 応用情報

性能,設計効率,コストなどを考慮して,どの構成が最適であるのかを検討し,設計することを理解する。 

用語例:回路設計,タイミング設計,同期式設計,非同期式設計,加法標準形,論理圧縮

(5)消費電力 基本情報 応用情報

ハードウェアの消費電力について,組込み機器の開発における消費電力の重要性,関連する技術,動向を理解する。

用語例:低消費電力化,リーク電流,パワーゲーティング,クロックゲーティング

電気・電子回路

この記事での学習内容 基本情報 応用情報

コンピュータの基本的な論理回路であるAND 回路,OR 回路,NOT 回路などの動作原理,論理回路は,組合せ論理回路と順序論理回路に分類できること,回路ごとの特徴を理解する。

用語例:NAND 回路,XOR 回路,フリップフロップ

AND/OR/NOT回路の動作原理

コンピュータのデジタル処理は、論理積(AND)、論理和(OR)、否定(NOT)などの論理演算の組み合わせです。数値の加減乗除も論理演算の組み合わせです。

論理演算は半導体集積回路(IC)で実現されますが、原理としてはダイオード、トランジスタ、抵抗などで構成される電気回路です。電圧の高低を論理演算の真と偽、あるいは2進数の1と0として扱います。

ここではわかりやすいように、トランジスタなどによる回路の代わりに簡単なスイッチを用いて論理演算の原理を説明します。

組み合わせ回路と順序回路

組み合わせ回路:入力された値で出力値が決まる回路。半加算回路、全加算回路など

順序回路:入力値+その時の内部の値とで出力する値が決まる回路。フリップフロップ回路など

フリップフロップ回路

フリップフロップ回路は、二つの論理素子が、入力の真偽を反転して出力し、それを他方の入力としてフィードバックし合うことによって、真または偽の状態を保ち続ける回路です。外部からの入力が真偽を反転させると、反転した状態へ遷移します。

磁気などを用いずに電気だけで記憶することが出来るので、高速の記憶手段として使われます。一つのフリップフロップ回路が1ビットに相当します。

主に主記憶装置やレジスタ、キャッシュなどSRAMに使われている回路。その回路の方式で、RS型、JK型、D型、T型など、多種に渡ります。

例として、最もシンプルなRS型の回路図を示します。

RSという名称は、リセット(Reset)とセット(Set)の2入力の信号名に由来する。 RS型フリップフロップのブロック図と真理値表を示す。

なお、RS型は同時にRとSに入力があると、結果が不定になります。

機械・制御

この記事での学習内容 基本情報 応用情報

代表的な機械電子制御の実現方法について,その構造や動作原理,各部の働きを理解する。

用語例:オープンループ制御,クローズドループ制御,シーケンス制御,フィードバック制御,PWM(Pulse Width Modulation:パルス幅変調)制御

制御

制御とは、計測によって得られた入力値を元に、出力値を調整することです。

入力や出力に使われるものは、電圧、電流、圧力、温度、音量、音程などアナログ信号が使われます。

これに対して、入力された値をコンピュータ処理する際には、デジタル信号で扱われますので、必要に応じてA/D変換、D/A変換が行われます。

クローズドループ制御

クローズドループ制御とは、機械を電子制御する方式の一種で、対象を操作して、対象が変化した状態を確認して操作を調整する方式です。

クローズドループ制御の例としては、電気ポットがあります。水を加熱して、所定の温度になったら加熱を止めます。

フィードバック制御

フィードバック制御とは、制御した結果を常に監視して、目標値と比較し、次の制御に反映させる制御方法です。フィードバックとは、ある出力・結果を差し戻して反映させるという意味です。

シーケンス制御

シーケンス制御とは、あらかじめ定められた順序又は手続きに従って制御の各段階を逐次進めていく電子制御です。シーケンス制御の例には洗濯機があります。洗濯をして、すすぎをして、脱水をします。

オープンループ制御

オープンループ制御とは、制御量の入力値のみを計算する制御方法です。測定値によるフィードバックはせず、外的要因などは一切考慮しません。あらかじめ決められた手順や時間のみで制御する場合に適します。

フィードフォワード制御

フィードフォワード制御とは、外的要因が出ないように必要な反映を行う制御方法です。影響が現れる前に必要な修正を行います。探知機(センサ)を使用することなく、使用機器の精度に頼ります。また外的要因に対して適切な制御を行えるとは限りません。

PWM(パルス幅変調)

パルス幅変調(Pulse Width Modulation:PWM)とは、パルスの幅を変化させて信号を伝送する方式の変調です。この信号によって機械ので夏や電流を制御します。PWMは空調機などの制御に用いられます。

構成部品及び要素と実装

この記事での学習内容 基本情報 応用情報

  • 代表的な半導体素子の動作原理,構造,特性,実装を理解する。
  • 利用者が要求する回路をIC として実現できることを理解する。
  • 組込み分野などで利用され,複数の半導体を組み合わせることによって占有面積を縮小し,システムを小型化し,高速化,低コスト化などのメリットがあることを理解する。
  • 組込みシステムを構成する部品の役割,部品間の関係を理解する。

用語例:ダイオード, LED , トランジスタ, IC , LSI , VLSI ( Very Large Scale Integration),CMOS,バイポーラ,BiCMOS(Bipolar Complementary MOS),バイポーラメモリ、ASIC(Application Specific IC),FPGA(Field Programmable Gate Array),HDL(Hardware Description Language:ハードウェア記述言語)、コデザイン,SoC(System on a Chip)、プロセッサ,DSP(Digital Signal Processor),センサ,アクチュエータ,メモリ,ASIC,D/A コンバータ,A/D コンバータ,MEMS,診断プログラム

半導体

半導体とは、電気を通す物質(良導体)と電気を通さない物質(絶縁体)の中間的な性質を持つ物質です。シリコンやゲルマニウムなどを用いる微量の添加物によって伝導性を調整します。(N型半導体、P型半導体など)

このような半導体の性質を利用した素子や電子部品を半導体素子といいます。ダイオード、トランジスタ、発光ダイオード(LED)、集積回路(IC、LSI)などがあります。

ダイオード

ダイオードは、電流を整流する電子部品です。交流を直流を帰ることなどに使われます。現在では半導体ダイオードが普通です。

整流ダイオード
交流を直流に変える
スイッチングダイオード
高速スイッチとして用いる
ツェナーダイオード
定電圧化、過電流防止に用いる。

トランジスタ

トランジスタは、増幅やスイッチ動作をする半導体部品です。アナログ回路ではラジオ、テレビ、音響機器の増幅回路などに使われますが、デジタル回路では論理素子として使われます。トランジスタは典型的にはシリコンという半導体で作られます。

LED(Light Emitting Diode)

LED(発光ダイオード)はエレクトルミネセンスという原理に基づく、電流を流すと発光する半導体素子です。長寿命で小型軽量なことも特徴で、小さな表示ランプ、照明器具、およびディスプレイ装置などに使われます。

IC(Integrated Circuit)

IC(半導体集積回路)は、抵抗、コンデンサ、ダイオード、トランジスタ、電線などの電子素子を半導体だけで全て一体として作った部品です。複数の端子が出ていて、他の部品と接続します。

トランジスタなどの部品を用いるのに比べて格段に小さくすることができ、複雑なCPUや主記憶装置も爪程度の大きさで実現できます。

LSI(Large Scale Integration:大規模集積回路)は、素子の集積度が1000個から10万個程度の半導体集積回路です。

VLSI(Very Large Scale Integration)は、素子の集積度が10万個から1000万個程度の半導体集積回路です。

現在では集積度の高い半導体集積回路は珍しくないので、集積度に関わりなくICやLSIと呼ぶのが普通です。

CMOS(Complementary Metal Oxide Semiconductor)

CMOS(相補型金属酸化膜半導体)は、その名の示すとおりの構造の半導体で、チャネルの異なるトランジスタを一つの半導体に組み込んだ論理回路です。消費電力が低いことや安価であることが特徴であり、携帯機器やノートパソコンに用いられたり、コンピュータの中でも性能よりも低価格を重視する部品に用いられたりします。

 

 

論理設計

この記事での学習内容 基本情報 応用情報

性能,設計効率,コストなどを考慮して,どの構成が最適であるのかを検討し,設計することを理解する。 

用語例:回路設計,タイミング設計,同期式設計,非同期式設計,加法標準形,論理圧縮

論理回路

論理回路は、論理演算を行う電気回路です。電気信号は連続した信号値を扱うアナログ回路と、電圧の高低で0と1だけを扱うデジタル回路とに区分されます。

論理回路はデジタル回路の類似語であり、0と1のデジタル値について論理積(AND)、論理和(OR)、否定(NOT)などの論理演算を行うことを特徴に出した用語です。これらの論理演算の素子を回路として組み合わせて、加減乗除を含む高度な処理をします。

コンピュータを構成するCPU、主記憶装置、補助記憶装置、入出力装置、ネットワーク装置のいずれにも、論理回路が用いられています。

論理設計

論理設計は、論理回路を設計することです。狭義には論理演算を組み合わせる部分を設計することを論理設計といいます。

講義の論理設計では、次のような性質を考慮します。

回路設計

回路設計とは、回路を設計することです。論理回路の場合には、狭義の論理設計をしたあとを受けて、狭義の回路設計として、トランジスタ、抵抗、コンデンサの電気的性質を考慮して設計するプロセスを意味します。

  • システム設計:回路全体の構造
  • アーキテクチャ設計:ソフト・ハードの切り分け
  • 論理設計:回路で用いるCMOSの種類
  • レイアウト設計:回路や配線の配置
  • マスク設計:マスクパターンの設計
  • デバイス設計:CMOSの構造、配線の種類等

論理設計上の考慮点

論理設計では、以下のような項目を考慮して設計を勧めますが、全てを満たせるとは限らないので、優先順位を明確にすることが重要です。

  • 機能を高度にする。又は特殊な機能を追求する。
  • 速度性能を速くする。
  • サイズを小さくする。
  • 価格を安くする。また、消費電力などの運用コストを安くする。
  • 発熱量を減らす。
  • 設計・製造の品質、費用、時間を改善する。

素子を小さくして、集積度を上げることは、機能、速度、サイズ、価格、消費電力、発熱などのすべての面で高影響をあたえることが多いです。ただし、対立する場合もあり、高性能製品と安価製品とに設計方針が別れたりします。

論理回路が複雑になると、その設計にはソフトウェア開発と似たような性質が見られ、人間の設計ミス(バグ)が問題になります。一方、設計作業にもデジタル処理という誤差のない情報処理を適用できるので、ハードウェア記述言語(HDL)、正当性の検証、シミュレーションなどによって、品質や生産性を向上させることができます。

HDL(Hardware Description Language)

HDLはハードウェアの動作を記述する言語です。プログラム言語と同じような記述で電子回路を自動設計できます。

  • 回路の動作を文字で記述
  • 論理シミュレーションで動作を確認
  • 構成部品の接続関係を記述したファイル(ネットリスト)に変換

 

消費電力

この記事での学習内容 基本情報 応用情報

ハードウェアの消費電力について,組込み機器の開発における消費電力の重要性,関連する技術,動向を理解する。

用語例:低消費電力化,リーク電流,パワーゲーティング,クロックゲーティング

消費電力

デジタル回路やモーターなどの消費電力は、コンピュータにおいてもその削減が重要な課題です。特に大型のメインフレームコンピュータやサーバコンピュータでは、1台あたりの消費電力が大きく、休みなく作動させるという意味で消費電力の改善が大切です。パソコンの場合は、台数が多いという意味で改善が大切です。また、ノートパソコンの場合は、形態時の消費電力を削減するほど、使用可能時間を長くすることが出来るので、やはり重要な課題となります。

コンピュータ組み込み機器の場合には、消費電力について次のような点を考慮する必要があります。

  • 機器分野が消費電力の削減にしのぎを削っているので、主要な部品とはいえないコンピュータだけが特別扱いを受ける訳にはいかない。
  • 携帯機器の場合には、使用可能時間を伸ばすために、消費電力の削減が必要である。
  • 冷却機器を付けられない機器の場合には、発熱量の削減が必要であり、それが消費電力の削減にもつながる。
  • 機能や速度性能よりも、製造コストやサイズが優先されることが多いので、機能や速度向上をどの程度で見切るかが、消費電力の削減にもつながる。

 

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

情報処理技術者試験での学習内容

【応用情報・基本情報】
・インフォメーションアーキテクチャの考え方,目的を修得し,応用する。
・代表的なヒューマンインタフェース技術の種類,特徴を修得し,応用する。
・GUI の特徴,構成部品,GUI 画面設計の手順,留意事項を修得し,応用する。

【ITパスポート】
・ヒューマンインタフェースの特徴を理解する。

(1)インフォメーションアーキテクチャ 基本情報 応用情報

インフォメーションアーキテクチャ(情報アーキテクチャ)の考え方,目的,情報の組織化(五十音,カテゴリなど),構造化(階層型,タグ付けなど)などを理解する。

用語例:ラベル,チャンク,ナビゲーション,LATCH(Location,Alphabet,Time,Category,Hierarchy)法,階層型,直線型,Web リンク型,フォークソノミー型,セマンティックWeb,メタデータ

(2)ヒューマンインタフェース ITパスポート 基本情報 応用情報

ヒューマンインタフェースを決定する要件,インタフェースを実現する技術の種類,特徴を理解する。

用語例:ユーザビリティ,アクセシビリティ,インタラクティブシステム,音声認識,画像認識,動画認識,特徴抽出,学習機能,選択的知覚,ユーザ操作の分析,身体的適合性,ノンバーバルインタフェース,マルチモーダルインタフェース,空間型インタフェース,自然言語インタフェース

(3)GUI ITパスポート 基本情報 応用情報

グラフィックスを用いた視覚的な表示,ポインティングデバイスなどによる直感的な操作などGUI の特徴,GUI で使われる構成部品の特徴と役割,GUI 画面設計やシナリオなどを使用した設計の手順と留意事項を理解する。

用語例:ウィンドウ,アイコン,ラジオボタン(ラジオボックス),チェックボックス,リストボックス,プルダウンメニュー,ポップアップメニュー,テキストボックス

 

インフォメーションアーキテクチャ

この記事での学習内容 基本情報 応用情報

インフォメーションアーキテクチャ(情報アーキテクチャ)の考え方,目的,情報の組織化(五十音,カテゴリなど),構造化(階層型,タグ付けなど)などを理解する。

用語例:ラベル,チャンク,ナビゲーション,LATCH(Location,Alphabet,Time,Category,Hierarchy)法,階層型,直線型,Web リンク型,フォークソノミー型,セマンティックWeb,メタデータ

情報アーキテクチャ

情報アーキテクチャ(インフォメーションアーキテクチャ)とは、ユーザインタフェースの情報の構造です。建築になぞらえてアーキテクチャといいます。情報アーキテクチャの設計技法や定石を用いたり、設計基準を制定したりしつつ、アーキテクチャの設計・開発・検証をします。

情報アーキテクチャの考え方は、紙面のデザインを基盤にしていますし、一般的な情報の構造化はデータベースに技術が蓄積されています。

情報アーキテクチャの設計の目的は、ユーザのわかりやすさ、探しやすさ、操作のしやすさを向上させることです。

ユーザインタフェースの場合には、ディスプレイ上の2次元の広がりに加えて、階層という3次元目、そして対話型機能によるユーザの操作の流れという4次元目が加わります。また、ユーザが語句を入力する随時の検索も加わります。

情報アーキテクチャの設計には、次のようなことがあります。

  • 情報の組織化として、分類(カテゴリー)や五十音順などの整列の仕方を決定します。
  • 情報の表現の構造化として、階層型の画面やメニューの構成を決めたり、表現の性質を表すメタデータをタグ付けしたりすることがあります。
  • 複数の情報のチャンク(かたまり)を決めてラベルを付けることは、本質的情報の分類と表現上の配置の両方に関わります。
  • 情報間の移動の案内手段であるナビゲーションを設計します。

ナビゲーション

ユーザが情報の間をどのように移動するかを分析して、案内手段であるナビゲーションを設計します。次のようなナビゲーションを組み合わせます。

なお、以下の記述ではウェブサイトのデザインを前提に記載していますが、一般的なGUIアプリケーションでもこれらの観点は大事になってきます。

ページの位置関係によるリンク

ホームページリンク
ウェブページ群の起点のページへ戻るリンク
前ページリンク
現在のページの一つ前に戻るリンク
次ページリンク
現在のページの一つ先に進むリンク
ページトップ
現在のページ自身の先頭へ戻るリンク

先頭部および最後尾のナビゲーション

グローバルメニュー
同じウェブサイトのどのページを開いても、先頭部に表示される標準のメニュー
トピックパス(パンくずリスト)
「ホーム>製品情報>洗濯機」のように、ホームページから現在のページまでの分類体系の枝の連鎖を示す先頭部の表示。
フッターメニュー
同じウェブサイトのどのページを開いても、最後尾に表示される標準のメニュー。グローバルメニューを補助する。
コンテンツ内リンク
ページの内容から別の情報へ移動するリンク。例えば文章中のキーワードそのものにリンクを兼ねさせます。

先頭部・最後尾以外のナビゲーション

ページの先頭部・最後尾以外には、次のようなメニューを配置する定石があります。配置のルールをあらかじめ決めておくことが重要です。

  • 左側にいつも同じメニュー、右側に宣伝したい特別リンクを配置する。
  • その逆に、左側に特別リンク、右側にいつも同じメニューを配置する。
  • 先頭部のメニューのすぐ次に特別リンク、左側にいつも同じメニューを配置する。
  • それらのメニューは、グローバルメニューに比べて、写真やイラスト等の目を引くデザインにしたり、キャッチコピー等を補足したり、目次階層を示したりする。

カテゴリー別メニュー

カテゴリー別メニューは、前述のようなメニュー以外の任意の分類ごとのメニューです。分類の特徴に応じて設計します。

サイトマップ

ウェブサイトの全てのページ見出しを、分類体系の木構造として示す表示です。分類の枝をたどっても、目的のページが見つからない場合に使います。

 

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

この記事での学習内容 ITパスポート 基本情報 応用情報

ヒューマンインタフェースを決定する要件,インタフェースを実現する技術の種類,特徴を理解する。

用語例:ユーザビリティ,アクセシビリティ,インタラクティブシステム,音声認識,画像認識,動画認識,特徴抽出,学習機能,選択的知覚,ユーザ操作の分析,身体的適合性,ノンバーバルインタフェース,マルチモーダルインタフェース,空間型インタフェース,自然言語インタフェース

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

ヒューマンインタフェースとは、コンピュータと人間が遣り取りをする部分のことです。具体的には、人間がコンピュータへ指示を入力するキー操作の機能や、コンピュータから人間へ処理結果を返す画面表示や印刷などの機能を指します。ユーザインタフェースともいいます。

画面の表示形式や入力の方法、帳票のレイアウトなどのヒューマンインタフェースは、システムを使うユーザによっての使い方を大きく左右する部分です。

ヒューマンインタフェースの要件は次のように分類されます。

身体的適合性
人の身体と機器とが適合していること。手の大きさとマウスの大きさの適合などです。
頭脳的適合性
人の頭脳の情報処理と機器が適合していること。情報的適合性ともいいます。(例:上から下、左から右と言った情報の流れ)
時間的適合性
人の作業時間、休息時間、機械の応答待ち時間などが適合していること。人の疲労も関係します。
環境的適合性
照明、気温、騒音など、人の好む環境と適合していること。
運用的適合性
人が対話型システムを運用すること、および運用管理をすることに適合していること。

ヒューマンインタフェースを実現する技術には次のようなものがあります。

音声認識
人の話す音声言語を解析し、文字データとして取り出す。
画像認識
人の画像を解析して、それが何かを識別する。
動画解析
人の動画を解析して、それが何かを識別する。
非言語インタフェース
人の五感(視覚、聴覚、味覚、嗅覚、触覚)のうち、言語以外の触覚などを機器との入力又は出力に使う。
自然言語インタフェース
機器特有のコマンドなどではなく、人が日常的に使っている言語をインタフェースにする。
特徴抽出
前述の各種の処理において、解析や識別に必要な特徴をまず抽出する。

入力機能の設計

入力機能の設計では、「ユーザにとって分かりやすく、入力しやすい」ことが最も大切です。

図書館の図書検索システムのような、コンピュータに不慣れな人が使うことが多いシステムの場合は、キーボードを使った文字入力をできるだけなくし、メニューから選ぶ形式や、タッチパネルを使用した入力にするなどの配慮が必要です。

一方、キーボードに慣れたユーザ向けの入力画面である場合は、キーボードとマウスの操作が混在すると操作性が落ちるので、マウスの仕様を減らし、番号を入力して選ぶメニュー形式にするなど、効率よく入力できる機能設計が望まれます。

インタラクティブシステム

インタラクティブシステム(対話型システム)は、ユーザとコンピュータ等の機械とが、対話しながら作業を進めていくシステムのことです。人の出力が機器の入力になり、機器の出力が人の入力になるという関係です。

人もシステムの構成要素として考えると、機器の性能や機能はシステムの属性の一部に過ぎず、人の機能や性能も含めて、能率的な作業ができることが大切です。

機器側だけをシステムとして考えると、人間中心設計という方針が必要です。また、対話型システムの開発には、ユーザ操作の分析が必要です。

ユーザ操作の分析
  • 要件分析段階には、ユーザの従来の作業を分析したり、対話型システムにおける人の作業の部分や条件を分析したりします。
  • 試験段階には、開発された機器を用いてユーザに作業してもらい、それを分析して使いやすさを改善します。ユーザビリティテストがその例です。
ユーザビリティ

ユーザビリティは、対話型システムの特性の一つであり、次の特性のまとまりです。

  • 効果: ユーザの作業の結果が効果的である。
  • 効率: ユーザが作業を進める過程が効率的である。
  • 満足度: ユーザがイライラしたりせずに、気持ちよく作業が出来る。
アクセシビリティ

対話型システムの特性の一つであり、多様な性質を持つ人々の誰でもが、利用しやすいという性質です。特に、障がい者や高齢者でも利用しやすいことが代表的です。例えば、老眼の人のために文字サイズを大きくすることが挙げられます。

人に特有な性質の一つに、選択的知覚があります。人は自分の興味や経験をベースにして、好みの物事を選択的に知覚し、好みでない物事は知覚しにくいという傾向があります。選択的知覚を利用するインタフェースや弱点を補強するインタフェースが望まれます。

音声認識

音声認識は、人の話す音声言語を解析し、文字データとして取り出すことです。メニューを選択すること無しに、人が音声で機器に指示を出すことが、倉庫の扉の開閉やカーナビゲーションなどに用いられます。音声による個人認証は、セキュリティのためのインタフェース技術ともいえます。

画像認識

画像認識は、人の画像を解析して、それが何かを識別することです。例えば、人の視線を解析してカーソルを移動したり、人の笑顔を解析してカメラのシャッターを押す代わりにしたりすることができます。顔認証、指紋認証、虹彩認証などは、セキュリティのためのインタフェース技術ともいえます。

動画認識

動画認識は、人の動画を解析して、それが何かを識別することです。人のジェスチャーによって、機器へ処理を指示することなのです。

特徴抽出

特徴抽出とは、音声認識、画像認識、動画認識、非言語インタフェース、自然言語インタフェースなどの解析処理や識別処理の前半に、解析や識別に必要な特徴をまず抽出することです。画像認識であれば、人の顔の輪郭を抽出するようなエッジ検出などがその例です。

ノンバーバルインタフェース(非言語インタフェース)

非言語インタフェース(ノンバーバルインタフェース)とは、人の五感(視覚、聴覚、味覚、嗅覚、触覚)のうち、言語以外の触覚などを機器との入力または出力に使うことです。

例えば、医療教育用の端末は、人の手からの力をコンピュータへ入力したり、人体の反発を模擬した力をコンピュータから出力したりします。

自然言語インタフェース

自然言語インタフェースとは、機器特有のコマンドなどではなく、人が日常的に使っている言語をインタフェースにすることです。

例えば、音声認識において、「開け」等の操作用語に限定することなく、「ドアを開けてください」などの自由な文を許容したり、識別をすすめるためにコンピュータから日常語で質問したりするのが、自然言語インタフェースの例です。

 

GUI

この記事での学習内容 ITパスポート 基本情報 応用情報

グラフィックスを用いた視覚的な表示,ポインティングデバイスなどによる直感的な操作などGUI の特徴,GUI で使われる構成部品の特徴と役割,GUI 画面設計やシナリオなどを使用した設計の手順と留意事項を理解する。

用語例:ウィンドウ,アイコン,ラジオボタン(ラジオボックス),チェックボックス,リストボックス,プルダウンメニュー,ポップアップメニュー,テキストボックス

GUI(グラフィカルユーザインタフェース)

GUI(Graphical User Interface)とは、グラフィックを使って表された機能を、マウスで選んで操作できる視覚的なヒューマンインタフェースです。

機能が、直感的にわかりやすい「アイコン」などのシンボルを使って表示され、プログラムの起動などの基本的な操作をマウスを使ってできるので、キーボードに不慣れな初心者にも使いやすい操作環境です。

WindowsやMac OSなど、多くのOSがGUIを採用しています。

対して、キーボードでコマンドを入力しながら操作をするインタフェースのことをCUI(Character User Interface)といいます。

GUIの部品

GUIに対応するOSでは、ソフトウェアの画面設計に共通に利用できる、さまざまなGUI部品を提供しています。

チェックボックス
枠内にチェックを付けて選択肢を選ばせる部品です。同時に複数の選択肢を選ぶことができます。
ラジオボタン
円内に黒円をつけて選択肢を選ばせる部品です。複数の選択肢から一つだけを排他的に選ばせます。
リストボックス
リストとして表示される選択肢の一覧から選択できる部品です。
テキストボックス
自由記入形式でユーザがテキストを入力できる部品です。
プルダウンメニュー
メニューバーなどから選択肢のリストが垂れ下がるように表示されるメニューです。
ポップアップメニュー
右クリックなどで飛び出すように表示されるメニューです。

GUI画面設計の留意事項

GUI画面設計にあたっては、次のような点に留意します。

統一性
用語、マウスやキーボードの使い方、メッセージなどを統一する。画面レイアウトを画面間で統一する。
そのシステム内での統一性ももちろん、動作プラットフォームでの一般的な振る舞いに合わせるという意味での統一性も重要。
省力化
省略値(デフォルト値)や前回の選択肢の保存などにより、操作の手間を減らす工夫をする。入力時の適切な項目間のカーソル移動や日本語入力のON/OFFの自動化など。
ユーザの多様性
ユーザの多様性に対して、頻繁に行う操作には、マウスとキーボードの両方の手段を提供する。目の不自由な人や視力の弱い人にも配慮することや、特にWebページではPC以外からの閲覧も考慮するなど。
例外処理
途中での中断やご操作の際の取り消し(Undo機能)などの、よくある例外状況を許容する手段を提供する。
エラーメッセージはユーザを威嚇する表現を避けて、状況の説明、その原因、および次にすべき行為を案内するようにする。

ユーザの多様性を考慮すれば、キーボードの操作よりも、マウスによる操作が常に操作性が良いとは限りません。ユーザには個人差がありますし、同じユーザでもなれてくるとニーズが変わってくるものです。そのために、例えば使用頻度の高い操作に関しては、マウスとキーボードの両方のインタフェースを用意するようにします。

例えば、地図閲覧ソフトウェアを例にすると、特定の町の地図を表示する操作の場合、マウスだけを操作して、全国地図から出発し、近畿地方、京都府、京都市、中京区と絞り込んでいくのが典型的なGUIです。しかし、「住所欄」を設けてキーボードで「京都市中京区」と入力すると一回の操作で町の地図を表示できます。このような形でマウスとキーボード両方のインタフェースを用意すると良いでしょう。

 

インタフェース設計

情報処理技術者試験での学習内容

【応用情報・基本情報】
・画面設計,帳票設計,コード設計の考え方,手順,手法を修得し,応用する。
・ユニバーサルデザインの考え方を応用した望ましいインタフェースを修得し,応用する。

【ITパスポート】
・インタフェース設計の考え方を理解する。

(1)画面設計・帳票設計 ITパスポート 基本情報 応用情報

1.画面設計

画面設計の考え方,手順,手法,代表的な入力チェックの方法を理解する。また,入出力項目とデータベースの対応,入出力項目の処理の対応を理解する。

用語例:画面構成,情報の検索,情報の関係性,利用者の用語,情報提示ストーリ,ストーリボード,部分送信,ニューメリックチェック,フォーマットチェック,リミットチェック,組合せチェック,照合チェック,バランスチェック,チェックキャラクタ,穴埋め方式,メニューインプット方式,フォーマットエラー,論理エラー,シーケンスエラー

2.帳票設計

帳票設計の考え方,手順,手法を理解する。また,プリンタの種類やコピー方法などの装置制約事項と帳票設計の関係,フォームオーバレイや専用の事前印刷用紙への出力,入出力項目とデータベースの対応,入出力項目と処理の対応を理解する。

用語例:出力特性,入力特性

(2)コード設計 基本情報 応用情報

コードの種類と特徴,利用目的や適用分野に合わせたコード設計の考え方,手順,手法を理解する。

用語例:順番コード,区分コード(分類コード),桁別コード,表意コード,合成コード

(3)Web デザイン ITパスポート 基本情報 応用情報

Web デザインにおけるユーザビリティの考え方,ユーザビリティを向上させるための手法,スタイルシートの利用によるデザイン全体の統一や,複数種類のWeb ブラウザ対応などを考慮してWeb デザインすることを理解する。また,ユーザビリティに関する国際規格が存在すること,ユーザビリティ評価手法,Web サイトのナビゲーションの手法を理解する。

用語例:フレーム,空間近接原理,アフォーダンス,サイト内検索機能,ISO 9241,サイトマップ,クロスブラウザ,プログレッシブエンハンスメント

(4)人間中心設計 基本情報 応用情報

ユーザビリティの向上を目的とした,人間中心設計の考え方,プロセスを理解する。

用語例:ISO 13407,使用状況の理解と明示,利用者と組織の要求事項の明示,設計による