高校「情報Ⅰ」単語帳 - 実教出版「図説情報Ⅰ」 - コンピュータの仕組み

ハードウェア ⭐⭐⭐

コンピュータ本体や内部の装置、周辺機器などの物理的な実体を伴う装置や機器、およびその部品、部材のこと。それ自体には形がないソフトウェアと対比される。

コンピュータの場合、処理装置や記憶装置、入出力装置、電子基板、ケーブル類、筐体などの部品や部材、およびその総体として物理的実体としてのコンピュータのことをハードウェアという。「ハード」と略されることも多く、「HW」「H/W」などの略号で示されることもある。

これに対し、コンピュータプログラムやデータなど、それ自体は物理的な実体を伴わない要素のことを「ソフトウェア」(software)と総称する。ソフトウェアの記録や伝送、表示や実行には必ず何らかのハードウェアが必要となる。

コンピュータ以外の分野でも、施設や設備、機器、部品、資材といった物理的実体をハードウェアと呼ぶことがあり、付随する非物理的な要素と対比する文脈で用いられる。例えば、劇場の建物や設備をハードウェア、そこで催される公演をソフトウェアと呼んだり、教育機関の校舎や備品をハードウェア、提供される教育プログラムをソフトウェアと呼んだりすることがある。

英語の “hardware” の原義は金物、金属製品という意味で、機械や生活用品などについて、木製のものなどと対比して金属製であることを表す言葉だった。現代では金属製かどうかはあまり重視されず、工具や冶具、装置、設備、資材、軍用装備品などを広く総称する言葉として用いられることが多い。

コンピュータの五大装置

コンピュータのハードウェアを構成する主要な装置を5つに分類したもの。制御装置、演算装置、記憶装置、入力装置、出力装置の5つ。それぞれの機能(制御、演算、記憶、入力、出力)を指して「五大機能」と呼ぶこともある。

制御・演算

制御装置はプログラムに記述された命令の解釈・実行と他の装置の制御を行い、演算装置は算術演算や論理演算などのデータ処理を行う。この二つは現代のコンピュータ製品では中央処理装置(CPU:Central Processing Unit)として一つの半導体チップ(マイクロプロセッサ/MPU)にまとめられるのが一般的となっている。

記憶

記憶装置はプログラムやデータを保存する装置で、当座の使用のため一時的に保存することができる主記憶装置(メインメモリ)やCPU内部のレジスタおよびキャッシュメモリ、永続的な保管のために用いる補助記憶装置(外部記憶装置/ストレージ)に分類される。

メインメモリには、高速に読み書きできるが容量あたりの単価が高く、装置の電源を切ると内容が消えてしまう半導体メモリのDRAM(Dynamic Random Access Memory)が用いられることが多い。

ストレージには、読み書きは低速だが安価で電源を切っても内容が消えない装置や記憶媒体が用いられ、ハードディスクなどの磁気ディスク装置や、CDやDVDなどの光学ディスク装置、SSDやメモリーカード、USBメモリなどのフラッシュメモリ装置などがよく知られる。

入力・出力

入力装置は外部からデータを送り込むための装置で、人間による操作をコンピュータに伝えるマウスやキーボード、ペンタブレットなどのほか、外部の情報を取り込んでデジタルデータとしてコンピュータに伝送するイメージスキャナやマイク、カメラなどがある。

出力装置はコンピュータ内部のデータを外部に取り出すための装置で、ディスプレイやスピーカー、プリンタなどが該当する。

CPU 【Central Processing Unit】 ⭐⭐⭐

コンピュータの主要な構成要素の一つで、他の装置・回路の制御やデータの演算などを行う装置。演算装置と制御装置を統合したもので、現代では一枚のICチップに集積されたマイクロプロセッサ(MPU:Micro-Processing Unit)を用いる。

CPUはメインメモリ(RAM)に格納された機械語(マシン語)のプログラムを、バスを通じて一命令ずつ順番に読み出し(フェッチ)、その内容を解釈して行うべき動作を決定(デコード)し、内部の回路を駆動して実際に処理を実行する。現代のCPUの多くはマイクロプログラム制御方式を採用しており、機械語の一命令は、より細かな動作(マイクロコード)の組み合わせに分解されてから実行される。

命令セット

CPUは実行可能な命令の体系が決まっており、これを命令セット(instruction set)あるいは命令セットアーキテクチャ(ISA:Instruction Set Architecture)という。記憶装置から読み出されたどのようなビット列がどのような動作に対応するかを定めたもので、機械語のプログラムはこれを用いて記述される。

命令セットは各CPUの機種ごとに固有だが、同じメーカーの同じ系列の製品では同じ命令セットが採用されることが多く、その場合は異なる製品が同じプログラムを実行することができる。同じ命令セットでも製品の世代が下るに連れて新しい命令が追加されることが多く、新しいCPUは古いCPU向けのプログラムも実行できる一方、古いCPUは新しい命令セットのプログラムは実行できないという関係になる(後方互換性)。

有力なメーカーの製品には、別のメーカーが同じ命令セットを採用した互換CPU製品を開発・販売することもある。例えば、米インテル(Intel)社のx86命令セットは広く普及しており対応ソフトウェアが豊富なため、これをそのまま実行できる互換CPUを米AMD社などが製造している。

構造

一般的なCPUの内部は、命令の解釈や他の回路への動作の指示などを行う制御ユニット、論理演算や算術演算を行う演算ユニット(ALU:Arithmetic and Logic Unit)、データの一時的な記憶を行うレジスタ、外部との通信を行うインターフェース回路などで構成される。

また、レジスタとメインメモリのあまりに大きな速度差、容量差を埋めるため、両者の中間の速度と容量を併せ持つキャッシュメモリが内蔵されることが多く、浮動小数点演算に特化した演算ユニット(FPU:Floating-Point Unit)なども標準搭載されることが多い。

以前はマザーボード上のチップセットや単体のICチップとして提供されてきた、メモリコントローラやI/Oコントローラ、グラフィックス処理(GPU)などの機能が統合された製品も数多く登場している。コンピュータに必要な機能のほとんどをCPUの内部に統合した製品はSoC(System-on-a-Chip)と呼ばれる。

性能

内部の演算回路やレジスタが一回の動作でまとめて伝送、保存、処理できるビット数が決まっており、この値が大きいほど一度に多くのデータを処理でき、また、広大なメモリ空間を一元的に管理できる。

一度にnビットのデータを処理できるCPUをnビットCPUというように呼び、CPUが発明された当初は4ビットであったが、8ビット、16ビット、32ビットと拡張されてゆき、現代では64ビットCPUが広く普及している。

また、ほとんどのCPUはコンピュータ内部の特殊な回路から一定周期で発信されるクロック信号に合わせて動作するようにできている。より高い周波数の信号で動作するものほど、単位時間あたりに多くの動作を行うことができ、性能が高い。例えば、2GHz(ギガヘルツ:毎秒10億回)で動作するCPUと1GHzのCPUならば、他の仕様が同じなら約2倍の速度差がある。

並行処理

単純な構造のCPUは一つの命令列から一つずつ順番に命令を取り出し実行していくが、現在のCPU製品の多くは、何らかの形で複数の命令、あるいは複数の命令列を同時並行に処理できる機能を内蔵しており、クロックあたりの性能を引き上げている。

よく用いられるのはパイプライン処理で、一つの命令を複数の段階に分割してそれぞれを別の回路で実行することにより、いくつかの命令の実行を並行して進めることができる。ある命令が実行段階にあるとき、次の命令がデコードを、その次の命令がフェッチを行うといったように、前の命令の完了を待たずに空いた回路に先行して次の命令を投入する方式である。

また、大抵の命令は限られた回路しか利用しないという性質を利用して、空いている回路で実行できる別の命令を同時に投入する方式を同時マルチスレッディング(SMT:Simultaneous Multithreading)という。擬似的に二つのプログラムを並行に実行することができ、最良の場合で数割の性能向上が果たせる。Intel社のCPUに内蔵されるハイパースレッディング(Hyper-Threading)機能が有名である。

一つの半導体チップの内部に、命令の解釈・実行を行うユニット(CPUコア)自体を複数搭載するという手法も広まっており、マルチコアプロセッサ(multi-core processor)という。それぞれが独立して別のプログラムを並列に実行でき、複数のCPUを搭載するのとほとんど同じ効果を得ることができる。ちなみに、一台のコンピュータに複数のCPUを内蔵する方式はマルチプロセッサ(multiprocessor)という。

ビット ⭐⭐⭐

情報量の最小単位で、二つの選択肢から一つを特定する情報の量。コンピュータなどでは0と1のいずれかを取る二進数の一桁として表される。

語源は “binary digit” (二進法の数字)を繋げて省略した表現と言われる。情報をすべてビット列に置き換えて扱うことを「デジタル」(digital)という。1ビットのデータが表す情報量は、投げたコインの表裏のように、二つの状態のいずれであるかを示すことができる。

複数のビットを連ねて一つのデータとすることで、2ビットなら4状態(22)、3ビットなら8状態(23)といったように、より多い選択肢を識別できる。一般に、nビットのデータは2のn乗個までの選択肢からなる情報を表現することができる。

例えば、大文字のラテンアルファベットは「A」から「Z」の26文字であるため、これを識別するのには4ビット(16値)では足りず、5ビット(32値)が必要となる。小文字を加えると52文字であるため、6ビット(64値)が必要となる。

派生単位

データの読み書きや伝送を行う場合、その速さを表す単位として1秒あたりの伝送ビット数であるビット毎秒(bps:bit per second)という派生単位が用いられる。

また、実用上はビットでは値が大きくなりすぎて不便なことも多いため、8ビットをまとめて一つのデータとした「バイト」(byte)という単位を用いる場面も多い。かつて何ビットを1バイトとするか機種により様々に分かれていた(7ビットバイトや9ビットバイトなどが存在した)名残りで、8ビットの集まりを「オクテット」(octet)とも呼ぶ。

倍量単位

大きな量を表す際には、SI単位系に則って接頭辞を付した倍量単位を用いる場合がある。

  • 1000ビットを「キロビット」(kbit:kilobit)
  • 100万ビットを「メガビット」(Mbit:megabit)
  • 10億ビットを「ギガビット」(Gbit:gigabit)
  • 1兆ビットを「テラビット」(Tbit:terabit)
  • 1000兆ビットを「ペタビット」(Pbit:petabit)
  • 100京ビットを「エクサビット」(Ebit:exabit)

という。また、コンピュータでは2の冪乗を区切りとするのが都合が良いことが多いため、独自の接頭辞を付した倍量単位が用いられることもある。

  • 210(1024)ビットを「キビビット」(Kibit:kibibit)
  • 220(約104万)ビットを「メビビット」あるいは「ミービビット」(Mibit:mebibit)
  • 230(約10億7千万)ビットを「ギビビット」(Gibit:gibibit)
  • 240(約1兆1千億)ビットを「テビビット」あるいは「ティービビット」(Tibit:tebibit)
  • 250(約1126兆)ビットを「ペビビット」あるいは「ピービビット」(Pibit:pebibit)
  • 260(約115京)ビットを「エクスビビット」あるいは「イクシビビット」(Eibit:exibibit)

という。この2進専用の接頭辞はIEC(国際電気標準会議)が標準化しており、一般にはあまり馴染みがないが記憶容量の表記などで用いられることがある。

補数 【余数】 ⭐⭐

ある自然数をn進数(n進法)で表現した時に、足し合わせるとちょうど「nのべき乗」か「nのべき乗-1」になる自然数のうち、最小のもの。前者は「足すとちょうど桁が一つ増える数」で「基数の補数」と呼ばれる。後者は「足しても桁が増えない最大の数」で「減基数の補数」と呼ばれる。

例えば、10進数の65という数に足し合わせるとちょうど一つ桁上りする自然数は、足すと100になる35であり、(10進数における)「65に対する10の補数」という。また、足しても桁が増えない最大の数は、足すと99になる34であり、(10進数における)「65に対する9の補数」という。

1の補数 (one's complement)

ある自然数を2進数(2進法)で表現したときに、足し合わせるとすべての桁が1になる最大の数のことを「1の補数」という。足してもギリギリ桁が増えない最も大きな数である。

たとえば、「10010110」に対する1の補数は「1101001」であり、両者を足し合わせると「11111111」(8桁すべてが1)となる。コンピュータで取り扱う際には、各桁の0を1に、1を0にするビット反転によって求めることができ、それに1を加えたものは2の補数となる。

2の補数 (two's complement)

ある自然数を2進数(2進法)で表現した時に、足し合わせると桁が増える最小の数を「2の補数」という。足すと一桁増えて先頭の桁が1、残りの桁が0となる数である。

例えば、「10010110」に対する2の補数は「1101010」であり、両者を足し合わせると「100000000」(桁が一つ増えて既存の8桁がすべて0)となる。コンピュータで取り扱う際には元の数のビット反転によって求められる1の補数に1を足せば2の補数となる。コンピュータ上での負の整数の表現や減算の実装などによく用いられる。

アンダーフロー

コンピュータで実数の計算をした結果、絶対値が小さすぎて正確に表現・計算できなくなってしまうこと。

コンピュータでは実数を浮動小数点数という形式で表すが、一つの値を表すためのデータ長が決まっており、表現できる値の範囲も限られている。計算結果の絶対値が表現可能な最小の値より小さくなってしまうことをアンダーフローという。

例えば、一つの値を32ビットのデータで表す単精度浮動小数点数(float型)では、表現できる値の範囲は十進表記で約1.2×10-38~約3.4×1038であるため、指数部が10-39を下回る場合には正しく値を表現できなくなる。

実際にアンダーフローが生じた際の動作はプログラミング言語や処理系によっても異なるが、仮数部を規定(通常は仮数の先頭が1になるよう正規化される)よりも小さくすることで表現できる範囲では、指数部を下限値にしたまま仮数部の先頭から0を詰めていく処理が行われる場合がある。

さらに値が小さくなっていき、仮数部の桁を使い切ってしまうと、どうやってもそのような値は表現することができないため、値が完全に0になってしまうことが多い。除算を組み合わせた計算の途中でアンダーフローが起きると、意図せずゼロ除算が生じて実行時エラーとなってしまう場合があるため注意が必要である。

負数のオーバーフロー

よく勘違いされるが、負の数が表現可能な下限を超え、正しく値を表現できなくなるのは「オーバーフロー」(桁あふれ)の一種である。絶対値が表現可能な上限を超えることによって発生し、下限より小さくなるアンダーフローとは区別される。

オーバーフロー 【桁あふれ】

あふれ(る)、あふれ出たもの、という意味の英単語。ITの分野では、数値の計算結果がその格納領域に収まる範囲を超えること(算術オーバーフロー/桁あふれ)や、与えられたデータが多すぎて指定の領域に収まりきらないこと(バッファオーバーフローなど)を指す。

算術オーバーフロー

コンピュータ内部で一般的な数値データを格納するメインメモリ上の領域やCPU内部のレジスタは、一つの数値を決まったデータ量で表すようにできており、取り扱える数値の大きさや桁数に上限がある。

数値を計算した結果がこの上限を超え、正しく格納・表現できなくなってしまうことを「オーバーフロー」という。例えば、1バイトの符号なし整数型は0から255までの整数を表現できるため、「150×2」という計算の結果を格納しようとすると上限を超えてしまいオーバーフローとなる。

オーバーフローが発生した際の対処方法として、例外を引き起こして例外処理ルーチンによって何らかの対処を行う場合、実行時エラーを出力してプログラムを停止する場合、表現可能な上限値を設定する場合、上限を超えたことを示す特殊な値を格納する場合、単に無視する場合などがある。

オーバーフローを無視してそのまま処理を続行した場合、あふれた上位の桁が消滅して奇妙な値が計算結果となったり、メモリ領域上の隣接する無関係の区画にあふれた数値データの一部を書き込んで内容を破損させてしまうといった事象が起きる場合もある。

負数や浮動小数点数の場合

オーバーフローが起きるかどうかは桁の大きさの問題であるため、符号付き整数の場合には負数の値が下限を超えた場合(絶対値の桁数が上限を超えた場合)にも発生する。また、浮動小数点の場合には指数部の大きさが上限値よりも大きくなった場合にそれ以上大きな値を表すことができずオーバーフローとなる。

アンダーフロー(underflow)

浮動小数点数において、値の絶対値が小さくなりすぎ(小数点以下の0の桁数が長くなりすぎ)て正しく値を表現できなくなる現象を「アンダーフロー」(underflow)という。指数部が下限値より小さくなることで発生し、0に置き換えられてしまうことで除算や乗算の結果が大きく狂うといったことが起きる。

メモリ領域のオーバーフロー

外部からデータを受け取ってメモリ上の領域に保存するようなプログラムで、指定された領域のサイズを超えてデータを受け取ってしまい、隣接する別の区画にデータをあふれさせてしまうことを「オーバーフロー」あるいは「オーバーラン」(overrun)ということがある。

無関係の領域にデータを書き込んでしまうことにより、処理が停止したり、予期しない動作が発生することがある。バッファ領域について発生するものを「バッファオーバーフロー」、スタック領域について発生するものを「スタックオーバーフロー」という。

ネットワークを通じて外部からコンピュータを乗っ取る攻撃手法の一つとして、不正なデータを送りつけて受信プログラムにわざとオーバーフローを発生させ、攻撃用のプログラムコードを実行するよう仕向ける手法があり、「バッファオーバーフロー攻撃」と呼ばれる。

桁落ち

丸め誤差を含む非常に近い大きさの小数同士で減算を行ったときに、有効数字が減る現象のこと。コンピュータでは浮動小数点数の数値計算において生じる。

長い桁の小数や無限小数を数値計算する場合には、ある桁以降の値を四捨五入するなどして有限桁で表す(丸める)ことがあるが、丸めた後の値が非常に近い値同士で減算を行うと差が非常に小さい値となり、計算前の値より有効な桁が大きく減少してしまうことがある。

例えば、√100001-√100000 という計算を有効数字8桁で行うと 0.31622935×103-0.31622777×103 = 0.158×10-2 となってしまい、得られた結果の有効な桁は3桁に減少してしまう。

コンピュータの浮動小数点形式では便宜上、計算の結果失われた下位の桁を0で埋めて 0.15800000×10-2 のように扱うため、これに大きな数を掛けるなど続けて計算していくことで、途中で生じた桁の欠落が最終的に大きな誤差を生じさせてしまうことがある。

丸め誤差 ⭐⭐

長い桁や無限桁の小数を扱う際に、これを有限桁で表すためにある桁以降の値を捨ててしまうことにより生じる誤差のこと。コンピュータでは浮動小数点型の数値計算などで現れる。

循環小数や無理数、長い桁の小数などを計算する場合に、浮動小数点型や整数型の数値として表すため、これらのデータ型で表現可能な桁数より後ろの値を切り上げや切り捨て、四捨五入などによって捨て去ることがある。このような下位桁を削る処理を「丸める」(丸め処理)と呼び、このとき捨てた値によって本来の値との間に生じるズレを丸め誤差という。

コンピュータは数値を2進法を用いて限られた桁数で表現するため、丸め誤差は整数と実数の間だけでなく、仮数部の桁数の異なる浮動小数点型(float型とdouble型など)の間や、十進数では有限桁の小数値を2進数で表現しようとすると循環小数になってしまう場合(十進数の0.1を2進数で表すと0.00011001100110011…となる)などでも生じることがある。

丸め誤差は取り扱える桁数の制約から仕方なく生じるため、完全に回避することは困難だが、数値の表現形式や計算手順を工夫して影響を小さく抑えることは可能な場合もある。

打ち切り誤差

コンピュータで数値計算を行う際に生じる計算誤差の種類の一つで、繰り返し計算を行なって値を求めるような場合に途中で計算を打ち切ることによって計算結果と真の値との間に生じる差のこと。

無限小数や無限級数、数値積分、極限値などの計算をコンピュータで行う場合、無限回の計算を行うわけにはいかないため、ある項までで計算を切り上げ、以降の項の値は計算結果は反映されなくなる。これによって正しい結果との間に生じる差を打ち切り誤差という。

一回の値の算出における打ち切り誤差が小さくても、コンピュータシミュレーションなどで大規模に計算を繰り返す場合は誤差が蓄積されて最終的な結果の精度に影響する場合もある。原理上完全に避けることはできないが、計算に用いる級数をより収束の速いものに変形したり、より正確な近似法を用いるなどの手法により切り捨てられる値を小さくして打ち切り誤差を緩和できる場合がある。

情報落ち 【情報落ち誤差】

コンピュータで絶対値の大きさが極端に異なる数字を足したり引いたりしたときに、小さい値の情報が無視されてしまう現象。また、そのような現象によって起きる計算の誤差。

コンピュータでは扱う数値の桁数に制限があるため、極端に大きな値と極端に小さな値を加減算すると計算結果の数値は桁数が非常に長くなってしまい、小さい値に由来する部分がすべて切り捨てられてしまう。

単純に2つの数値の和を求めるような場合であれば大した影響は無いが、大きさの極端に異なる値がたくさんあり、加算を繰り返してすべての合計を求めるような状況では、落差の大きい組み合わせの加算で常に小さい値が無視されてしまい、最終的な結果が大きく狂ってしまうことがある。

そのような場合には、値を小さい順に並べて小さい方から順に足し合わせるといった処理を行うことで、情報落ちの影響を小さくすることができる。

ソフトウェア ⭐⭐⭐

コンピュータを動作させる命令の集まりであるコンピュータプログラムを組み合わせ、何らかの機能や目的を果たすようまとめたもの。プログラムが動作するのに必要なデータも含まれる。

コンピュータを構成する電子回路や装置などの物理的実体を「ハードウェア」(hardware)と呼ぶのに対し、それ自体は形を持たないプログラムや付随するデータなどをソフトウェアという。物理的には記憶装置(ストレージやメモリなど)の記録媒体における電気的あるいは磁気的、光学的な信号として存在する。

ソフトウェアはその役割により、ハードウェアの制御や他のソフトウェアへの基盤的な機能の提供、利用者への基本的な操作手段の提供などを行なう「オペレーティングシステム」(OS:Operating System/基本ソフト)と、特定の個別的な機能や目的のために作られた「アプリケーションソフト」(application software/応用ソフト)に大別される。

これらに加え、ハードウェアに組み込まれ基本的な制御を行う「ファームウェア」(firmware)や、OSとアプリケーションソフトの中間で特定分野の基本機能や共通機能を提供する「ミドルウェア」(middleware)などの分類が用いられることもある。

日本語の外来語としては慣用的に「ソフト」と略称することが多いが、英語の “soft” は「柔らかい」という形容詞の意味しかなく、組織名や製品名のネーミングなどで接頭辞や接尾辞のように用いられる場合などを除き、省略せず “software” と綴る。「SW」「S/W」などの略号で示されることもある。

プログラム以外の用例

コンピュータプログラムは含まないが、何らかの機器を介して内容の再生や鑑賞を行う記録物のことをソフトウェアと呼ぶ場合がある。例えば、音楽CDのような音声の記録物を「音楽ソフト」、DVD-Videoのような動画の記録物を「映像ソフト」のように呼ぶ。

IT関連以外の分野でも、施設や設備、機器、道具などの物理的実体と対比して、組織や業務、事業、催し、知識、技能、情報、記録といった人間の活動に属する無形の事柄をソフトウェアと呼ぶ場合がある。

記録物やイベントなどの用法については「コンテンツ」(content)もほぼ同義語であり、20世紀にはソフトと呼ぶことが多かった分野や業界でも現在ではコンテンツと呼ぶ方が一般的な場合が多い。

OS 【Operating System】 ⭐⭐⭐

ソフトウェアの種類の一つで、機器の基本的な管理や制御のための機能や、多くのソフトウェアが共通して利用する基本的な機能などを実装した、システム全体を管理するソフトウェア。

CPU(MPU/マイクロプロセッサ)や主記憶装置(メインメモリ)、外部記憶装置(ストレージ)、入出力装置などコンピュータのハードウェア資源の管理、外部の別の装置やネットワークとのデータ通信の制御などが主な役割で、コンピュータに電源が投入されると最初に起動し、電源が落とされるまで動作し続ける。

利用者に対するコンピュータの基本的な操作手段も提供し、入力装置による操作の受け付けや出力装置への情報の提示、オペレーティングシステム自体が備える様々な機能の実行、記憶装置内に格納されたプログラムの起動や終了、ストレージに格納されたファイルやディレクトリの操作などを行うことができる。

アプリケーションソフトとの関係

オペレーティングシステムの機能を利用し、OSの上で動作するソフトウェアを「アプリケーションソフト」(application software/応用ソフト)という。アプリケーションの開発者は、呼び出し規約(API:Application Programming Interface)に基づいてオペレーティングシステムの提供する機能を利用することができ、開発の手間を省き操作性を統一することができる。

また、ハードウェアの仕様の細かな違いはオペレーティングシステムが吸収してくれるため、あるオペレーティングシステム向けに開発されたアプリケーションは、基本的にはそのオペレーティングシステムが動作する他のコンピュータでも使用できる。ただし、CPUの種類が異なるなど根本的な仕様が異なる場合は、同じOSでも機種ごとに調整されたプログラムが必要となる。

OSの種類

OSは動作する機器の種類や目的などに応じていくつかの異なるタイプに分かれる。最も一般的なのはパソコンやサーバなどの汎用コンピュータ向けの汎用OSで、サーバコンピュータの運用に特化した「サーバOS」、利用者が操作する端末での利用を想定した「クライアントOS」などに分かれる。

汎用OS以外にも、デジタル家電や産業機械などに制御用として組み込まれた特定目的の専用コンピュータの制御に特化した「組み込みOS」がある。中でも、乗り物の駆動装置の制御など、リアルタイム性の高い制御プログラムの実行に特化した設計のOSは「リアルタイムOS」と呼ばれる。

パソコン向けのOSとして広く利用されているものには米マイクロソフト(Microsoft)社の「Windows」シリーズや米アップル(Apple)社の「macOS」(旧Mac OS X)シリーズなどがある。サーバ向けのOSとしては「Linux」などのいわゆるUNIX系OSや、サーバ向けWindowsである「Windows Server」シリーズなどがよく知られる。スマートフォンやタブレット端末などのモバイル機器では米グーグル(Google)社の「Android」とApple社の「iOS」(iPad OS/watchOS)が市場を二分する。

ファイル ⭐⭐

コンピュータにおけるデータの管理単位の一つで、ストレージ装置(外部記憶装置)などにデータを記録する際に利用者やオペレーティングシステム(OS)から見て最小の記録単位となるデータのまとまり。

利用者がコンピュータを用いて記憶媒体にデータを保存、読み込み、移動、削除などする際に一つのまとまりとして取り扱うデータの集合を表し、OSの一部であるファイルシステム(file system)によって管理される。

ハードディスクやSSD、USBメモリ、光学ディスク(CD/DVD/Blu-ray Disc)などの記憶装置・記憶媒体を利用する際に用いられるほか、コンピュータと周辺機器の間やコンピュータ間の通信においてもデータの送受信単位として利用される。

ディレクトリとパス

ファイルシステムは記憶媒体内でファイルの作成や削除、上書き、移動、複製などを管理する仕組みで、複数のファイルをまとめて一つの集まりとして扱う「ディレクトリ」(directory)や「フォルダ」(folder)などの入れ物(領域)を作成することもできる。

ディレクトリやフォルダの中に別のディレクトリやフォルダを作成し、入れ子状にすることもでき、記憶媒体全体を階層構造に整理して管理する。装置内でのファイルの位置は、「C:¥Windows¥System32¥cmd.exe」のように最上位から順にディレクトリ名を繋げた「パス」(path)という記法で表される。

ファイル名

ファイルにはそれぞれ固有のファイル名が付けられ、これを用いて識別・指定される。多くのOSではファイル名の末尾にファイルの種類や形式を表す「拡張子」(extension)と呼ばれる数文字の英数字の符号が付与される。

コンピュータの操作画面ではファイルは記憶媒体内での位置(パス)やファイル名で表示され、キーボードなどからパスやファイル名を指定して操作する。グラフィック表示を用いるGUI(Graphical User Interface)を備えたOSでは、ファイルは種類によって異なるアイコン(絵文字)とファイル名によって表示され、マウス操作やタッチ操作でアイコンを指し示して操作を行う。

ファイル属性

ファイルはファイルシステムに記録される際に様々な属性や付加情報(メタデータ)と共に記録される。作成日時や最終更新日時、最終アクセス日時、作成者(所有者)、各利用者やグループのアクセス権限などが記録、設定される。

また、多くのOSではファイルに「読み取り専用」属性を付与でき、解除されるまで削除や上書きができなくなる。「隠しファイル」に設定されたファイルは通常の動作モードではファイル一覧画面などに表示されなくなる(ファイル名を直に指定すれば操作はできる)。

ファイル形式

ファイルに記録されるデータの形式や書式(ファイルフォーマット)は作成したソフトウェアによって様々だが、大きく分類すると「バイナリファイル」(binary file)と「テキストファイル」(text file)に分かれる。

バイナリファイルは特に制約なくあらゆるビットパターンを記録できる自由な形式で、その形式に対応したソフトウェアでなければ何が記録されているか知ることができない。テキストファイルはデータを文字情報として記録したファイルで、文字コード規格で規定されたコードに従ってデータを文字列に置き換えて記録する。対応ソフトがなくてもどのような文字が記録されているかは見ることができる。

ディレクトリ ⭐⭐

電話帳(phone~)、住所録、名鑑、要覧、指導書、規則集などの意味を持つ英単語。IT関連では、多数の対象をその所在などの情報と共に一覧できるよう整理したものを意味することが多い。

ファイルシステムのディレクトリ

ストレージ(外部記憶装置)のファイルシステムなどで、複数のファイルを格納し、ファイルを分類・整理することができる保管場所のことをディレクトリということがある。OSによっては同様の仕組みを「フォルダ」(folder)ということもある。

ストレージ内部を論理的に区切って名前をつけて区別する仕組みで、ディレクトリ名によって識別される。ディレクトリ内には任意のファイルを置くことができるほか、別のディレクトリを作成して入れ子状にすることができる。ディレクトリ内に作られたディレクトリは「サブディレクトリ」(subdirectory)あるいは「子ディレクトリ」などと呼ばれる。

ディレクトリの入れ子関係は、システムやストレージ領域の全体を表すディレクトリを頂点とする階層構造(あるいは木構造)として表すことができ、これを根本から先端に向かって枝分かれする樹木の形になぞらえて「ディレクトリツリー」と呼ぶことがある。

UNIX系OSでは、ストレージや他のシステム資源全体を包含する「ルートディレクトリ」(root directory)を頂点として、Windowsでは各ドライブごとにその内部を包含する「ドライブルート」(drive root)を頂点として、それぞれディレクトリの位置を指し示す。

ストレージ内でのディレクトリやファイルの所在は、「/foo/var/hoge.txt」のようにルートからの経路を順に並べた「パス」(path)によって表す。UNIX系OSでは区切り文字として「/」(スラッシュ)を用いるが、Windowsでは「C:\foo\var\hoge.txt」のように「\」(バックスラッシュ)を用いる。日本語版では同じ文字コードを共有している円マーク(¥)になる。

ディレクトリサービス (directory service)

情報システムの一種で、ネットワーク上に存在する機器やサービスについての情報や、利用者の識別や権限に関する情報を一元管理する仕組みのことを「ディレクトリサービス」(directory service)あるいは単にディレクトリという。

原義の電話帳に近い役割をコンピュータネットワーク上で果たすシステムで、登録利用者のアカウント情報(ユーザー名やパスワード、各種の権限など)、ネットワーク上のサーバコンピュータが提供する機能、共有データ(共有ファイル、共有ディレクトリなど)、プリンタなどの周辺機器についての情報を集めて単一のデータベースに登録して管理する。

利用者はディレクトリにアクセスすることでネットワーク上の資源の所在を知ることができ、個々の資源に対して権限の確認をしなくても、一度のログイン操作で許可された資源を自由に利用できるようになる。米マイクロソフト(Microsoft)社がWindows Serverなどで提供しているActive Directory(アクティブディレクトリ)が特に有名である。

相対パス 【相対パス指定】

ファイルなどの所在を書き表すパス(path)の表記法の一つで、現在位置からの相対的な位置関係を記述する方式。起点となる位置から目的の位置までの道筋にある要素を順に並べて記述する。

システムが現在操作対象としているカレントディレクトリ(カレントフォルダ)を起点に、指し示したいディレクトリやファイルの相対位置を記述する方法で、途中にあるディレクトリを区切り記号で繋いで並べる。区切り記号はWindowsの場合、日本では「¥」(円記号、実際には半角文字)、海外では「\」(バックスラッシュ、同)を用い、UNIX系OSやWebサーバなどでは「/」(スラッシュ)を用いる。

カレントディレクトリは省略可能だが明示したい場合は「.」で表し、一階層上位のディレクトリは「..」で表す。「..」を繰り返し記述することでディレクトリ階層の親子関係をたどって上へ移動することができる。例えば、「../../foo/bar.txt」という記述は、現在のディレクトリの二階層上のディレクトリの中にある「foo」ディレクトリの中にある「bar.txt」というファイルを指し示している。

一方、現在位置とは無関係に、ドライブやシステムの最上位ディレクトリ(ルートディレクトリ、ルートフォルダ)からの絶対的な位置関係を記述するパスの指定方法を「絶対パス」(absolute path)という。

絶対パス

ファイルなどの所在を書き表すパス(path)の表記法の一つで、階層構造の頂点(最上位階層)からの位置関係を記述する方式。

現在位置とは無関係に、ドライブやシステムの最上位ディレクトリ(ルートディレクトリ、ルートフォルダ)から目的のディレクトリ(フォルダ)やファイルまでの道筋を省略なくすべて記述する方法で、途中にあるディレクトリを区切り記号で繋いで並べる。

UNIX系OSでは頂点はルートディレクトリ(「/」で表される)で、「/」(スラッシュ)を区切り記号として「/usr/bin/sh」のように途中にあるディレクトリを順に示す。WebサイトやFTPサーバなどネット上の資源を記述する際も(サーバがWindows等でも)この形式が用いられる。

MS-DOSやWindowsではドライブ名(「C:¥」など)を頂点に、日本では「¥」(円記号、実際には半角文字)、海外では「\」(バックスラッシュ、同)を区切り記号として記述する。Windowsネットワークのファイル共有ではコンピュータ名を頂点に「¥¥コンピュータ名¥共有名¥パス」といった形式で記述するUNC(Universal Naming Convention)を用いる。

一方、システムが現在操作対象としているカレントディレクトリ(カレントフォルダ)を起点に、相対的な位置関係を記述する方式は「相対パス」(relative path)という。

絶対パスとフルパス

絶対パスとフルパスは通常同じ意味として用いられ、特にコンピュータ上でファイルシステムを扱う際には技術的な区別は存在しない。

ただし、Webサーバ等の運用においては、URLのパス部分の絶対指定のことを「絶対パス」(現在位置起点を「相対パス」)とし、サーバ内部でのファイルシステム上でのパスの絶対指定を「フルパス」と呼び分ける場合がある。

例えば、「https://www.example.com/mydir/myfile.html」というURLで参照されるファイルを、サーバ内の別のWebページなどから「/mydir/myfile.html」と指定したものが絶対パスにあたる。一方、このファイルがサーバ内部では実際には「/var/www/html/mydir/myfile.html」という位置に置かれている場合に、これをフルパスと呼ぶ。

カレントディレクトリ 【カレントフォルダ】

実行中のソフトウェアなどがストレージ(外部記憶装置)のファイルシステム中で現在位置として指し示しているディレクトリのこと。相対パスでファイルやディレクトリなどを指定する際の基準の位置となる。

シェルやコマンドラインインタプリタなど主にOSへの操作を受け付けるソフトウェアが内部的に持つ状態の一つで、ストレージのファイルシステムを(UNIX系OSではストレージ以外のシステム上の資源も含む)階層構造で表したディレクトリツリーの中で、「今どこにいるのか」を表している。

利用者がツリーの根本からの絶対位置である絶対パスを指定せずにファイルやディレクトリなどを指定すると、カレントフォルダからの相対的な位置関係を表す相対パスであると解釈される。この仕組みにより、深い階層にあるファイルなどを指定する際にいちいち長い絶対パスを毎回入力しなくても、当該ディレクトリに「移動」すればファイル名を指定するだけでよくなる。

パスの表記法には特殊な表記として、カレントフォルダを表す「.」が用意されており(UNIX/Windows共通)、これを用いて相対パスであることを明示的に指定することができるようになっている。例えば「./sub/file.txt」という表記は、カレントフォルダ中のsubディレクトリ中のfile.txtというファイルを指す相対パスとなる。

シェルなどにはカレントフォルダを移動したり現在位置を表示したりするコマンドが用意されており、MS-DOSやWindows、ほとんどのUNIX系OSのシェルでは「cd」あるいは「chdir」コマンドにより別のディレクトリに移動できる。現在位置の表示はUNIX系OSでは「pwd」、Windowsでは引数なしの「cd」コマンドが用いられる。

アプリケーションソフト 【アプリ】 ⭐⭐⭐

ある特定の機能や目的のために開発・使用されるソフトウェア。利用者が目的に応じて導入し、オペレーティングシステム(OS)の上で動作させる。

現代のコンピュータではOSが機器(ハードウェア)を管理・制御しており、アプリケーションソフトはOSの機能を利用して動作する。「アプリケーション」(application)あるいは「アプリ」(app)と略されたり「応用ソフト」と訳されることもある。

用途や目的に応じて多種多様なアプリケーションソフトがあり、日常的に利用される代表的なものだけでも、ワープロソフトや表計算ソフト、画像閲覧・編集ソフト、動画・音楽再生ソフト(メディアプレーヤー)、ゲームソフト、Webブラウザ、電子メールソフト、カレンダー・スケジュール管理ソフト、電卓ソフト、カメラ撮影ソフト、地図閲覧ソフトなどがある。

企業などの業務で使われる、プレゼンテーションソフトやデータベースソフト、財務会計ソフト、人事管理ソフト、在庫管理ソフト、プロジェクト管理ソフト、文書管理ソフト、生産管理ソフトなどもアプリケーションソフトの一種である。

提供方法の違い

アプリケーションソフトは無償配布あるいは販売されているパッケージを利用者が入手・購入してオペレーティングシステム(OS)に組み込む作業を行うことで使用可能となる。この作業を「インストール」(install/installation)という。OS製品の中にはいくつかのアプリケーションソフトがあらかじめ組み込まれている(プリインストール)ものもある。

大企業や官公庁などが自社の業務に用いるアプリケーションソフトの中には、市販のパッケージソフトではなく自社で開発、あるいは外部の専門の事業者に委託して開発させた「カスタムアプリケーション」もある。市販のものに比べ開発コストはかかるが、自社業務に特化した仕様となっている。

業務などで用いる大規模なアプリケーションソフトの場合、コンピュータに導入された単体のソフトウェアで機能が完結しているとは限らず、機能やデータを提供する「サーバ」と利用者が操作する「クライアント」が連携して動作する「クライアントサーバ型」の構造になっているものもある。

モバイルアプリ/Webアプリ

近年ではスマートフォンやタブレット端末などの携帯機器にタッチ操作できるアプリケーションソフトを導入してパソコンなどの代わりに利用する場面が増えている。これらは「モバイルアプリケーション」と呼ばれ、慣用的に「アプリ」(app)と略されることが多い。

スマートフォンなどには機器や専用OSの開発元が「アプリストア」と呼ばれるネットサービスにアクセスするためのアプリをあらかじめ組み込んで販売しており、利用者はストアからほしいアプリを選んで端末に組み込んで使用する。iPhoneなどのiOS端末では米アップル(Apple)社の「App Store」のみが利用でき、Android端末では米グーグル(Google)社の「Google Playストア」が標準的なストアである。

また、SNSやECサイトなどのネットサービスでは、Webサイトに動的な要素を組み込んでアプリケーションソフトのように振る舞わせ、Webブラウザから操作する方式も広く普及している。このような実装形態を「Webアプリケーション」と呼ぶ。

他のソフトウェアとの違い

コンピュータのハードウェアに対する基本的な制御機能や、様々なソフトウェアが共通して利用する機能をまとめたソフトウェアは「オペレーティングシステム」(OS:Operating System、基本ソフト)と呼ばれる。また、OSとしての制御機能は持たないが、多くのアプリケーションソフトが必要とする特定分野のまとまった機能を提供するソフトウェアは「ミドルウェア」(middleware)と呼ばれる。

アプリケーションソフトの中でも、ファイルやフォルダの圧縮・解凍や、コンピュータウイルスの探知・駆除、記憶装置(メモリ・ストレージ)管理など、システムや他のソフトウェアの機能を補ったり、性能や操作性、安全性を向上させたりするものは「ユーティリティソフト」(utility software)と呼び、アプリケーションソフトとは別の分類とする場合もある。

アプリケーションソフトという用語や分類は、パソコンのように利用者が目的に応じて後からソフトウェアを追加して使用できる汎用コンピュータについて主に用いられ、組み込みソフトウェア(家電の制御ソフトなど)や特定用途の専用コンピュータなどでは、OSなどのシステム系のソフトウェアとアプリケーションソフトの区別や境目が明確でない場合もある。

プログラム ⭐⭐⭐

予定(表)、計画(表)、課程、式次第などの意味を持つ英単語。ITの分野では、コンピュータに行わせる処理を記述したコンピュータプログラムのことを略して単にプログラムということが多い。

コンピュータプログラム (computer program)

コンピュータが行うべき処理を順序立てて記述したもの。広義の「ソフトウェア」の一部であるが、実用上はプログラムとソフトウェアはほとんど同義のように扱われることが多い。

現代のコンピュータではプログラムは一定の形式に従ってデータとして表現され、記憶装置(メインメモリ)に格納される。実行時にはCPU(中央処理装置)がプログラムに記述された命令を順番に読み出して解釈・実行していく。

プログラムを作成する作業や工程を「プログラミング」(programming)、これを行う人や職種のことを「プログラマ」(programmer)という。人間がプログラムを記述する際には、人間が理解しやすい人工言語である「プログラミング言語」(programming language)を使うことが多い。プログラミング言語で記述されたプログラムを「ソースコード」(source code)という。

ソースコードはコンピュータが解釈・実行することができないため、コンパイラなどの変換ソフトによってコンピュータが解釈・実行できる機械語(マシン語)などで構成された「オブジェクトコード」(object code)に変換されてから実行される。スクリプト言語のように、この変換処理を開発時には行わず、実行時にインタプリタなどのソフトウェアによって動的に行う場合もある。

ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる