高校「情報Ⅰ」単語帳 - 全用語 - コンピュータの仕組み

コンピュータ 【電子計算機】

与えられた手順に従って複雑な計算を自動的に行う機械。特に、電子回路などを用いてデジタルデータの入出力、演算、変換などを連続的に行うことができ、詳細な処理手順を人間などが記述して与えることで、様々な用途に用いることができる電気機械のこと。

歴史的には手回しで歯車などを駆動する機械式の自動計算機なども存在したが、現代でコンピュータと呼ばれる機械は一般に、マイクロプロセッサ(CPU/MPU)や半導体メモリなどの半導体集積回路(ICチップ)を中心に構成され、記憶装置に記録されたオペレーティングシステム(OS)やアプリケーションソフトといったコンピュータプログラム(ソフトウェア)を実行するものを指す。

コンピュータの分類

一般的にコンピュータそのものとみなされる機器には、個人向けの汎用コンピュータである「パーソナルコンピュータ」(PC:Personal Computer/パソコン)や、企業や官公庁などの情報システムで用いられる大規模・高性能コンピュータである「サーバ」(server)や「メインフレーム」(mainframe computer)、科学技術計算などに用いる超高性能コンピュータである「スーパーコンピュータ」(supercomputer)などがある。

また、現代の電気機器の多くは内部の装置の制御などのために機器内部に小型のコンピュータシステムを内蔵しており「組み込みシステム」(embedded system)と呼ばれる。

このような組み込み型のコンピュータを備えた機器には携帯電話・スマートフォンやタブレット端末、ビデオゲーム機、通信装置やネットワーク機器、テレビ受像機、ビデオレコーダー、デジタルカメラ、電子制御の家電製品や産業機械、輸送機械などがある。

コンピュータの構成

一般的なコンピュータは、プログラムの実行状況や各装置の状態を制御する「制御装置」、データの計算や加工を行う「演算装置」、データを記録する「記憶装置」、人間や他の機器など外界との情報のやり取りを行う「入力装置」および「出力装置」などで構成される。この五つの要素を「コンピュータの五大装置」(五大機能)と呼ぶこともある。

このうち、制御装置と演算装置は現代では一つの装置や半導体チップとして統合されていることが多く、これを「処理装置」(PU:Processing Unit)という。コンピュータシステム全体の制御を司る中心的な処理装置のことを「中央処理装置」(CPU:Central Processsing Unit)という。

記憶装置は当座の動作に必要なプログラムやデータの一時的な記憶に用いる「主記憶装置」(メインメモリ)と、永続的な記録に用いる「外部記憶装置」(ストレージ)あるいは「補助記憶装置」に分かれていることが多い。

計算手順はCPUに対する命令の列を記憶装置にデータとして記録し、順に読み出して実行していく方式(プログラム内蔵方式)になっており、これを「コンピュータプログラム」あるいは単にプログラムという。

ハードウェア ⭐⭐⭐

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

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

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

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

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

ノイマン型コンピュータ 【von Neumann architecture】

プログラムをデータとして記憶装置に格納し、これを順番に読み込んで実行するコンピュータ。現在のコンピュータのほとんどがこの方式を採用している。「コンピュータの父」とも呼ばれるアメリカの数学者、ジョン・フォン・ノイマン(John von Neumann)の名に由来する。

第二次大戦前後に生まれた最初期の電子式コンピュータは真空管の配列や配線が計算内容をそのまま反映したものになっており、別の計算を行うためには配線をすべてやり直さなければならず、汎用性が著しく乏しかった。

ノイマンら新型コンピュータ「EDVAC」開発チームは、計算手順や入力値をハードウェアから独立させてデータとして外部から与え、汎用の回路群でこれを処理する方式を構想した。ソフトウェア(コンピュータプログラム)という概念もこのとき誕生した。

この方式が「ノイマン型」と呼ばれるのは、最初に発表された “First Draft of a Report on the EDVAC” という文書の著者がノイマンだったからだが、ノイマン自身はEDVAC開発プロジェクトには後から参加しており、プログラム内蔵方式というアイデアの確立には当初から関わっていたジョン・エッカート(John Presper Eckert)とジョン・モークリー(John William Mauchly)の功績の方が大きかったとされる。

フォンノイマンボトルネック (von Neumann bottleneck)

ノイマン型コンピュータでは、演算装置および制御装置(現代ではCPUとして単一の装置になっている)と主記憶装置(メインメモリ)の間の伝送路(バス)を通じて命令やデータを運んでおり、その速度が性能の律速となる隘路(ボトルネック)となりやすい。これを「フォンノイマンボトルネック」あるいは「ノイマンボトルネック」という。

ノイマン型コンピュータでは主記憶に命令が置かれているため、次の命令を実行するためには必ずバスを通じて主記憶から命令を取り出さなければならない。CPU内部の処理性能がいくら向上しても、主記憶からの読み込み速度が追いつかなければ読み込み待ち時間が長くなるだけで性能の向上には繋がらなくなってしまう。

現代のコンピュータではこの問題を緩和するため、CPU内部に高速に読み書きできる少容量のキャッシュメモリを内蔵し、これをさらに何段階も階層的に設ける(1次キャッシュ/2次キャッシュ/3次キャッシュ)ことで、同じ命令やデータを何度も繰り返し主記憶から取り出さなくてもよいように工夫されている。

コンピュータの五大装置

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

制御・演算

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

記憶

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

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

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

入力・出力

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

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

制御装置 ⭐⭐⭐

機械やシステムの構成要素のうち、主に他の要素の動作の制御などの機能を担うもの。コンピュータの場合はCPUの機能の一部として内蔵されている。

コンピュータの制御装置

コンピュータを構成する装置のうち、他の装置の制御を行うものを制御装置と呼ぶ。演算装置、記憶装置、入力装置、出力装置と合わせてコンピュータの五大装置という。

現代のコンピュータではほとんどの場合、演算装置と共に中央処理装置(CPU:Central Processing Unit)という装置の一部として実装される。また、CPUはマイクロプロセッサ(MPU:Micro-Processing Unit)と呼ばれる単一の半導体集積回路(ICチップ)の形で提供されている。

制御装置は演算装置やレジスタ(CPU内部の記憶回路)を操作して命令の実行制御を行ったり、メインメモリ(RAM)などの記憶装置とプロセッサ間のデータや命令の読み出しや書き込みの制御、外部の装置との信号の入出力制御などを行う。

初期のコンピュータの設計では演算装置とは独立・分離していたが、現代のプロセッサにおいては両者が統合されて一体的に設計されるため、両者の区別にはほとんど意味がなくなり、「実行ユニット」「プロセッサコア」のような用語で呼ばれることも多い。

ALU 【Arithmetic and Logic Unit】 ⭐⭐⭐

コンピュータを構成する基本的な装置の一つで、算術演算(四則演算)や論理演算などの計算を行う装置。現代のコンピュータでは制御装置とともにマイクロプロセッサ(CPU/MPU)などの論理回路の一部として実装されている。

加算器や論理演算器などの演算回路を持ち、整数の加減算、論理否定(NOT)、論理和(OR)、論理積(AND)、排他的論理和(XOR)などの基本的な演算を行うことができる。

これらの回路を組み合わせて、乗算や除算、余剰、実数(浮動小数点数)演算、否定論理和(NOR)、否定論理積(NAND)などの演算ができるようになっているものもある。

記憶装置

コンピュータの構成要素の一つで、データやプログラムの保存・記憶を行うための装置。レジスタやキャッシュメモリなどCPU内部の半導体メモリ、メインメモリ(主記憶装置/RAM)、ストレージ(外部記憶装置/補助記憶装置)などに分類される。

用途や実装方式、性能、コストなどにより様々な種類の装置があり、これらを組み合わせてコンピュータシステムを構成する。一般に、より高速に読み書き可能な装置ほどコストが高かったり永続的な記憶ができない(電源を落とすと内容が失われる)という特性があるため、小容量の高速な装置、中容量の中速の装置、大容量の低速で永続記憶可能な装置を組み合わせ、状況や使用頻度などに応じて使い分ける。このような階層型の構造を「記憶階層」(memory hierarchy)という。

プロセッサ内部の記憶装置

最も高速だが大きな容量を取ることができないのはCPU(MPU/マイクロプロセッサ)の半導体チップ上に設けられた記憶素子の集合で、中でも、論理回路が処理や演算に直接用いる「レジスタ」(register)は一般的なプロセッサで数十バイトしかないが最も高速に動作する。

また、直近に使用したデータや使用頻度の高いデータをチップ内に保持しておいて、すぐ参照できるようにするための記憶素子を「キャッシュメモリ」(cache memory)という。プロセッサによっては搭載しないこともあるが、数KB(キロバイト)から数百KB程度であることが多い。キャッシュメモリ内部にも記憶階層がある場合があり、より高速だが容量の少ない順に1次キャッシュ、2次キャッシュ、3次キャッシュ、と2~3段階で構成される。

メインメモリ

メインメモリは主記憶装置とも呼ばれ、現代のコンピュータの大半では半導体メモリ素子の一種であるRAM(Random Access Memory)が用いられる。現代のパソコンなどでは数GB(ギガバイト)程度の容量であることが多い。

CPUはストレージに直接アクセスできないため、実行中のソフトウェアが当座必要なデータやプログラムはメインメモリに置いておく必要がある。内容は起動時や必要になった時点でストレージから読み込まれ、CPUが処理した結果なども一旦メインメモリに置かれる。電源を落とすと内容が失われるため、永続的に保管しておきたいものはストレージに書き込む必要がある。

RAMのメモリチップそのものを主基板(マザーボード/メインボード)などに直に実装する場合もあるが、パソコンなど汎用的なコンピュータの多くは、メモリチップをいくつか実装した小さな基板であるメモリモジュールを主基板上の専用の差込口(メモリスロット)に差し込んで装着する。

ストレージ

ストレージはコンピュータの電源が切れても内容が失われない装置で、永続的に必要なデータやプログラムの保存に用いられる。RAMなどに比べ動作が低速な装置が大半で、また、CPUから直に読み書きできないため、コントローラICなどを通じて内容をメインメモリとの間でやり取りする必要がある。駆動装置(ドライブ)と記憶媒体(メディア)が一体化している装置と、取り外して交換できる装置があり、後者はメディアを追加することで全体の容量を増やすことができる。

パソコンなどで主要な記憶装置としてよく用いられるのは磁気ディスクを装置内に固定したハードディスク(HDD:Hard Disk Drive)で、現代では数百GBから数TB(テラバイト)の製品がよく用いられる。ハードディスクに代わって台頭しているのが不揮発の半導体メモリの一種であるフラッシュメモリを用いたSSD(Solid State Drive)で、フラッシュメモリを用いたストレージには他にUSBメモリやメモリーカードなどもある。

データやプログラムの運搬や配布などによく用いられるのがレーザーで内容の読み書きを行う光学ディスクで、登場順にCD、DVD、Blu-ray Disc(ブルーレイディスク/BD)などがあり、この順に容量が大きく読み書きも高速である。CDは音楽・音声の記録や販売に、DVDやBDは映像ソフトの記録や販売に特によく用いられる。

入力装置 【入力機器】 ⭐⭐⭐

コンピュータなどの機器本体にデータや情報、指示などを与えるための装置。一般的には人間が操作して入力を行う装置のことを指し、手指の動きや打鍵を電気信号に変換して伝達するキーボードやマウス、タッチパネルなどが該当する。

コンピュータの登場以前から、ボタンやレバー、ツマミ、ペダルなどの入力装置が機械の操作に用いられてきたが、情報機器ではこれらに加えてより複雑で汎用的な情報入力を実現するため、多数の操作要素や高度な機構を持つ装置が発明された。

例えば、文字が刻印された小さな鍵盤が敷き詰められたキーボード、手で位置や移動を入力するためのマウスなどのポインティングデバイス、画面表示と位置入力を兼用するタッチパネルなどが発達した。特殊なゴーグルなどを利用して視線の方向を検知し、画面上の位置を指示して入力する装置なども開発されている。

ビデオゲームでは、数種類のボタンやスティック、加速度センサーなどを手のひらサイズに収めたゲームコントローラ(ジョイパッド/ジョイスティック)が最も一般的な入力装置として用いられるほか、カメラやセンサーなどを組みわせて四肢の動きを検知するシステムが用いられたり、実在の機械を模した専用の装置(ハンドルやレバー、フットペダルを組み合わせたレースゲーム用筐体など)が用いられることもある。

広義には、人間の動作に限らず外界から情報を取り込んで電気信号やデジタルデータとしてコンピュータに伝達する機器全般が含まれる。マイクやイメージスキャナ、ビデオカメラ、デジタルカメラ、バーコードリーダー、指紋センサー、X線撮影装置、超音波診断装置、光学式読み取り装置(OCRやOMR)などである。

出力装置 【アウトプットデバイス】 ⭐⭐⭐

コンピュータが扱う情報を利用者に認識できる形式で提示する装置。ディスプレイやプリンタ、スピーカーなどが含まれる。

コンピュータシステムを構成する主要な装置の一つで、データを人間に認識できる形で外部に物理的に出力する装置である。光の像を投影して画面を映し出すディスプレイ(モニタ)やプロジェクタ、紙などに印字・印刷を行うプリンタやプロッタ、音声を発するスピーカーやイヤフォンなどが該当する。

主に人間の視覚や聴覚に働きかける原理の機器が多いが、振動で情報を知らせるバイブレーターや、ゲームコントローラなどで操作感(押しやすさ、回しやすさなど)を状況に応じて変化させるフォースフィードバック機構など、触覚を利用する装置もある。

映画館や体験型アミューズメント施設などに見られる、映像に合わせて霧や風を吹き出す装置なども広義には出力装置の一種と言える。未だ研究段階ながら、香り(触覚)や味(味覚)を動的に合成してコンピュータからの出力とする装置も構想されている。

これに対し、人間や環境、外部の機器から情報を取り込んでデータとしてコンピュータ本体に伝える装置を「入力装置」(input device:インプットデバイス)といい、キーボードやマウス、タッチパネル、ゲームコントローラ、マイク、イメージスキャナ、各種センサーなどが含まれる。

出力装置と入力装置を合わせて「入出力装置」(I/O device)と総称することもある。イヤホンマイクやプリンタ複合機(イメージスキャナとしても利用できるプリンタ)、振動機能付きコントローラなど、入出力の両方の機能を一体的に提供する装置もある。

マザーボード 【MB】

コンピュータのメインの電子基板で、CPU(マイクロプロセッサ)やメモリ、各種の制御用ICチップなど主要な部品を装着し、配線を通じて通電したり相互に通信できるようにするもの。

プラスチックなどでできたプリント基板の一種で、表面や内部に各装置を結ぶ金属配線や制御用の半導体チップ(チップセットなど)、電気的な制御を行うためのコンデンサーなどの電子部品などが高密度に実装されている。

CPUやメモリモジュール(RAM)、拡張カードなどを装着するためのスロットやソケットなどの接続端子、電源ユニットからのコードを差し込む電源コネクタ、ストレージ(外部記憶装置)など周辺機器を接続するためのケーブルを差し込むコネクタなども配置されている。

コネクタの一部は筐体背面などにむき出しになるよう設計されていることが多く、外付けの周辺機器や入出力装置(キーボード、マウス、ディスプレイ、プリンタ、スピーカーなど)などのケーブルを差し込むことができる。

BIOS/UEFI

表面に実装されたROMチップやフラッシュメモリなどに「ファームウェア」あるいは「BIOS」と総称されるコンピュータプログラムが格納されており、各装置に対する基本的な制御機能などを提供する。オペレーティングシステム(OS)などはハードウェア制御のためにBIOSの機能を呼び出している。

一般的なパソコン向けのマザーボード製品では「UEFI」規格に則って設計されたプログラムが内蔵されており、メーカーや機種が違っても同じOSやアプリケーションを利用することができる。起動時に特殊なキー操作で設定画面に移行することができ、ハードウェアの設定や構成の確認や変更などを行うことができる。

マザーボードの規格

いわゆるWindowsパソコンのデスクトップ型やタワー型、PCサーバ向けの製品では、異なるメーカーの部品を組み合わせて使えるよう、マザーボードの形状や寸法、主要な部品の配置などの標準規格が決められている。

マザーボードの規格(フォームファクタ)では基板の形状や寸法、コネクタ類の種類や位置、電源ユニットおよび電気的な仕様などを定めており、筐体やボード、搭載するチップ類やカード類のメーカーが違っても、同じ規格に対応していれば組み合わせて用いることができる。

パソコン普及の初期に最も一般的に用いられたのは、米IBM社の「PC/AT」のマザーボードの仕様をコピーした「AT仕様」の製品で、いわゆるPC/AT互換機の普及とともに事実上の標準として広まった。

その後、CPU大手の米インテル(Intel)社などが主導して「ATX仕様」が策定され、現在もデスクトップ型やタワー型のパソコン製品で広く用いられている。「MicroATX」「E-ATX」「FlexATX」など用途ごとにサイズや配置が異なる派生規格が存在する。

メモリ ⭐⭐

記憶、記憶力、回想、追憶、記念などの意味を持つ英単語。ITの分野ではコンピュータに内蔵される半導体集積回路(IC)を利用したデータの記憶装置を指すことが多い。

コンピュータを構成する装置の一つで、CPU(MPU/マイクロプロセッサ)などから直接読み書きすることができる記憶装置のことを「主記憶装置」(main memory:メインメモリ)というが、通常はこれを略してメモリと呼んでいる。また、主記憶装置を含む、半導体素子により電気的にデータの記憶や読み書きを行う記憶装置を総称して「半導体メモリ」という。

主記憶装置としてのメモリ

コンピュータ内部でCPUがソフトウェアの実行のために当座必要なプログラムやデータを記憶しておくための記憶装置を主記憶装置あるいはメモリという。一方、プログラムやデータを長期的、永続的に保管しておくために利用される装置は「外部記憶装置」「補助記憶装置」あるいは「ストレージ」(storage)などと呼ばれる。

一般に主記憶装置は外部記憶装置よりはるかに高速に動作する装置が用いられるが、単価や装置構成上の制約から少ない容量しか搭載することができない。このため、コンピュータは起動すると外部記憶から主記憶に必要なプログラムやデータを読み込んで実行し、必要なくなったデータなどは主記憶からすみやかに消去して新たに必要になったものと入れ替える。永続的に保管する必要があるデータなどは外部記憶へ書き込まれて保存される。

現代のコンピュータでは主記憶装置として、電気的に動作し高速に読み書きできる「RAM」(Randam-Access Memory)、特に「DRAM」(Dynamic RAM)を用いることが多いため、RAMやDRAMを主記憶装置あるいはメモリの同義語のように用いることが多い。歴史的にはRAM以外の装置が主記憶だった時代もあり、また、今後、RAMとは異なる原理の記憶装置を主記憶に用いるための技術の研究・開発も行われている。

RAM/DRAMは電源を落とすと内容が失われる「揮発性メモリ」の一種であるため、これを主記憶装置の特徴と説明することもあり、現代のコンピュータの設計については当てはまるが、本来これはRAM/DRAMの特性であり、他の装置を用いた場合はその限りではない。

半導体記憶装置としてのメモリ

電気的に情報を記録できる半導体素子を集積し、ある一定の容量のデータの記録、読み書きが可能な半導体集積回路(IC/LSI)を「半導体メモリ」あるいは単にメモリという。

半導体メモリ装置の多くは主記憶装置やそれに準じる用途に用いられるが、フラッシュメモリのように外部記憶装置(ストレージ)として用いられることがあり、主記憶装置をメモリと呼ぶ場合と紛らわしいので注意が必要である。

RAM

自由に読み書きできるが電源を断つと内容が失われる装置を「RAM」(Randam-Access Memory:ランダムアクセスメモリ)と呼び、記憶を保持するために定期的に電荷の再注入が必要な「DRAM」(Dynamic RAM:ダイナミックRAM)と不要な「SRAM」(Static RAM:スタティックRAM)に分かれる。

コンピュータの主記憶としてよく用いられるのはDRAMで、パソコンなどの場合は細長い電子基板にいくつかのDRAMチップ(メモリチップ)を実装したDRAMモジュール(メモリモジュール)をマザーボードに装着して利用する。

ROM

一方、電源を落としても記録内容が維持されるが、利用者が内容を書き込めないか書き込み方法に制約のある装置を「ROM」(Read-Only Memory:リードオンリーメモリ)という。コンピュータ内部に固定的に設置されてファームウェアやBIOSなどを記憶したり、プラチックのパッケージなどに収められてソフトウェアの流通などに用いられる。

このうち、製造時に内容を記録し、以後は内容の消去や上書きが一切できないものを「マスクROM」(Masked ROM)、利用者が特殊な装置を用いて一度だけ内容を記録できるものを「PROM」(Programmable ROM)、特殊な装置を用いて何度も内容の消去、再書込が可能なものを「EPROM」(Erasable Programmable ROM)という。

さらに、特殊な装置が不要で読み出しと同じ装置で消去、再書込ができるようにしたものは「フラッシュメモリ」(flash memory)と呼ばれ、自由に読み書き可能な不揮発メモリとして外部記憶装置(ストレージ)に利用される。

メインメモリ 【主記憶装置】 ⭐⭐⭐

コンピュータ内部でデータやプログラムを記憶する記憶装置のうち、中央処理装置(CPU)と基板上の電気配線などを通じて直に接続されたもの。「メモリ」「RAM」とも呼ばれる。

CPUの命令によって直に読み書きが可能な記憶装置で、実行中のプログラムコードや当座の処理に必要なデータなどが保存される。外部記憶装置(ストレージ)に比べ読み書き動作は桁違いに高速だが、単価が高いため機器に搭載できる容量は何桁か少ないのが一般的である。

現代のコンピュータでメインメモリとして用いられるのは半導体記憶装置(半導体メモリ)のRAM(Random Access Memory)の一種であるDRAM(Dynamic RAM)がほとんどで、機器の電源を切るなどして装置への通電を止めると記憶内容が失われるという特性がある。

このため、データやプログラムの永続的な保管にはストレージを用い、コンピュータの起動時にメインメモリに必要なプログラムなどを読み込んで実行するという動作が基本となっている。

また、現代のCPU製品の多くは内部にDRAMよりも高速な「キャッシュメモリ」と呼ばれる記憶回路を内蔵しているが、これはDRAMとのやり取りを高速化する一時的な保管場所としてのみ用いられ、プログラムから明示的に動作を制御することはできないようになっている。

メモリセル 【メモリーセル】

半導体メモリにおいて情報を記憶、読み書きする最小単位となる回路構成のこと。メモリチップは半導体基板上に微細な大量のメモリセルと配線を敷き詰めた構造となっている。

コンピュータはデータをすべて“0”と“1”を組み合わせた2進数の値として扱うが、メモリセルではこれを電荷の有無など何らかの電気的あるいは磁気的な状態に対応付けて記憶する。外部から配線を通じて供給される電力と電気信号によって記憶の保持や読み込み、書き換え、消去などを行うことができる。

数センチ角の半導体チップの内部に数百万から数十億にも及ぶメモリセルを配線とともに形成したものがメモリチップで、このチップを電子基板にいくつか並べて実装したメモリモジュールを一つの単位としてコンピュータのメモリ装置やストレージ装置の記憶媒体として用いる。

多くのメモリ装置では、一つのメモリセルが0と1に相当する2状態のいずれかを取ることができる構造となっており、1ビットの情報を記録することができる。フラッシュメモリなどでは蓄える電荷などに複数の段階を設け、一つのメモリセルが3つ以上の異なる状態を取ることができるものもあり、1ビットを超える情報を記録することができる。

このような多値を取ることができるセルをMLC(Multi-Level Cell)と呼び、4値ならば2ビット、8値ならば3ビットをまとめて記録できる。これと対比する文脈では2状態1ビット記録のセルをSLC(Single-Level Cell)と呼ぶことある。

メインフレーム 【大型汎用機】

大企業や官公庁などの基幹情報システムなどに用いられる大型のコンピュータ製品。最も古くから普及している製品カテゴリーで、多数の利用者や業務で共有し、大量の重要なデータや処理を扱うため、極めて高い性能や信頼性を実現している。

建物の一室やワンフロアを占めるほどの大型の本体(ホスト)と、通信回線や構内ネットワークで接続された操作用の端末(ターミナル)で構成され、日常的な操作は端末を通じて行われる。電源や処理装置、記憶装置などほとんどの構成要素が多重化され、処理性能や耐障害性の向上が図られている。

CPU(処理装置)などの部品やオペレーティングシステム(OS)などのソフトウェアの多くは各社が自社で開発・製造する独自仕様の製品で、顧客は一社からすべての要素をパッケージしたシステムとして購入する形となる。

コンピュータ上で実行される業務システム(アプリケーションソフト)は顧客の事業や業務に合わせてゼロから設計・開発されることが多く、メーカーがソフトウェア開発まで請け負ってハードウェアと一括で納品する場合と、開発受託企業(インテグレータ)がメーカーから仕入れたコンピュータにソフトウェアを導入して納品する場合がある。

ミニコンやオフコン、パソコンなど安価で小型な汎用コンピュータ製品が登場する1980年代頃までは、コンピュータといえば汎用コンピュータのことであったため、「汎用コンピュータ」という呼称は比較的新しいものである(単に「コンピュータ」と呼ばれていた)。

日本語で「汎用」と呼ばれるのは、それ以前のコンピュータは特定の用途ごとに特注で製造されるのが一般的だったからで、ソフトウェアや機器構成を柔軟に変更し、異なる種類の業務や用途に対応・共有できることは画期的なことだった。

汎用コンピュータを製造・販売できるメーカーは大手コンピュータメーカーに限られ、現在では米IBM社、米ユニシス(Unisys)社、仏アトス(Atos/旧Bull)社、富士通、NEC、日立の6社が残るのみとなっている。世界的にはIBMのシェアが高いが、日本では国産の人気が高い。

近年では、一部のシステムではパソコンや小型サーバコンピュータをネットワークを通じて相互に接続した分散型のシステムが汎用コンピュータに取って代わるようになり、最盛期に比べ市場規模は大きく落ち込んでいるものの、過去のシステムとの互換性や高い堅牢性などから、伝統的大企業や官公庁を中心に一定の地位を維持している。

パソコン 【PC】

個人向けの小型、低価格の汎用コンピュータ製品。個人が手元に置いて直接操作して利用するもので、利用者がソフトウェアを導入することで様々な用途に利用できる。

現代のパソコンは本体および表示装置(ディスプレイ)、キーボード、マウスなどの機器で構成される。狭義の「パソコン」はこのうち本体部分を指し、プログラムを実行しデータを処理するCPU(マイクロプロセッサ)、プログラムやデータを一時保存するメインメモリ(RAM)、永続的に保管するストレージ(外部記憶装置)、マザーボード、電源ユニット、外部入出力端子などの部品で構成される。

ソフトウェア環境として汎用性の高いオペレーティングシステム(OS)が導入され、利用者が用途や目的に応じて必要なアプリケーションソフトを導入して使用する。OSはWindowsやmacOSなどの製品が本体に導入済みの状態で販売されることが多いため、パソコンの構成要素の一部とみなすことも多い。

形態による分類

<$Img:Laptop-PC.jpg|right|rupeshtelang|https://pixabay.com/illustrations/computer-laptop-worksheet-5433031/>

机上に据え置きで利用する形態の製品を「デスクトップパソコン」(desktop PC)と呼び、その中で、筐体に高さがあり縦置きする形状のものを「タワーパソコン」(tower PC)という。デスクトップ型はディスプレイやキーボードなどの装置が別々に提供され、ケーブルや無線で接続して使用する形態が多いが、ディスプレイと本体が一体化している製品もある。

一方、すべての装置が薄型の小型の筐体に一体化していて持ち運び可能な形態の製品を「ノートパソコン」(laptop PC)という。二枚の板状の部材をヒンジで繋いで開閉できるようにした形状で、内側の片面が液晶ディスプレイ画面に、もう一方がキーボードやタッチパッドとなっている。

近年ではディスプレイに触れてタッチパネルとして操作できる機種も増えており、ディスプレイ側をヒンジから取り外して単体でタブレット端末としても使用できる「2in1タブレット」と呼ばれる製品カテゴリーも一般的になっている。

機種による分類

<$Img:Mac-Image.jpg|right|Mac>

現代のパソコン製品は大きく分けて2系統に分類できる。一方は米マイクロソフト(Microsoft)社の「Windows」(ウィンドウズ)をOSとして使うことが多い「Windowsパソコン」あるいは「PC/AT互換機」と呼ばれる製品群で、米インテル(Intel)社製CPUや他社の互換製品を用いるなど、メーカーが異なっても仕様や設計の多くが共通している。

もう一方は米アップル(Apple)社が一社単独で展開する「Mac」(マック)シリーズ(旧称Macintosh:マッキントッシュ)で、同社が本体および専用のOSである「macOS」(マックオーエス)、主要な周辺機器やソフトウェアを一貫して提供している。

「パソコン」という表現は両者を含む個人向け小型コンピュータの総称とすることが多いが、「パソコンとMac」のようにWindowsパソコンのみを指す狭い意味で用いる人もいる。英語でも事情は似通っており、“PC” という略称でWindowsパソコンのみを表し、“PC vs Mac” のように表記する人がいる。その場合、総称としては省略しない “personal computers” を用いることが多い。

近年では、米グーグル(Google)社の「Chrome OS」(クロームオーエス)を搭載した「Chromebook」(クロームブック)シリーズが第三勢力として台頭しつつあり、Windowsが動作するが英アーム(ARM)社系CPUを採用しIntel系とはソフトウェアの互換性が限られる製品群など、従来の枠組みには収まらない機種も増えてきている。

デスクトップパソコン 【desktop PC】

パソコン製品の形態による分類の一つで、室内に固定的に設置して使用する据え置き型の筐体を持つ機種のこと。ノート型のように持ち運ぶことは難しいが、性能や機能で優れていることが多い。

形態の変遷

もとは、平たい箱型の筐体で、机(desk)の上(top)に横置きして箱型のCRTディスプレイを上に乗せて使用する機種を指していた。近年では、ディスプレイの脇や机の下などに設置する縦長(縦置き)の「タワー型」や「スリム型」、液晶ディスプレイと本体を一体化した「ディスプレイ一体型」(オールインワン型)が一般的となっている。

現代ではディスプレイが薄型の液晶タイプのみとなり、パソコン本体のような奥行きが無くなったこともあり、初期のような横置きしてディスプレイを乗せる設計の製品はほぼ消滅している。このため、「デスクトップ型」といった場合には持ち運びを想定しない据え置き型の総称とするのが一般的だが、稀に歴史的な文脈などではタワー型や一体型と区別して横置きの平たい筐体の機種を指す場合がある。

特徴

デスクトップ型はノート型などに比べ筐体が大きく、内部の空間や側面のパネルの面積も広いため、高性能の部品を搭載することができ、コネクタ類も豊富で、内部のドライブベイや拡張スロットなどによる拡張性も高い。メーカーや機種に固有の独自仕様なども少なく、部品のカスタマイズや追加、交換などもしやすい。

いわゆるWindowsパソコン(PC/AT互換機)では部品の寸法や接続仕様などが標準化されており、様々なメーカーから多種多様な製品が供給されるため、構成によっては同じ性能でノート型などより極端に格安な製品などもある。一方、同時代で最高の機能・性能を実現しようとすれば大きな筐体や拡張性が必須であるため、業務用やゲーム用の極めて高性能な高額機種もデスクトップ型となる。

メインフレーム 【大型汎用機】

大企業や官公庁などの基幹情報システムなどに用いられる大型のコンピュータ製品。最も古くから普及している製品カテゴリーで、多数の利用者や業務で共有し、大量の重要なデータや処理を扱うため、極めて高い性能や信頼性を実現している。

建物の一室やワンフロアを占めるほどの大型の本体(ホスト)と、通信回線や構内ネットワークで接続された操作用の端末(ターミナル)で構成され、日常的な操作は端末を通じて行われる。電源や処理装置、記憶装置などほとんどの構成要素が多重化され、処理性能や耐障害性の向上が図られている。

CPU(処理装置)などの部品やオペレーティングシステム(OS)などのソフトウェアの多くは各社が自社で開発・製造する独自仕様の製品で、顧客は一社からすべての要素をパッケージしたシステムとして購入する形となる。

コンピュータ上で実行される業務システム(アプリケーションソフト)は顧客の事業や業務に合わせてゼロから設計・開発されることが多く、メーカーがソフトウェア開発まで請け負ってハードウェアと一括で納品する場合と、開発受託企業(インテグレータ)がメーカーから仕入れたコンピュータにソフトウェアを導入して納品する場合がある。

ミニコンやオフコン、パソコンなど安価で小型な汎用コンピュータ製品が登場する1980年代頃までは、コンピュータといえばメインフレームのことであったため、「メインフレーム」という呼称は比較的新しいものである(単に「コンピュータ」と呼ばれていた)。

日本語で「汎用」と呼ばれるのは、それ以前のコンピュータは特定の用途ごとに特注で製造されるのが一般的だったからで、ソフトウェアや機器構成を柔軟に変更し、異なる種類の業務や用途に対応・共有できることは画期的なことだった。

メインフレームを製造・販売できるメーカーは大手コンピュータメーカーに限られ、現在では米IBM社、米ユニシス(Unisys)社、仏アトス(Atos/旧Bull)社、富士通、NEC、日立の6社が残るのみとなっている。世界的にはIBMのシェアが高いが、日本では国産の人気が高い。

近年では、一部のシステムではパソコンや小型サーバコンピュータをネットワークを通じて相互に接続した分散型のシステムがメインフレームに取って代わるようになり、最盛期に比べ市場規模は大きく落ち込んでいるものの、過去のシステムとの互換性や高い堅牢性などから、伝統的大企業や官公庁を中心に一定の地位を維持している。

メインフレーム 【大型汎用機】

大企業や官公庁などの基幹情報システムなどに用いられる大型のコンピュータ製品。最も古くから普及している製品カテゴリーで、多数の利用者や業務で共有し、大量の重要なデータや処理を扱うため、極めて高い性能や信頼性を実現している。

建物の一室やワンフロアを占めるほどの大型の本体(ホスト)と、通信回線や構内ネットワークで接続された操作用の端末(ターミナル)で構成され、日常的な操作は端末を通じて行われる。電源や処理装置、記憶装置などほとんどの構成要素が多重化され、処理性能や耐障害性の向上が図られている。

CPU(処理装置)などの部品やオペレーティングシステム(OS)などのソフトウェアの多くは各社が自社で開発・製造する独自仕様の製品で、顧客は一社からすべての要素をパッケージしたシステムとして購入する形となる。

コンピュータ上で実行される業務システム(アプリケーションソフト)は顧客の事業や業務に合わせてゼロから設計・開発されることが多く、メーカーがソフトウェア開発まで請け負ってハードウェアと一括で納品する場合と、開発受託企業(インテグレータ)がメーカーから仕入れたコンピュータにソフトウェアを導入して納品する場合がある。

ミニコンやオフコン、パソコンなど安価で小型な汎用コンピュータ製品が登場する1980年代頃までは、コンピュータといえばホストコンピュータのことであったため、「ホストコンピュータ」という呼称は比較的新しいものである(単に「コンピュータ」と呼ばれていた)。

日本語で「汎用」と呼ばれるのは、それ以前のコンピュータは特定の用途ごとに特注で製造されるのが一般的だったからで、ソフトウェアや機器構成を柔軟に変更し、異なる種類の業務や用途に対応・共有できることは画期的なことだった。

ホストコンピュータを製造・販売できるメーカーは大手コンピュータメーカーに限られ、現在では米IBM社、米ユニシス(Unisys)社、仏アトス(Atos/旧Bull)社、富士通、NEC、日立の6社が残るのみとなっている。世界的にはIBMのシェアが高いが、日本では国産の人気が高い。

近年では、一部のシステムではパソコンや小型サーバコンピュータをネットワークを通じて相互に接続した分散型のシステムがホストコンピュータに取って代わるようになり、最盛期に比べ市場規模は大きく落ち込んでいるものの、過去のシステムとの互換性や高い堅牢性などから、伝統的大企業や官公庁を中心に一定の地位を維持している。

マイコン

マイクロコントローラあるいはマイクロコンピュータの略で、前者は組み込みシステム向けの統合型のICチップ、後者はパソコンの旧称を意味する。

マイクロコントローラ (MCU:Micro-Control Unit)

コンピュータの機能一式を一枚のICチップに実装した製品。家電製品や産業機械などの制御用コンピュータとして組み込まれる。

演算・制御装置(CPU)、メモリ装置(RAMやROM)、入出力回路(I/O)、タイマー回路などを一つの集積回路に実装した製品で、単体でコンピュータとしての一通りの機能を有する。マイクロコンピュータを含む制御システムを「マイコンシステム」あるいは「組み込みシステム」(エンベッドシステム:embedded system)という。

マイクロコンピュータは機器の制御という目的から、パソコンなどに内蔵されるマイクロプロセッサに比べ機能はシンプルで性能も低いが、安価で他に必要な部品も少なく、システム全体の基板面積や部品点数、消費電力を少なく抑えることができる。現在では家電からAV機器、携帯電話、産業機械、自動車などほとんどの電子・機械製品に何らかの形でマイクロコンピュータが組み込まれている。

マイクロコンピュータ

<$Img:Microcomputer.png|right|by sergeitokmakov from pixabay|https://pixabay.com/illustrations/old-computer-8bit-technology-retro-4962268/>

個人向けの小型で安価な汎用コンピュータの、1970~80年代における一般的な名称。現在では一般的に「パーソナルコンピュータ」(パソコン、PC:Personal Computer)と呼ばれる製品カテゴリの創成期の呼称。

コンピュータといえば企業などの大きな組織が利用する大型汎用機(メインフレーム)やミニコンピュータ、オフィスコンピュータなどしかなかった1970年代後半、安価なマイクロプロセッサの発明により個人が家庭で使える汎用コンピュータとしてマイクロコンピュータが登場した。

当初は限られた好事家が購入・利用するに過ぎなかったが、性能や機能の向上、低価格化、優れたオペレーティングシステム(OS)や業務に使えるソフトウェアの登場などにより、次第にオフィスや家庭に普及していった。1980年代後半頃から「パソコン」という呼称が広まり始め、現在では歴史的な文脈以外でマイクロコンピュータと呼ぶことはほとんどない。

シングルボードコンピュータ 【SBC】

概ね手のひらサイズ程度までの小さな電子基板に単体のコンピュータとして必要なほぼすべての機能や要素を実装したもの。

基板上にCPU(マイクロプロセッサ/MPU)やメインメモリ(RAM)、ストレージ、チップセット、入出力端子などを実装された小型コンピュータで、画面出力やネットワークインターフェースなどを備えたパソコンなどに近い仕様の製品もある。

Linuxなど汎用のオペレーティングシステム(OS)が動作するよう設計されていることが多く、ネットワーク上でサーバとして動作させたり、Pythonなどのスクリプト言語でハードウェアの入出力制御を行うことができる。

もともとは産業機械の組み込みシステムで制御用コンピュータとして使われていた製品などがこのように呼ばれており、その場合はより簡素な仕様でリアルタイムOSなど特殊なソフトウェア環境を有するものが多い。

近年では「Raspberry Pi」(ラズベリーパイ)などパソコンやスマートフォンなど汎用の小型コンピュータに近い機能や仕様を持った新たな製品カテゴリーが台頭し、組み込み用途に限らず趣味や教育など幅広い用途で利用される。

マイコンボード (ワンボードマイコン)

概ね名刺サイズかそれより小さな電子基板に、電子機器の制御などを行うマイクロコンピュータ(マイコン)としての機能を実装したもの。

CPUとしてパソコン向けなどで用いられる複雑で高性能なマイクロプロセッサではなくマイクロコントローラやSoC(System on Chip)、RISC系プロセッサなど軽量な製品を搭載し、RAMやI/Oインターフェース、プログラム記憶用の不揮発メモリなどコンピュータとしての動作に必要な一通りの機能を内蔵している。

LinuxやWindowsのような汎用のOSを用いず外部からバイナリプログラムを転送して直接実行したり、リアルタイムOSなど組み込みシステム用のソフトウェア環境を用いることが多い。外部との通信もGPIOやSPI、I2Cなどシリアルインターフェースが主体で、画面出力やネットワークインターフェースなどは無いことが多い。

半導体製品の評価ボードとして使用したり、電子機器や機械などの制御用として内蔵する組み込みシステムとして利用されることが多い。組み込み用途の製品ではシングルボードコンピュータ(SBC)との区別は曖昧で、似たような製品でもマイコンボードと呼ばれたりSBCと呼ばれたりする。

1970年代には、まな板くらいの大きさの(現代から見れば大きめな)ワンボード型コンピュータが最初期の個人用小型コンピュータとして人気を博したこともあるが、程無くより複雑な構成のマイコン、パソコンに発展していった。近年では電子工作などの制御用ボードとして「Arduino」(アルデュイーノ)などのオープンな仕様の製品が再び注目を集め、産業用だけでなく趣味や教育などの分野で利用されている。

アプライアンス

器具、装置、設備、電器、家電製品などの意味を持つ英単語。ITの分野では、情報機器や通信機器、コンピュータ応用製品のうち、特定の機能や用途に特化した専用機器を指すことが多い。

様々な機能を持ち複数の用途に使える汎用製品に対し、アプライアンス製品は機能や用途を絞り込んで不要な部品や要素などを削減しているため、安価で高い性能を実現し、導入や管理、運用が比較的容易な製品が多い。ただし、後から他の機能を追加したり入れ替えることはできず、性能や容量などの拡張性も乏しいことが多い。

アプライアンスはネットワーク機器やサーバ製品などで提供されることが多く、ストレージ(ファイルサーバ)や通信暗号化(SSL/TLSなど)、プロキシ、キャッシュサーバ、ファイアウォール、ロードバランサ、データベースなどの製品分野でアプライアンス型の製品がよく提供される。

サーバ機能を提供する機器は「アプライアンスサーバ」とも呼ばれる。仮想化システムの中には、単一機能のネットワーク機器などの機能をソフトウェアとして仮想的に実装した製品も見られ、「仮想アプライアンス」(virtual appliance)と呼ばれる。

ちなみに、英語で単に “appliance”という場合は “home appliance”、すなわち家電製品を表すことが多い。近年では大手電機メーカーの白物家電部門の名称などに「アプライアンス」の名を冠する例が多く見られる。

スーパーコンピュータ 【スパコン】

大規模な科学技術計算などを行うために構築された超高性能コンピュータシステム。その時点での最先端の技術や製品を結集して開発され、価格も性能も他のコンピュータとは比べ物にならないほど高い。

科学研究や技術開発、軍事研究、気象予測などにおける数値解析やシミュレーションなどの大規模計算を行うことを主目的に開発・運用されるもので、各国の大学や国立研究所、国防研究機関、大企業の研究開発部門などに設置されることが多い。

スーパーコンピュータを構成するハードウェアや、大規模計算や並列処理のためのソフトウェア、アルゴリズムなどを包括する技術分野を「HPC」(High Performance Computing:ハイパフォーマンスコンピューティング)という。

性能や構造などの外形的な特徴により何を満たしていればスーパーコンピュータと言えるかを明確に定義することはできないが、その時代に業務用に量産される大型コンピュータの最上位機種よりも数十倍から数百倍、あるいはそれを超えるような性能・規模のものが該当することが多い。

スーパーコンピュータの中でも最も性能の高い部類に入る機種は、一基ごとに特注で設計・開発・製造されるものが多い。これをスケールダウンしてパッケージ化した、相対的に小規模な量産品が開発されることもあり、企業の研究部門などに向けて販売される。

性能指標

スーパーコンピュータの性能は様々な指標により計測・比較されるが、科学技術計算などでの利用が多いことから、最も単純な指標として毎秒実行できる浮動小数点演算の回数である「FLOPSフロップス」(FLoating-point Operations Per Second)が用いられる。

しかし、スーパーコンピュータは構成が複雑で様々な用途や処理方式が用いられるため、連続して計算を行う回数だけで総合的な性能を測ることは難しく、特定の応用分野における模擬的な処理を実装したプログラムを実行して性能を実測する「ベンチマーク」がよく用いられる。

中でも有名な「LINPACKリンパック」を用いて世界中のスーパーコンピュータの性能を計測・比較し発表する「TOP500 Supercomputer Sites」と呼ばれるプロジェクトがあり、そのランキングが総合的な性能評価としてよく引用される。ランキングは半年に一回更新され、日本からは「地球シミュレーター」(2002~2004)や「京」(2011)、「富岳」(2020~2021)などがトップを獲得したことがある。

メインフレーム 【大型汎用機】

大企業や官公庁などの基幹情報システムなどに用いられる大型のコンピュータ製品。最も古くから普及している製品カテゴリーで、多数の利用者や業務で共有し、大量の重要なデータや処理を扱うため、極めて高い性能や信頼性を実現している。

建物の一室やワンフロアを占めるほどの大型の本体(ホスト)と、通信回線や構内ネットワークで接続された操作用の端末(ターミナル)で構成され、日常的な操作は端末を通じて行われる。電源や処理装置、記憶装置などほとんどの構成要素が多重化され、処理性能や耐障害性の向上が図られている。

CPU(処理装置)などの部品やオペレーティングシステム(OS)などのソフトウェアの多くは各社が自社で開発・製造する独自仕様の製品で、顧客は一社からすべての要素をパッケージしたシステムとして購入する形となる。

コンピュータ上で実行される業務システム(アプリケーションソフト)は顧客の事業や業務に合わせてゼロから設計・開発されることが多く、メーカーがソフトウェア開発まで請け負ってハードウェアと一括で納品する場合と、開発受託企業(インテグレータ)がメーカーから仕入れたコンピュータにソフトウェアを導入して納品する場合がある。

ミニコンやオフコン、パソコンなど安価で小型な汎用コンピュータ製品が登場する1980年代頃までは、コンピュータといえば大型コンピュータのことであったため、「大型コンピュータ」という呼称は比較的新しいものである(単に「コンピュータ」と呼ばれていた)。

日本語で「汎用」と呼ばれるのは、それ以前のコンピュータは特定の用途ごとに特注で製造されるのが一般的だったからで、ソフトウェアや機器構成を柔軟に変更し、異なる種類の業務や用途に対応・共有できることは画期的なことだった。

大型コンピュータを製造・販売できるメーカーは大手コンピュータメーカーに限られ、現在では米IBM社、米ユニシス(Unisys)社、仏アトス(Atos/旧Bull)社、富士通、NEC、日立の6社が残るのみとなっている。世界的にはIBMのシェアが高いが、日本では国産の人気が高い。

近年では、一部のシステムではパソコンや小型サーバコンピュータをネットワークを通じて相互に接続した分散型のシステムが大型コンピュータに取って代わるようになり、最盛期に比べ市場規模は大きく落ち込んでいるものの、過去のシステムとの互換性や高い堅牢性などから、伝統的大企業や官公庁を中心に一定の地位を維持している。

量子コンピュータ

量子力学の原理を計算に応用したコンピュータ。極微細な素粒子の世界で見られる状態の重ね合わせを利用して、従来の電子回路などでは不可能な超並列的な処理を行うことができる。

原子の内部構造のような極めて微細なスケールの世界は、物体に働く古典力学とは原理の異なる量子力学が支配している。素粒子の状態を表す属性は、複数の状態が同時に実現している「重ね合わせ」という状態にある。これを「量子ビット」(qubit:quantum bit)と呼ばれる情報の表現として利用することにより、並列的な計算を実現するというのが量子コンピュータの基本的な原理である。

汎用的な方式として、従来の半導体チップの論理回路のように量子的な回路を用いる「量子ゲート」(quantum gate)方式が古くから研究され、当初は量子コンピュータといえばこの方式を指していた。2000年代になり「量子アニーリング」(quantum annealing:量子焼きなまし法)と呼ばれる原理を応用した方式が新たに考案され、最適化問題を解く専用コンピュータとして実証実験が行われている。

量子ゲート方式ではどのような素子や装置で計算を行うかについて様々な方式が提案されている。核磁気共鳴や電子スピン共鳴を用いる方法、光子を用いる方法(光量子コンピュータ)、真空中のイオントラップを用いる方法、超伝導素子の磁束や電荷、位相を用いる方法、半導体の微細構造中に電子を捕捉する量子ドットを用いる方法、結晶に不純物を注入してできる格子欠陥(ダイヤモンド中の窒素空孔中心など)に電子を閉じ込める方法などが研究されている。

量子コンピュータは従来型コンピュータのように振る舞うこともできるため、従来型で解ける問題ならば量子コンピュータでも解けることは分かっているが、古典的なアルゴリズム(計算手順)では量子的な効果を活かすことはできない。量子的な原理を利用したアルゴリズムの研究・開発はこれからの課題であり、従来型と根本的に異なる性能を発揮できる分野や問題がどれくらいあるのかはよく分かっていない。

歴史

量子的な系を用いて計算を行うアイデアは1980年に米物理学者のポール・ベニオフ(Paul Benioff)氏が提唱したが、当初は実現の困難さや有効な適用分野の欠如などからあまり活発には研究されてこなかった。

1994年、米AT&Tベル研究所(当時)のピーター・ショア(Peter Shor)氏が量子コンピュータを用いて整数の素因数分解を高速に行うアルゴリズム(Shorのアルゴリズム)を発表した。巨大な整数の素因数分解は従来のコンピュータでは計算が困難で、RSA暗号の安全性の根拠ともなってきたが、量子コンピュータが実現すればこうした問題を高速に解ける可能性が示され、注目が集まった。

2001年には米IBM社のアルマデン研究所が7キュービットの量子コンピュータを試作し、Shorのアルゴリズムにより実際に素因数分解を行うことに成功した。2011年、カナダのD-Wave Systems社が量子アニーリング方式の「D-Wave」を発表し、初の実用的な量子コンピュータとして注目された。

ENIAC 【Electronic Numerical Integrator And Calculator】

1946年にアメリカで開発された、最も初期の電子計算機の一つ。現代のコンピュータの祖先の一つとして知られる。

第二次大戦中の1943年、米陸軍が弾道計算などのために高速な計算機の開発を計画し、ペンシルベニア大学のジョン・モークリー(John W. Mauchly)氏やジョン・エッカート(John P. Eckert)氏を中心とするグループに資金を提供して開発を依頼した。終戦後の1946年に完成し、陸軍施設で1955年まで稼働した。

筐体は大きなロッカーを横に並べたような形状で、全体で幅30m×奥行き90cm×高さ2.4m、重量は27トンにも達したという。約18,000個の真空管をはじめ、ダイオードやリレーなどの素子を数千から数万個ずつ用いており、全体で約150kWの電力を消費した。十進数で10桁の数を20個同時に記憶し、加減算なら毎秒数千回、乗算や除算は数十回から数百回を実行できた。

主な特徴

当時は機械式の電気計算機は存在したが、ENIACは可動部をなくし、すべての計算やデータの伝送を電気的に行うことで極めて高速な動作が可能となった。また、機械の物理量の変化で計算を行うアナログ式の計算機械も既に存在したが、ENIACは数値を一桁ずつ計算するデジタル式の計算機の魁の一つであった。

機器の構造上あらかじめ実行できる計算や用途が決まっている専用計算機がほとんどだった中、ENIACは配線やスイッチの接続状態などを変更して計算手順を変更できるように設計され、ある程度汎用的に様々な用途や計算に利用できた。条件分岐や繰り返しなどを含む複雑なコンピュータプログラムを実行することもできた。

このように今日のコンピュータに繋がる特徴の多くを備えていたが、現在一般的な二進法ではなく十進法で数値を表す点や、プログラム内蔵方式ではない(後期には改造されてわずかにプログラムを内蔵できるようになった)点など、現在のコンピュータとは大きく異なっている点もある。

「世界初」を巡って

ENIACは登場当初からの知名度や、その後のコンピュータの発展に与えた影響などから長らく「世界初の電子式デジタルコンピュータ」などと呼ばれてきたが、1949年に英国で開発された「EDSAC」(Electronic Delay Storage Automatic Calculator)の方がプログラム内蔵方式を実現している点で今日のコンピュータの元祖にふさわしいとする意見もある。

また、大戦中の軍事機密が数十年を経て公開されたり、当時の状況についての研究・検証が進むに連れ、ENIACより先に作られた「アタナソフ・ベリー・コンピュータ」(ABC:Atanasoff-Berry Computer、1941年米)や「ハーバード・マークワン」(Harvard Mark I、1944年米)、「Z3」(1943年独)、「コロッサス」(Colossus、1943年英)などが、いくつかの技術やアイデアでENIACより先んじていたことが明らかになっている。

TSS 【Time Sharing System】

コンピュータの処理時間を決まった短い時間に分割し、それぞれ異なる利用者やプログラムに順番に割り当てることで、並行して効率的にコンピュータを利用できるようにするシステム。

コンピュータが普及し始めた当初は個人用のコンピュータはなく、企業や官庁、大学などに設置された大型コンピュータを多数の利用者で共用する方式が一般的だった。

当時のコンピュータは一度に一つのプログラムしか実行できなかったため、利用者はプログラムやデータを用意してもすぐには実行できず、自分の番が回ってくるまで他の利用者の処理が終わるのを待たなければならなかった。

これに対し、タイムシェアリングシステム方式のコンピュータはCPUの実行時間を極めて短い単位に分割し、実行中のプログラムに順繰りに割り当てる。各プログラムはCPUを占有できないため処理性能は落ちるものの、利用者が使いたいときにすぐにプログラムを実行することができる。

低性能機を多数購入するより高性能機を少数購入したほうが価格性能比が高かった事情もあり、コストを極端に増やさずに利用者の利便性を向上させる手法として大型コンピュータの世界で広く普及した。

処理時間を細かく等分して複数の主体に割り当てるという手法自体は、現代のマイクロプロセッサ(MPU/CPU)やオペレーティングシステム(OS)でもマルチタスクやマルチスレッドなどとして応用され、当たり前の仕様となっている。

周辺機器 【ペリフェラル】

コンピュータなど中心となる機器に繋いで使用する装置のこと。本体に何らかの機能を提供するために用いられ、単体では使用できないものが多い。

通常は機器本体の外部に設置してケーブルや無線などで接続・通信するものを指し、筐体内に据え付ける部品(パーツ)とは区別されるが、一部の記憶装置のように同じ機能でも内蔵型と外付型が両方存在する場合もあり、厳密に区別できるわけではない。

パソコンの主な周辺機器は入出力装置や外部記憶装置で、キーボードやマウス、ディスプレイ(モニター)、プリンタ、イメージスキャナ、スピーカー、ヘッドフォン、外付型のストレージやドライブ(ハードディスク、SSD、光学ドライブなど)、USBメモリなどがよく知られる。

ブロードバンドルータやWi-Fiアクセスポイント、NAS(Network Attached Storage)などのようにネットワーク上で複数の機器で共用するものや、デジタルカメラやデジタルオーディオプレーヤーのようにデータ管理はパソコンで行うが使用自体は単体で行うものも含める場合もある。

また、スマートフォンやタブレット端末、携帯ゲーム機、デジタルカメラなど携帯機器の場合はメモリーカードなどの電子機器だけでなくストラップやケース、液晶保護シート、タッチペンなどの器具も含まれるため、周辺装置と呼ばずに「アクセサリー」と呼称することが多い。

周辺機器 【ペリフェラル】

コンピュータなど中心となる機器に繋いで使用する装置のこと。本体に何らかの機能を提供するために用いられ、単体では使用できないものが多い。

通常は機器本体の外部に設置してケーブルや無線などで接続・通信するものを指し、筐体内に据え付ける部品(パーツ)とは区別されるが、一部の記憶装置のように同じ機能でも内蔵型と外付型が両方存在する場合もあり、厳密に区別できるわけではない。

パソコンの主な周辺機器は入出力装置や外部記憶装置で、キーボードやマウス、ディスプレイ(モニター)、プリンタ、イメージスキャナ、スピーカー、ヘッドフォン、外付型のストレージやドライブ(ハードディスク、SSD、光学ドライブなど)、USBメモリなどがよく知られる。

ブロードバンドルータやWi-Fiアクセスポイント、NAS(Network Attached Storage)などのようにネットワーク上で複数の機器で共用するものや、デジタルカメラやデジタルオーディオプレーヤーのようにデータ管理はパソコンで行うが使用自体は単体で行うものも含める場合もある。

また、スマートフォンやタブレット端末、携帯ゲーム機、デジタルカメラなど携帯機器の場合はメモリーカードなどの電子機器だけでなくストラップやケース、液晶保護シート、タッチペンなどの器具も含まれるため、周辺機器と呼ばずに「アクセサリー」と呼称することが多い。

デバイス

機器、装置、道具という意味の英単語。ITの分野では、比較的単純な特定の機能・用途を持った部品や装置という意味で用いられることが多い。

コンピュータについてデバイスという場合は、筐体内に取り付けられた電子部品や接続された周辺機器のことを指すことが多い。CPU(マイクロプロセッサ)やメインメモリ(RAM)、ストレージ(外部記憶装置)、チップセットなどの各種の制御用IC、キーボード、マウス、プリンタ、ディスプレイなどが含まれる。

USB接続の周辺機器を総称して「USBデバイス」と呼んだり、マイクやスピーカー、イヤフォン、オーディオカードなど音声の入出力を行う装置を総称して「オーディオデバイス」と呼ぶように、様々な種類の装置や機器を総称する用法が多く見られる。

デバイスドライバ

コンピュータに取り付けたデバイスを動作させ、オペレーティングシステム(OS)から制御するには専用のソフトウェアが必要な場合が多く、これを「デバイスドライバ」(device driver)「ドライバソフト」などという。

現代の一般消費者が使用するOS製品では、主要なデバイスのドライバがあらかじめOSに同梱されていたり、USB機器のように汎用ドライバが整備されていたり、機器の初回接続時に自動的にインターネットを通じて開発元から取得して導入する仕組みが整備されている。

かつては装置ごとに一つ一つ利用者がドライバを導入する設定作業を行わなければならないのが一般的で、現在でも発売間もない最新の装置や、利用環境があまり整備されていないマイナーなジャンルの装置ではこの作業が必要になる場合がある。

他の用法

コンピュータ本体に付随する装置という意味の他に、「モバイルデバイス」「スマートデバイス」「マルチデバイス」「iOSデバイス」「Androidデバイス」のようにコンピュータ本体など単体で完結した機器や機械そのものを指す場合がある。主に携帯機器について用いられる。

また、電子工業などの産業分野、電子工学などの学問分野では、「半導体デバイス」(コンデンサやトランジスタなど)「光デバイス」(レンズや受光素子など)「マイクロデバイス」のように、装置を構成する微細な部品や素子などのことをデバイスと総称することがある。

なお、外来語としてのカナ表記は “device” という綴りに引き摺られて「デバイス」が定着しているが、本来の発音は「ディヴァイス」に近い。英語の原義は様々な種類の機器や装置などの全般を指す広い概念の言葉である。

ストレージ 【外部記憶装置】 ⭐⭐⭐

コンピュータの主要な構成要素の一つで、データを永続的に記憶する装置。磁気ディスク(ハードディスクなど)や光学ディスク(CD/DVD/Blu-ray Discなど)、フラッシュメモリ装置(USBメモリ/メモリカード/SSDなど)、磁気テープなどがこれにあたる。

一般的には通電しなくても記憶内容が維持される記憶装置を指し、コンピュータが利用するプログラムやデータなどを長期間に渡って固定的に保存したり、他の機器へのデータの運搬や複製、配布などのために用いられる。

コンピュータ内には補助記憶装置とは別に、半導体記憶素子などでデータの記憶を行う主記憶装置(メインメモリ)が内蔵されており、利用者がプログラムを起動してデータの処理を行う際には補助記憶装置から必要なものをメモリに呼び出して使う。

同じコンピュータに搭載される装置同士で比較すると、補助記憶装置はメモリに比べて記憶容量が数桁(数十~数千倍)大きく、容量あたりのコストが数桁小さいが、読み書きに要する時間が数桁大きい。一般的な構成のコンピュータではメインメモリ容量の百倍から千倍程度の容量の固定内蔵ストレージを用意することが多い。

記録原理による分類

補助記憶装置装置は駆動装置(ドライブ)が記憶媒体(メディア)を操作して、記憶素子の物理状態に信号を対応付けて記録する。様々な動作原理の装置があり、主に磁気を利用するもの、レーザー光を利用するもの、電荷(半導体素子)を利用するものに分けられる。

磁気記録方式の補助記憶装置には磁気テープやハードディスク、フロッピーディスクなどがある。平たい媒体表面の磁性体の磁化状態を変化させて信号を記録する装置で、媒体を薄いテープ状にしてリールに巻き取った「磁気テープ」と、平たい円盤(ディスク)状にして中心軸(スピンドル)で高速に回転させる「磁気ディスク」に分かれる。

一昔前まで補助記憶装置の大半を占めていた方式で、現在でもパソコンに内蔵される固定補助記憶装置としてハードディスクがよく用いられる。磁気テープは容量あたりの単価が極めて安いという特徴から、現在でも企業や官公庁などの大規模なデータ保管に用いられることがある。

光学記録方式の補助記憶装置はCDやDVD、Blu-ray Discなどの光学ディスクで、信号を媒体表面の細かな凹凸や化学的な状態の変化として記録し、高速で回転させながらレーザー光を照射して反射光の変化を読み取る。

製造時にデータを記録する読み出し専用ディスクと利用時にデータの書き込みや上書きができる追記型や書き換え型のディスクがあり、前者は映像やソフトウェアなどのコンテンツの販売で、後者は映像の録画やデータのバックアップ、機器間のデータの運搬などでよく利用される。

近年では、読み出し専用メモリ(ROM)から発展した書き換え可能な不揮発メモリ(電源を落としても内容が消えない半導体メモリ)であるフラッシュメモリの大容量化、低価格化が進み、補助記憶装置装置として広く普及している。ハードディスクの代わりに固定内蔵ストレージとして用いられる「SSD」(Solid State Drive)、携帯機器の内蔵ストレージ、データの運搬に用いられるUSBメモリやメモリーカードなどがフラッシュメモリを応用した補助記憶装置である。

<$Fig:storagecomparison|center|true>

ストレージ 【外部記憶装置】

コンピュータの主要な構成要素の一つで、データを永続的に記憶する装置。磁気ディスク(ハードディスクなど)や光学ディスク(CD/DVD/Blu-ray Discなど)、フラッシュメモリ装置(USBメモリ/メモリカード/SSDなど)、磁気テープなどがこれにあたる。

一般的には通電しなくても記憶内容が維持される記憶装置を指し、コンピュータが利用するプログラムやデータなどを長期間に渡って固定的に保存したり、他の機器へのデータの運搬や複製、配布などのために用いられる。

コンピュータ内にはストレージとは別に、半導体記憶素子などでデータの記憶を行う主記憶装置(メインメモリ)が内蔵されており、利用者がプログラムを起動してデータの処理を行う際にはストレージから必要なものをメモリに呼び出して使う。

同じコンピュータに搭載される装置同士で比較すると、ストレージはメモリに比べて記憶容量が数桁(数十~数千倍)大きく、容量あたりのコストが数桁小さいが、読み書きに要する時間が数桁大きい。一般的な構成のコンピュータではメインメモリ容量の百倍から千倍程度の容量の固定内蔵ストレージを用意することが多い。

記録原理による分類

ストレージ装置は駆動装置(ドライブ)が記憶媒体(メディア)を操作して、記憶素子の物理状態に信号を対応付けて記録する。様々な動作原理の装置があり、主に磁気を利用するもの、レーザー光を利用するもの、電荷(半導体素子)を利用するものに分けられる。

磁気記録方式のストレージには磁気テープやハードディスク、フロッピーディスクなどがある。平たい媒体表面の磁性体の磁化状態を変化させて信号を記録する装置で、媒体を薄いテープ状にしてリールに巻き取った「磁気テープ」と、平たい円盤(ディスク)状にして中心軸(スピンドル)で高速に回転させる「磁気ディスク」に分かれる。

一昔前までストレージの大半を占めていた方式で、現在でもパソコンに内蔵される固定ストレージとしてハードディスクがよく用いられる。磁気テープは容量あたりの単価が極めて安いという特徴から、現在でも企業や官公庁などの大規模なデータ保管に用いられることがある。

光学記録方式のストレージはCDやDVD、Blu-ray Discなどの光学ディスクで、信号を媒体表面の細かな凹凸や化学的な状態の変化として記録し、高速で回転させながらレーザー光を照射して反射光の変化を読み取る。

製造時にデータを記録する読み出し専用ディスクと利用時にデータの書き込みや上書きができる追記型や書き換え型のディスクがあり、前者は映像やソフトウェアなどのコンテンツの販売で、後者は映像の録画やデータのバックアップ、機器間のデータの運搬などでよく利用される。

近年では、読み出し専用メモリ(ROM)から発展した書き換え可能な不揮発メモリ(電源を落としても内容が消えない半導体メモリ)であるフラッシュメモリの大容量化、低価格化が進み、ストレージ装置として広く普及している。ハードディスクの代わりに固定内蔵ストレージとして用いられる「SSD」(Solid State Drive)、携帯機器の内蔵ストレージ、データの運搬に用いられるUSBメモリやメモリーカードなどがフラッシュメモリを応用したストレージである。

<$Fig:storagecomparison|center|true>

ハードディスク 【HDD】 ⭐⭐

コンピュータなどの代表的なストレージ(外部記憶装置)の一つで、薄くて硬い円盤(ディスク)の表面に塗布した磁性体の磁化状態を変化させてデータを記録するもの。一台あたりの容量が大きく容量あたりの単価が安いため、パソコンなどに内蔵されるストレージとして標準的な存在となっている。

構造・原理

装置内にはガラスや金属でできたプラッタ(platter)と呼ばれる円盤型の記憶媒体が数枚封入されており、表面には磁性体が塗布されている。これを回転軸で高速(毎分数千回)で回転させ、アームの先端に取り付けられた磁気ヘッドを近接させる。特定の箇所の磁化状態を変化させることでデータを書き込むことができ、状態を読み取ることでデータを読み出すことができる。

プラッタの直径は主流の製品で3.5インチ(約8.9cm)だが、小型の機器向けに2.5インチや1インチの製品も存在する。一台の装置にプラッタが1~8枚程度備え付けられ、通常はその両面を記録に用いる。内部的な制御や区画分けはプラッタごとに行われるが、外部から見た記憶領域としては全体で一つとなる。

他媒体との比較

「ハードディスク」とは硬い円盤という意味だが、これはフロッピーディスクなどのようにプラッタの素材に柔らかいプラスチックフィルムなどを用いる装置と対比した表現である。フロッピーディスクなどは記憶媒体と駆動装置(ドライブ)が分離していてディスクだけを取り外して交換したり持ち運べるが、ハードディスクはディスクとドライブが一体化しているため、「ハードディスクドライブ」(HDD:Hard Disk Drive)とも呼ばれる。

磁気ディスクや光学ディスクなどの中では最も記録密度が高く、同じ世代で比較すると装置(媒体)一台あたりの記憶容量は飛び抜けて大きい。読み書きも高速で、パソコンやサーバなどのコンピュータ製品では基幹的な記憶媒体として広く普及している。ドライブ一体型なこともあり一台あたりの価格が高いことや、振動に弱いという難点もある。

SSDへの置き換え

装置の寸法や接続仕様をハードディスクに揃え、内部の記憶媒体をフラッシュメモリに置き換えた製品はSSD(Solid State Drive)と呼ばれ、ハードディスクの代替として近年急速に浸透している。

読み書き速度が桁違いに速く衝撃にも強いという長所があるが、半導体メモリのため価格が高く一台あたりの容量も少ないという欠点があった。近年では低価格化と記憶容量の向上が劇的に進み、従来のハードディスクの用途を置き換える形で普及が加速している。

接続方式

コンピュータ本体に内蔵されるハードディスクの場合、接続インターフェースとして初期にはIDE/ATA(パソコン向け)やSCSI(サーバ・ワークステーション向け)が、2000年代以降はSATA(Serial ATA)が主に用いられている。独自の筐体を持ちケーブルでコンピュータと繋ぐ外付けの装置もあり、USBやIEEE 1394、eSATAなどの規格で接続される。

SSD 【Solid State Drive】

外部記憶装置(ストレージ)の一つで、記憶媒体にフラッシュメモリを用いる固定型の装置。ハードディスクと同じようにコンピュータに接続し、プログラムやデータの永続的な保存に用いる。

ハードディスクなどの磁気ディスク装置は磁気的に、DVDなどの光学ディスク装置は光学的に信号の読み書きを行うが、SSDは半導体素子に電気的にデータの記録、読み出しを行うため、極めて高速に読み書きすることができる。

また、高速で回転する円盤(ディスク)やモーター、盤上を移動する読み書き装置(ヘッド)といった機械部品がないため、消費電力が少なく、耐衝撃性に優れ、振動や駆動音もなく、装置の形状を小型、薄型、軽量にすることができる。

ただし、フラッシュメモリは書き込みを行うごとに素子が劣化するため、同じ容量なら磁気ディスクより書き換え寿命が短い。この欠点を補うため、多くのSSD製品では、なるべく満遍なく各素子に書き込み動作が分散するよう制御装置が記録位置の選択を行う「ウェアレベリング」と呼ばれる制御を行っている。

また、現在のところ容量あたりの単価は磁気ディスクや光学ディスクよりフラッシュメモリのほうが高額なため、同世代の同じ容量の製品の中では割高となる。コンピュータにSSDとハードディスクを両方搭載し、システムファイルや頻繁にアクセスされるプログラムやデータをSSDに保存して、それ以外はハードディスクに保存するといった使い分けが行われることも多い。

筐体仕様(フォームファクタ)やコンピュータ本体との接続インターフェースは、当初は既存の機器と置き換えられるよう3.5インチ筐体やSATA(シリアルATA)などハードディスクと同じ規格が流用されたが、SSDの高速な読み書き性能や省スペース性を最大限活用すべく、mSATAやM.2、NVMe、SATA ExpressなどSSDにより適した規格も策定され、普及しつつある。

SLC/MLC/TLC/QLC

SSDの記憶媒体に用いられるNAND型フラッシュメモリのうち、一つの記憶素子(メモリセル)に2値(1ビット)のデータを格納する方式を「SLC」(Single Level Cell)、3値以上からなる多ビットのデータを格納する方式を「MLC」(Multi-Level Cell)という。

初期のMLC型は4値(2ビット)を記録する方式だったため、狭義にはこれを指してMLCと呼ぶ。これを3ビット以上と区別する場合は「DLC」(Double Level Cell)と呼ぶこともあるが、この呼称は普及していない。3ビット(8値)記録できるものは「TLC」(Triple Level Cell)、4ビット(16値)のものは「QLC」(Quad-Level Cell)、5ビット(32値)のものは「PLC」(Penta-Level Cell)と呼ばれる。

セルに記録できるビット数が少ない方が動作が高速で信頼性、耐久性(書き換え寿命)も高いが、容量あたりの単価が高くつく。SLC型は記録密度が低すぎるためほぼ廃止されており、多値記録セルで記録密度を高める方向に発展している。

フラッシュメモリ

半導体素子を利用した記憶装置の一つで、何度も繰り返し書き込みができ、通電をやめても記憶内容が維持されるもの。近年、データを永続的に保存するストレージ(外部記憶装置)製品の記憶素子として急激に普及している。

フラッシュメモリは半導体メモリのうち、電源を落としても記録されたデータが消えない不揮発性メモリ(nonvolatile memory)に分類される。電気的に繰り返し自由に消去や再書き込みができる特徴はRAMと同じだが、技術的にはROM(の一種であるEEPROM)に由来するため「フラッシュROM」とも呼ばれる。

素子の構造や動作方式により大きくNAND型とNOR型の二種類に分かれる。最初に開発されたのはNOR型で、バイト単位で高速に読み出しができ、信頼性が高いが、後に開発されたNAND型の方が集積度を高めやすく、書き込みが高速であるという特徴の違いがある。

SLCとMLC

初期のフラッシュメモリはメモリセル(記憶素子)の電荷の有無にデジタル信号の「0」と「1」を対応付ける1ビット記録の素子(SLC:Single Level Cell/シングルレベルセル)が用いられた。後に、セルに投入した電荷量を段階的に識別することで1セルに複数ビットを保存できる素子(MLC:Multi-Level Cell/マルチレベルセル)が開発された。

初期のMLCは4段階識別・2ビット記録だったため、現在でもこれを指してMLCと呼ぶことが多いが、8段階識別・3ビット記録の「TLC」(Triple Level Cell/トリプルレベルセル)や、16段階識別・4ビット記録の「QLC」(Quad-Level Cell/クアッドレベルセル)も開発されており、MLCはこれら多値記録方式全体の総称を指すこともある。

特徴と用途

フラッシュメモリは磁気ディスクや光学ディスクなどに比べ、半導体素子に電気的にアクセスするためデータの読み書き速度が桁違いに速く、ドライブ装置に可動部がないため動作音もなく衝撃や振動にも強い。

ただし、素子の構造上劣化の進みが速く、初期には数百回程度、近年でも数万回程度の再書き込みによって素子が破損することが知られている。この点をカバーするため、制御回路により書き込み回数を各素子に均等に分散させる「ウェアレベリング」(wear leveling)と呼ばれる処理が行われる。

他方式のメディアに比べ価格も桁違いに高く小容量の製品しかなかったが、2000年代半ば頃からは量産効果や技術の進歩により飛躍的に低コスト化され、磁気ディスクなどの用途を奪う形で普及が拡大している。

主な用途としては、スマートフォンなどの携帯情報端末の内蔵ストレージや、数cm角の薄いプラスチックケースに収めたカード型の記憶媒体である「メモリーカード」、指先大の短い棒型や角型のケースに収めUSB端子でコンピュータに接続する「USBメモリ」などがある。

USBメモリ 【USB stick】

コンピュータなどのUSB端子に差し込んで使用する、フラッシュメモリを内蔵した小型の外部記憶装置(ストレージ)。着脱・持ち運びが容易な記憶メディアとして、パソコンなどの情報機器間のデータの移動によく用いられている。

一般的なUSBメモリは親指ほどのサイズの箱型や棒状の機器の先端部がUSBコネクタとなっており、パソコンなどのUSBコネクタに差し込むとハードディスクなどと同じように記憶装置として読み書きできるようになる。

内部には通電しなくても内容が消えない不揮発性の半導体メモリの一種であるフラッシュメモリのICチップが実装されており、USB端子を通じてコンピュータ側から供給される電力(USBバスパワー)により駆動する。

2000年前後から普及し始めた製品カテゴリーで、記憶容量は当初は数十MB(メガバイト)程度の製品から普及し始めたが、近年ではハードディスクやSSDなどのストレージ装置に劣らない数百GB(ギガバイト)から1TB(テラバイト)を超える製品まで存在する。

日本では「USBメモリ」の呼称が浸透しているが、英語では正式な場面では “USB flash drive” と呼ばれることが多い。日常的には様々な呼び方が用いられ、“USB drive”“USB stick”“USB flash”“flash drive”などと呼ばれることが多い。

利点と欠点

極めて小型、軽量で記憶容量が大きく、USB端子があれば読み書きのための特別な装置(リーダー/ライター)やドライバソフトなどが不要で、半導体装置であるため衝撃に強く、読み書き速度も磁気メディアや光学メディアより格段に高速などの利点がある。

一方、磁気ディスクや光学ディスクに比べ容量あたりの単価が高い、寸法や形状の規格や標準がないため大量に保管する際は収納や整理が難しい、同じ可搬型フラッシュメモリ装置のメモリーカードよりは大きくかさばるといった難点もある。

<$Fig:storagecomparison|center|true>

また、フラッシュメモリに共通する特徴として、書き込み動作を繰り返すと次第に記憶素子が劣化していくため、頻繁に何度も消去や書き換えを行う用途には向かない。光学ディスクなどは静電気の放電や水濡れに強いが、USBメモリは電子機器であるためこれらには弱い。

USBメモリの利用

USBの規格には元々、「USB Mass Storage Class」という、記憶装置に対する基本的な操作を提供する仕様が含まれており、USBメモリはこれを利用して読み書きを行うようにすることで、特別なドライバソフトなどをコンピュータのオペレーティングシステム(OS)に導入しなくても利用できるようにしている。

特に準備などをしなくても初めて使用するコンピュータに差し込むだけで即座に読み書き可能となるが、内部にファイルシステムを設けてからファイルやディレクトリを作成するため、FAT32、exFAT、NTFSなどファイルシステムの種類によっては特定の機種で読み書きできない場合がある。

一般的なUSBメモリ製品はUSB Type-Aコネクタを備えているが、近年の最新USB規格ではコネクタ仕様がUSB Type-Cに統一されたため、Type-Cコネクタの製品やType-AとType-Cの両対応になっている製品もある。iPhoneやiPadなど米アップル(Apple)社製品で利用できるようにするためLightningコネクタを備えた製品もある。

microSDメモリーカード 【マイクロSDメモリーカード】

SDメモリーカードのサイズ・形状についての規格の一つで、最も小さいもの。サイズは幅11mm×長さ15mm×厚さ1mmで、重量は1gに満たない。スマートフォンやデジタルカメラ、家庭用ゲーム機など小型の携帯情報機器でよく利用されている。

2005年に米サンディスク(SanDisk)社の「TransFlash」カードの仕様を正式にSDカード規格の一部として採用したもので、従来の小型SDカードである「miniSD」仕様よりもさらに一回り小さくなっている。サイズ以外の仕様はSDメモリーカードと共通のため、形状を適合させるだけの簡易なアダプタを通してSDカードスロットで読み書きすることができる。

microSDHC/microSDXC/microSDUC

<$Img:microSD.jpg|right|SDカードとのサイズ比較[PD]|https://commons.wikimedia.org/wiki/File:SanDisk_Memory_Card_with_Adapter.jpg>「microSD」の名称は、その後に追加された「microSDHC」(SDHCカードの縮小版)、「microSDXC」(SDXCカードの縮小版)、「microSDUC」(SDUCカードの縮小版)を含む総称、あるいは実際にはこれらのうちのいずれかを指すことが多い。

それらの場合も、サイズ・形状以外の仕様は元になったフルサイズのカードのものと同等である。現在では初代のmicroSDカードはほとんど出回っておらず、「microSD」とだけ記載されていても実際にはこれらの後継規格のいずれかを意味する場合がほとんどである。

miniSDメモリーカード (ミニSDメモリーカード)

SDメモリーカードのサイズ・形状についての規格の一つで、通常のSDカードより一回り小さいもの。2003年に策定された規格で、microSDカードが登場するまでは携帯機器などに用いられた。

サイズは幅20mm×長さ21.5mm×厚さ1.4mmで、重量は約1g。発表時において世界最小というサイズが特徴で、それまでのSDメモリーカードと比べて面積で40%減、容積で60%減、重量で50%減となっている。

制御回路の仕様や駆動電圧、データ転送速度などはフルサイズのSDカードと同じだが、ライトプロテクト(書き込み禁止)スイッチは面積の問題で実装されておらず、フルサイズ用のスロットに差し込めるようにするためのアダプタにスイッチが付属する。また、将来の拡張性を考慮して端子が2本追加され、11本になっている。

オリジナルのSDカードの縮小版であるminiSDカード、SDHCの縮小版であるminiSDHCが策定されたが、SDHC世代ではすでにmicroSDに取って代わられほとんど使われておらず、SDXC規格ではminiSDサイズの仕様は削除された。

光ディスク 【光学ディスク】

表面にレーザー光を照射してデータの読み書きを行う円盤(ディスク)型の記憶媒体のこと。容量や用途によってCDやDVD、Blu-ray Discなどの種類があり、それぞれ記録方式によって読み出し専用型、追記型、書き換え可能型に分かれる。

データを永続的に保存するストレージ(外部記憶装置)の一種で、プラスチック製のディスクをドライブ装置内の回転軸(スピンドル)で高速に回転され、光学ヘッドを近づけてレーザー光を照射し、反射光の変化を読み取ってデータに変換する。

ハードディスクなどの磁気ディスクに比べ記録密度や容量単価、読み書き速度などでは劣るが、ディスクが安価でドライブと分離式である特徴を活かし、ハードディスクのバックアップや、ソフトウェアや音楽、映像の販売などでよく利用されている。

読み出し専用型と記録型

最初に実用化されたのは工場での製造時にデータを記録し、後から追記や書き換えができない「読み出し専用」(read only)型のディスクだった。これはディスク表面に同心円または渦巻き状に設けられたトラックに微細な窪み(ピット)を設け、窪みの有無による反射光の変化で信号を表現する。

後に、ドライブ装置内で読み取り時とは異なる特性のレーザー光を照射して記録面の化学的な状態を変化させ、利用者側でデータを記録できる書込み可能なディスクが開発された。一度だけ記録でき、消去や書き換えができない「追記型」(recordable)と、何度も消去と再書き込みができる「書き換え可能型」(rewritable)に分かれる。

CD-ROMやDVD-ROM、BD-ROMは読み出し専用型、CD-RやDVD-R、DVD+R、BD-Rが追記型、CD-RWやDVD-RW、DVD+RW、DVD-RAM、BD-REが書き換え可能型に分類される。読み出し専用型はソフトウェアやコンテンツの販売に、書き込み可能型はデータのバックアップや運搬、配布などに用いられている。

歴史

1970年代に映像や音声をアナログ信号として記録する、直径20cmまたは30cmの「レーザーディスク」(LD:Laser Disc)が実用化され、映像ソフトの販売やカラオケなどに用いられた。

1980年代には音声をデジタル信号として記録する、直径8cmまたは12cmの「コンパクトディスク」(CD:Compact Disc)が実用化され、アナログレコードやカセットテープに代わり音楽ソフトの販売用媒体として広く普及した。汎用的にデータを記録できる「CD-ROM」はゲームソフトやパソコン用ソフトの販売用媒体としても広く使われた。

1990年代には様々なデジタルデータを記録できる直径8cmまたは12cmの「DVD」(Digital Versatile Disc)が実用化され、LDやビデオテープに代わって映像ソフトの販売や映像の録画などで標準的な記録媒体となった。コンピュータ向けの用途でもCDに代わってDVDが広く用いられるようになった。

2000年代にはDVDをさらに大容量化した「Blu-ray Disc」(ブルーレイディスク)が登場し、映像ソフトの販売などに用いられているが、DVDを超える大容量や高画質を求める消費者が少数に留まったことや、コンピュータ用の可搬記憶媒体としてはUSBメモリやメモリーカードなど光ディスク以外の製品が浸透したことなどから、DVDを置き換えるほどには普及していない。

CD 【Compact Disc】

薄い樹脂製の円盤(ディスク)の表面に微細な加工を施し、高速で回転させてレーザー光を照射することで信号の読み書きを行う光ディスクの一つ。1980年にソニーと蘭フィリップス(Philips)社が開発した。

音楽ソフトを販売するための記録媒体として開発され、アナログレコードやカセットテープに代わって標準的な音楽販売メディアとして再生機器が広く普及した。後に利用者側の機器でデータを記録できる追記型(CD-R)や書き換え型(CD-RW)の仕様も策定され、コンピュータの補助的なデータ記憶メディア、ソフトウェア販売メディア、配布・交換用メディアとしても広まった。

CDは直径8cmあるいは12cmの中心に穴の空いたプラスチック製の薄いディスクで、ドライブ装置に挿入して高速で回転させる。近接させた光ピックアップから回転する記録面上の特定の位置にレーザー光を照射し、反射した光をセンサーで検知して記録されたデータを読み取る。書き込み型の場合はレーザー光で記録面を加熱して光の反射率を変化させることによりデータを書き込む。

記憶容量は一般的な12cmディスクの場合、データ650MB(メガバイト)または音声74分を記録できる製品と、700MBまたは80分の製品、800MBまたは90分の製品がある。8cmディスクは155MB/18分から300MB/34分まで数種類がある。標準のデータ転送速度は1.2Mbps(メガビット毎秒)で、これを「等速」「1倍速」などと呼び、その整数倍に高速化された機器が一般的となっている(最高は48倍速)。

ディスクへデータ記録する標準形式もいくつか定められており、音声を記録するCD-DA(CD Digital Audio)とコンピュータのファイルを記録するCD-ROM(CD Read Only Memory)が最も一般的に用いられる。動画を記録できるVideo CDやCDV、画像を記録するCD-GやPhoro CD、マルチメディアタイトルを記録できるCD-IやCD-ROM XAなどの規格も策定されたが、いずれもあまり普及しなかった。

CDの仕様や技術を踏襲しながら容量やアクセス速度を高速化した光ディスク規格がいくつかあり、主に動画の記録に用いられるDVDや、DVDをさらに大容量化したBlu-ray Disc(BD/ブルーレイディスク)などがある。DVD機器のほとんどはCDも読み込むことができ、BD機器はDVDに対応するが、BD機器の中にはCDのサポートを打ち切るものも現れている。

商標および規格名としての「CD」は “Compact Disc” の略で、イギリス英語の “disc” の綴りが用いられる。CD以降、光学ディスクの商標や規格名には “disc” 表記が好んで用いられる傾向にある一方、磁気ディスク系では “disk” 表記(アメリカ英語に由来)が一般的であり、あたかも意味上の違いや使い分けがあるように見えるが、単に慣例的なもので深い意味はない。

DVD

コンピュータや映像機器などでデータ記録メディアとして利用される光学ディスクの一種。細かい溝の彫られた樹脂製の円盤で、ドライブ装置内で高速回転させて溝に沿ってレーザー光を照射し、データの読み取りや書き込みを行う。規格の策定は業界団体のDVDフォーラムが行なっている。

サイズは直径8cmあるいは12cmで、中心にドライブ装置の回転軸を挿入する穴が空いている。両面記録、2層記録に対応しており、12cmディスクの記憶容量は片面1層で4.7GB、片面2層で8.54GB、両面1層で9.4GB、両面2層で17.04GBとなっている。

<$Fig:dvdmedia|center|true>

コンテンツやソフトウェアの販売などに用いられる読み出し専用の「DVD-ROM」の他に、一度だけ書き込める(消去・上書きできない)「DVD-R」、書き換え可能な「DVD-RW」「DVD-RAM」がある。記録型メディアを巡って業界内で規格の分裂があり、別の業界団体DVD+RWアライアンスが独自に規格を定めた「DVD+R」「DVD+RW」もある。

映像や音声を記録するための標準のディスクフォーマットやファイル形式のセットなども定められており、映像とそれに付随する音声・字幕を記録するための「DVD-Video」が映像ソフトの流通などに、「DVD-VR」がHDDレコーダーなどでよく利用される。商品としての「DVD」の呼称はDVD-Video形式の映像ソフトを指す場合がある。

<$Fig:dvdapplication|center|true>

Blu-ray Disc 【ブルーレイディスク】

DVDに次ぐ第3世代となる大容量の光ディスクの標準規格の一つ。CDやDVDと同じ直径12cmの樹脂製ディスクを用い、片面一層あたり25GB(ギガバイト)の高密度なデータの記録が可能。

ディスクをドライブ装置内で高速で回転させながら近接させた光ピックアップからレーザー光を照射して信号の読み書きを行う。片面一層あたり25GBを記録でき、両面記録や複層記録にも対応する。標準(1倍速)のデータ伝送速度は4.5MB/s(メガバイト毎秒)。

名称の由来は波長405nm(ナノメートル)の青色レーザー(正確には青紫色)を用いる点で、記録面上のトラックピッチ(隣接するトラック間の距離)をDVDの約半分の320nmに、最短ピット長を140nm程度に微細化している。

<$Fig:bluraymedia|center|true>

DVDより高画質・長時間収録が可能な民生機器での映像記録を主な用途と見込んでおり、動画・音声の記録形式(BDMV/BDAV)や著作権保護機能(DRM)が標準で盛り込まれている。

CDやDVDと同様、工場でのディスク製造時にデータが記録され利用者側で追記・書き換えできない読み出し専用の「BD-ROM」と、利用者が一度だけ記録することができる追記型の「BD-R」(BD Recordable)、何度も繰り返し消去・再書き込みが可能な書き換え型の「BD-RE」(BD Rewritable)の3種類のディスク仕様が規定されている。

<$Fig:blurayvideo|center|true>

主に映像ソフトやゲームソフトの販売、デジタル家電での録画、コンピュータのストレージ(外部記憶装置)などの用途で標準的に用いられ、パソコンやハードディスクレコーダー(ビデオレコーダー)、家庭用ゲーム機などの多くが対応しているが、機器側のほとんどがDVDとの両対応であることもあり、同じ用途でDVDも根強く使われ続け、置き換えはあまり進んでいない。

Blu-ray Disc Association (BDA/ブルーレイディスクアソシエーション)

Blu-ray Discの規格策定や普及促進を行う業界団体。ソニー、松下電器産業(現パナソニック)、シャープ、パイオニア、日立製作所、蘭フィリップス(Philips)社、韓LG電子、韓サムスン電子、仏トムソン・マルチメディア(Thomson Multimedia/現Technicolor)社らが2002年に設立したBlu-ray Disc Foundersが2004年に改称されて発足したもの。

現在では対応機器メーカーや映像産業から約140社が加盟しており、規格策定・更新の他に会員企業への技術情報の提供や、「Blu-ray Disc」の名称や「b」をかたどったロゴなどの商標について利用許諾などを行っている。

インターフェース 【I/F】

接点、境界面、接触面、接合面、仲立ち、橋渡しなどの意味を持つ英単語。IT分野では、二つの主体が接続・接触する箇所や、両者の間で情報や信号などをやりとりするための形式や手順などを定めた決まりごとを意味する。

例えば、パソコンと周辺機器はコネクタ(端子)およびケーブルによって接続されるが、端子の形状や電気信号の形式が製品ごとにバラバラでは互いに接続することができない。そこで、「USB」などの標準規格を定めてこれに沿って設計することで、製品の種類やメーカーによらず相互に接続できるようになる。このような複数の対象を繋ぐ接点のことをインターフェースという。

機器(ハードウェア)やソフトウェア、人間(利用者)などが互いに繋がりを持ち情報を伝達する接点のことをインターフェースという。機器間、ソフトウェア間、機器-ソフトウェア間、人間-機器間、人間-ソフトウェア間など様々な類型がある。

機器や装置、回路などの物理的な接続部を「ハードウェアインターフェース」、コンピュータプログラム間の連携仕様を「ソフトウェアインターフェース」、システムと利用者の間で情報をやり取りする仕組みを「ユーザーインターフェース」(主にソフトウェアの場合)あるいは「マンマシンインターフェース」(主に機械の場合)という。

人工物間のインターフェースは、接点の仕様や情報の表現形式、信号の伝送手順などがばらばらでは繋げることができないため、双方が共通の仕様に基づいて設計されていることが重要となる。各分野で様々なインターフェース規格が策定・公開されている。

ハードウェアインターフェース

ハードウェアインターフェースとは、複数の機器や装置、回路などを接続して通信する際の仕様で、コネクタ(端子)の寸法や形状、ケーブルや信号線の数や特性、信号の表現形式や伝送手順などで構成される。無線接続の場合は電波の周波数や信号の形式などが含まれる。

機器内部の部品間の信号伝送、機器本体と周辺装置のデータ伝送、機器間のデータ通信など、目的や用途に合わせて様々なインターフェースが存在する。例として「USB」「SATA」「IEEE 1394」「PCI Express」「HDMI」などの規格、およびこれらの標準コネクタ、ケーブル類などが挙げられる。

また、接続先がコンピュータネットワーク(LAN)の場合は特に「ネットワークインターフェース」と呼ばれることもあり、「イーサネット」(Ethernet)や「Wi-Fi」(無線LAN)などの通信規格、およびコネクタや差込口(ポート)、拡張カード、通信チップなどを指す。

ソフトウェアインターフェース

ソフトウェアインターフェースは、プログラム間でデータや処理依頼などをやり取りする手順や形式を定めた仕様である。代表的なものとして、オペレーティングシステム(OS)やミドルウェア、ライブラリなどの機能を外部から呼び出して利用するため規約である「API」(Application Programming Interface)がある。

他にも、アプリケーションとシステム(OS)を繋ぐ「ABI」(Application Binary Interface)や、実行中のプログラム間で通信するための「プロセス間通信」の仕様なども含まれる。さらに広義には、ネットワークを介してソフトウェア間で連携するためのプロトコル(通信規約)やデータ形式、複数のソフトウェアで共通して利用される汎用的なファイル形式などを含む場合がある。

ユーザーインターフェース

<$Img:Interface2.jpg|right|Edar|https://pixabay.com/photos/touch-screen-mobile-phone-ipad-1023966/>

ユーザーインターフェース(UI:User Interface)は、コンピュータなどの機器が利用者に対して情報を伝達する方式や、逆に、利用者が情報を入力するための仕組みを指す。

古くから使われている方式として、コンピュータが画面(古くはプリンタ)に文字で情報を提示し、利用者がキーボードなどから文字で指示を入力する「CUI」(Character User Interface/キャラクタユーザーインターフェース)あるいは「CLI」(Command Line Interface/コマンドラインインターフェース)がある。現在でも業務システムや技術者向けのシステムなどで広く利用されている。

一方、画面に図形や画像を多用した表示を行い、マウス操作やタッチ操作などで画面上の位置を指示する操作方法を基本とする方式を「GUI」(GUI:Graphical User Interface/グラフィカルユーザインターフェース)という。パソコンやスマートフォンなど一般消費者向けのコンピュータ製品で広く普及している。

「ユーザーインターフェース」は主にコンピュータやソフトウェアと利用者(ユーザー)の間の情報のやり取りに着目した用語だが、より広義に、機械と人間のやり取り、およびその接点となる装置や仕組みなどを表す用語として「マンマシンインターフェース」(HMI:Human Machine Interface)がある。自動車におけるハンドルやペダル、レバー、ボタン類などが該当する。

ポート

「港」という意味の英単語で、ITの分野では機器やソフトウェアが外部の別の主体と接続・通信するための末端部分のことを比喩的にこのように呼ぶ。

最も一般的な用法として、機器の筐体などに設けられたケーブルやコネクタの差込口のことをポートという。コンピュータ本体には周辺機器やネットワークと接続するためのポートが設けられており、接続方式の名称を冠してUSBポートやLANポート(Ethernetポート)などのように呼ぶ。

物理的な端子そのものだけでなく、ソフトウェアが端子を通じて外部とデータを入出力するできるよう、オペレーティングシステム(OS)などによって抽象化されたインターフェース(WindowsのCOMポートなど)のことを指す場合もある。

TCP/IP通信のポート

インターネットなどで標準的に用いられるプロトコル(通信手順)であるTCP/IPでは、同じコンピュータ内で動作する複数のソフトウェアのどれが通信するかを指定するためにポート番号(port number)が用いられ、これを略してポートということがある。

IPにはネットワーク上で機器を識別・指定するIPアドレスという番号が定められており、データの送信元や宛先を記述することができるが、これだけでは通信内容が何のプロトコルで、機器上のどのプログラムが扱えば良いかを通信相手に伝えることができない。

このため、IPの一階層上のTCP(Transmission Control Protocol)やUDP(User Datagram Protocol)には、同じアドレス上でプロトコルや対象プログラムを識別・指定する番号としてポート番号が用意されている。IPアドレスを住所およびアパート名とするならば、ポート番号は部屋番号のようなものである。

ソフトウェアの移植版

ある機種やオペレーティングシステム(OS)で動作するよう開発されたソフトウェアを、別の環境で動作するよう修正したものをポートということがある。移植作業のことは「ポーティング」(porting)という。

USB 【Universal Serial Bus】

主にコンピュータと周辺機器を繋ぐのに用いられるコネクタおよびデータ伝送方式の標準規格。キーボードやマウス、プリンタ、外部ストレージ装置などの接続方式として広く普及しており、スマートフォンなどモバイル機器の充電や外部との通信でも標準的な接続方式となっている。

金属線ケーブルで機器間を結び、データ通信や電力供給を行うことができる。シリアル伝送方式を採用したバス型(信号線共有型)の接続規格で、一つの伝送路を最大127台までの機器で共有することができる。

コンピュータ側には通常1~4つ程度のポート(差込口)が用意されており、これで足りない場合は「USBハブ」と呼ばれる集線装置を介してポートを増やすことができる。機器本体の電源を落とさずにコネクタを着脱する「ホットプラグ」に対応している。

初期に普及した規格(USB 1.1)では12Mbps(メガビット毎秒)、最新の規格(USB4)では80Gbps(ギガビット毎秒)までの通信速度に対応する。当初はキーボードやマウスなどの入出力装置から普及が始まったが、通信速度が向上するに連れて、ネットワークアダプタ(EthernetアダプタやWi-Fiアダプタ)や外部接続の光学ドライブ、ハードディスクなどに利用が広がっていった。

フラッシュメモリを内蔵した親指大のストレージ装置である「USBメモリ」もよく使われており、以前のフロッピーディスクや書き込み型光学ディスク(CD-R/DVD-Rなど)に代わって手軽なデータの受け渡し手段として普及している。日常的にはこれを指して「USB」と呼ぶことも多い。

コネクタ形状

<$Img:USB-Connector.jpg|right|USB-Type Aコネクタ[PD]|https://commons.wikimedia.org/wiki/File:USB-Connector-Standard.jpg>

コンピュータ側を想定した大きなコネクタ形状と、周辺機器側を想定した小さなコネクタ形状が規定されている。当初はコンピュータ側は長方形の「USB Type-A」、プリンタなどケーブルが別になっている周辺機器では正方形に近い「USB Type-B」が用いられた。

USB 2.0ではデジタルカメラなど小型の機器向けに、小さな台形に近い形状の「ミニUSB」(Mini-A/Mini-B/Mini-AB)が規定された。Aはコンピュータ側、Bは携帯機器側、ABは携帯機器同士の接続(USB On-The-Go)用だったが、B以外は廃止になり、Type-AとMini-Bを両端に持つケーブルが一般的となった。Miniよりもさらに小型化された「マイクロUSB」(Mirco-A/Micro-B)も規定され、スマートフォンやタブレット端末などでよく利用されている。

USB 3.0ではType-BとMicro-Bの形状が変更になり、従来と互換性のない形になった。新たな小型のコネクタ仕様として「USB Type-C」が規定され、これまでのすべてのコネクタを置き換える新世代の標準として普及が進められている。USB4以降はType-Cのみが標準とされ、過去のコネクタ形状は廃止となった。

給電機能

<$Img:USB-Bus-Power.png|right|>

USBにはデータ通信だけでなくケーブルの金属線を利用した送電(電力供給)についての仕様も定めており、装置を駆動するのに必要な電力の供給やバッテリー充電などに用いられている。小さな電力であれば電源ケーブルをコンセントから別に引いてくる必要がなく、利便性が大きく向上した。

初期の規格から存在する「USBバスパワー」では、電圧5V、電流500mA、電力2.5Wまでの給電が可能で、キーボードなどの大きな電力を必要としない装置の駆動に用いられる。プリンタやハードディスクなど消費電力の大きな機器には足りないため、電源ケーブルで別途給電する必要がある。スマートフォンなど小型の機器や携帯機器ではUSBバスパワーが標準の充電方式になっていることも多い。

USB 3.1では従来より大電力の「USBパワーデリバリー」(USB PD:Power Delivery)が導入され、USB Type-Cケーブルを用いて100Wまでの電力供給が可能となった。液晶ディスプレイやコンピュータ本体などの電源ケーブルを代用できるほか、給電方向の切り替え、数珠繋ぎに他の機器を経由しての給電にも対応している。

USBデバイスクラス (USB device class)

<$Img:USB-Icon.png|right|>

USBでは機器の種類ごとに標準の動作仕様と対応するドライバ仕様を「USBデバイスクラス」として規定しており、この範囲内の動作についてはオペレーティングシステム(OS)に付属する汎用ドライバだけで利用することができる。USBメモリを別のコンピュータに挿してすぐにデータが移せるのもこの仕組みを利用している。

以前の接続規格では個別の製品ごとに必ず製造元が提供するドライバソフトを導入しなければ通信できなかったが、デバイスクラスで規定された一般的な機能は個別のドライバ不要で動作する。機器に固有の機能を利用したい場合などには、これまで通り付属のドライバを導入して利用する形となる。

HDMI 【High-Definition Multimedia Interface】

映像や音声をデジタル信号として伝送するインターフェース規格の一つ。パソコンやスマートフォン、ゲーム機、デジタル家電などと、テレビ、ディスプレイなどの表示装置を接続する方式の標準として広く普及している。

ケーブルやコネクタ、信号形式などの物理的な仕様と、データの伝送制御についての仕様を定めている。1本のケーブルで映像信号、音声信号、制御信号をすべて合成して送受信するため、取り回しが容易である。データ圧縮やアナログ信号への変換などを行わず直接デジタルデータとして出力機器まで伝送するため、伝送途上で品質が劣化することがない。

映像や音声をそのまま伝送するのではなく、コピー防止技術の「HDCP」(High-bandwidth Digital Content Protection)によりデータを暗号化して送受信する。認証を受けた正規の出力先以外の装置で伝送信号を読み取って、映像や音声のデジタルコピーを作成することはできないようになっている。

コネクタの種類は「タイプA」から「タイプE」までの5種類が規定されている。このうち、パソコンやディスプレイなど据え置き型の機器に用いられる標準的なタイプAと、デジタルビデオカメラなどに用いられるやや小型の「タイプC」(ミニHDMI)、デジタルカメラやスマートフォンなどに用いられる小型の「タイプD」(マイクロHDMI)がほとんどを占める。

異なる製造元の製品間で互換性を確保するための認証プログラムがあり、HDMI対応製品は検査機関による試験を受けて合格しなければならない。また、対応製品のメーカーはライセンス管理団体に加盟し会費および製品一つあたりに賦課されるロイヤリティを支払わなければならず、ケーブルの価格が他方式より高額であると指摘されることが多い。

歴史

コンピュータとディスプレイのデジタル伝送仕様「DVI」(Digital Visual Interface)を発展させた仕様で、物理層の信号伝送に「TMDS」(Transition-Minimized Differential Signaling)を用いるなど共通点が多い。暗号化に対応したことで著作権で保護されたコンテンツのデジタル出力が可能になった。

最初の規格であるHDMI 1.0は2002年に発表され、米シリコンイメージ(Silicon Image、現Lattice Semiconductor)社を中心とする企業連合が規格を策定した。動画は最高でフルHD(1920×1080)サイズ、毎秒60フレーム(1080/60p)に対応し、音声はサンプリング周波数192kHz、量子化24ビットの品質を最大8チャンネルまで同時に伝送できる。

2006年の「HDMI 1.3」では48bppまでの色深度に対応し、2009年の「HDMI 1.4」ではタイプC(ミニHDMI)、タイプD(マイクロHDMI)コネクタの追加、USB Type-Cコネクタへの対応、4K解像度(3840×2160、4096×2160)への対応などが行われた。2017年の「HDMI 2.1」では8K解像度(7680×4320)や可変リフレッシュレート(VRR)に対応した。

DisplayPort 【DP】

コンピュータとディスプレイ装置を接続し、映像や音声をデジタル方式で送受信するインターフェース規格の一つ。ケーブルや端子、信号などの仕様を定めたもので、業界団体のVESA(Video Electronics Standards Association)が策定している。

従来、パソコンからディスプレイに映像を出力するのに用いられてきた、いわゆる「アナログVGA」(VGA端子)や「DVI」(Digital Visual Interface)を置き換える目的で開発された仕様である。これらよりコンパクトで薄型のコネクタを使うため、携帯機器にも端子を設けやすくなっている。

DisplayPortは主にパソコンで用いられており、テレビやHDDレコーダー、家庭用ゲーム機などのデジタル機器では同じデジタル接続インターフェースの「HDMI」(High-Definition Multimedia Interface)が普及している。ディスプレイ製品などは両対応の機種も多い。

主な仕様

1本のケーブルで映像と音声を多重化して伝送したり、複数のディスプレイを接続する際に数珠つなぎ(デイジーチェーン)に接続することができる。コンテンツの著作権保護は当初独自方式の「DPCP」(DisplayPort Content Protection)を用いていたが、HDMIなどで用いられる「HDCP」(High-bandwidth Digital Content Protection)を用いるよう改められた。

DisplayPortのケーブルでは最大で4対の信号線を用い、それぞれ独立にシリアル伝送を行う。この伝送路は「レーン」と呼ばれ、当初の仕様では2.7Gbps×4で最高10.8Gbps(実効8.64Gbps)、DisplayPort 2.0では20Gbps×4で最高80Gbps(実効77.4Gbps)のデータ伝送が可能となっている。

当初の仕様ではフルHD(1920×1080)の映像をリフレッシュレート144Hzで伝送できたが、DisplayPort 1.2では4K解像度(3840×2160)を75Hzで伝送できるようになり、最新のDisplayPort 2.0では8K解像度(7680×4320)を60Hzで伝送することができる。

コネクタ形状

標準サイズのコネクタは幅16.1mm×高さ4.76mmで、片方の端に誤挿入防止のための切り欠きがある。携帯機器向けに小型の「Mini DisplayPort」が用意されており、こちらは幅7.5mm×高さ4.6mmとなっている。ピン数(20本)や信号形式、伝送性能などに違いはない。

また、ノートパソコンなどの筐体内で液晶パネルに信号を伝送する方式として「eDP」(embedded DisplayPort)も策定されている。DisplayPort 1.3からは標準コネクタの代わりにUSB Type-CポートにDisplayPort信号を流すことができる「DisplayPort Alt Mode」(DisplayPort代替モード)が用意された。

ポインティングデバイス

コンピュータの入力装置の分類の一つで、画面上での入力位置や座標を指定する機器の総称。マウスやタッチパネル、ペンタブレット、タッチパッド、トラックボール、ジョイスティックなどの種類がある。

画面内で操作を行いたい位置を入力することができ、表示された要素を指定して処理や操作を指示することができる。キーボードなどから文字で指示を与える方式に比べ、直感的に操作でき、操作法に習熟していない状態でも指示を出しやすい。

マウスなど手元で操作する機器の場合、画面上で対応する現在位置を示す絵記号が表示され、これを「ポインタ」(pointer)あるいは「カーソル」(cursor)という。手元の機器を操作すると、その動きに応じて画面上のポインタが移動するため、指示したい場所にポインタを重ねて操作を行う。

タッチパネル(タッチスクリーン)の場合には画面に接触位置を検知するセンサーが内蔵されており、指やペンなどで画面に直接触れ、その位置に操作の指示を行なうことができる。画面上にはポインタなどは表示されないことが多い。

アイコンやウィンドウなどのグラフィック表示とポインティングデバイスによる位置入力を基本とする操作体系(ユーザーインターフェース)を「GUI」(Graphical User Interface)という。現代では一般の利用者が使うコンピュータ製品のほとんどがGUIを備えており、何らかの形でポインティングデバイスを用いる。

マウス

コンピュータの入力装置の一種で、平らな面の上で卵大の装置を動かし、移動量や方向を指示するもの。姿がネズミに似ていることからこのように呼ばれる。表側には一つから数個のボタンがあり、決定やキャンセルなどの指示を伝えるのに用いられる。

画面上には現在位置を示す小さな絵記号が表示され、これをマウスポインタ(mouse pointer)あるいはマウスカーソル(mouse cursor)という。面に接する裏側には移動を検知するセンサーが搭載されており、手で軽く押さえて盤上を滑らせると、その方向や速さを検出してコンピュータ本体に伝え、画面上のポインタが同じように移動する。利用者から見て手前側が画面下方向に、奥が上方向にそれぞれ対応している。

表側の指のかかる部分にボタンがあり、これを押して素早く離す動作(クリックという)を行うと、ポインタの指し示す位置にある対象物を選択・指定された状態にすることができる。ボタンが左右に分かれて2つある場合は、右ボタンと左ボタンで機能や役割が異なる。左右のボタンの間に回転する車輪状の部品(ホイールという)が組み込まれた製品もあり、これを回転させたり押し込む操作が利用できる。

最初に実用化されたのは内部にゴムなどでできたボールを仕込んだもので、メカニカルマウスあるいはボールマウスと呼ばれる。内部にはボールの回転を検知するセンサーがあり、裏側からボールの一部を露出させて、面上を動かすと連動してボールが転がる仕組みである。現在普及しているのは、裏面に光源と光センサーがあり、接地面からの反射光の変化を読み取って移動を検知する光学式マウス(オプティカルマウス/レーザーマウス)である。

マウスの感度

マウスの感度(センサーの分解能)を表す性能指標として「カウント数」という単位を用いることがある。物理的にどのくらいの距離動いたら1単位の移動としてコンピュータに伝達するかを表す値で、1インチあたりの検出回数を「dpi」(dot per inch/ドット毎インチ)という単位で表す。

例えば、分解能400dpi(400カウントとも表記される)の製品の場合、手で400分の1インチ移動させるとコンピュータ本体へ信号が送られ、対応する距離だけ画面上のポインタを移動させる。コンピュータ側の設定によるが、1カウントあたり1ピクセル移動させる設定の場合、1インチの移動が画面上で400ピクセルの移動に相当する。

感度が高ければ微妙な動きも検知することができるが、高すぎるとわずかな移動でポインタが大きく動いてしまい、かえって使いにくくなってしまうため、スイッチなどでカウント数を切り替えて好みの値に設定できるようになっている製品も多い。

ディスプレイ

表示(する)、展示(する)、陳列(する)、掲示(する)、露呈(する)、誇示(する)、展示品、飾り付け、見せる、示す、などの意味を持つ英単語。ITの分野では、コンピュータなど情報機器の出力装置の一つで、画面を発光させて像を映し出す表示装置を指すことが多い。

コンピュータの操作画面を映像として電気的に映し出し、処理状況の変化や利用者の操作に即時に反応して表示内容を変化させることができる。データとして記録された動画像を再生・表示することもできる。「モニター」(monitor)とも呼ばれる。

コンピュータ本体とケーブルなどで接続する単体の機器と、コンピュータの筐体の一部に埋め込まれて利用される装置がある。動作原理はテレビ受像機と同じであるため、テレビの中にはコンピュータに接続してディスプレイとして使うことができるものもある。

ディスプレイ以前に主要な出力装置として利用されていたのは印字装置(プリンタ)であり、状況や操作を表示内容にリアルタイムに反映する特徴は画期的で便利な特性だった。現代では対面利用のパソコンなどではほぼ必ずディスプレイを利用するが、サーバなど対面で操作しない用途では用意しないこともある。

ディスプレイの構造

ディスプレイの画面は格子状に規則正しく並んだ微細な画素(ドット/ピクセル)から成り、その発光状態を電気的に制御してコンピュータから受信した映像信号を表示する。初期の装置は明暗2色(白黒や緑と黒など)のモノクロ表示だったが、現在では一つの画素を光の三原色に対応する微細な素子で構成し、カラー表示できるものが一般的となっている。

画面(画素)そのものが発光する方式(CRT、有機ELなど)と、画面の背後に設置した光源(蛍光灯やLEDなど)からの光の透過度を制御して前面に光を発する方式(透過型液晶など)、太陽光など前面からの光の反射を利用する方式(反射型液晶など)がある。

ディスプレイの種類

最初に実用化されたのは「CRTディスプレイ」(CRT display)で、筐体奥の電子銃から電子線を発射し、蛍光面に衝突させて発光させる「陰極線管」(CRT:Cathode Ray Tube/ブラウン管)を利用したものだった。奥行きのある箱型の形状で重量が重く、消費電力が大きいが、発色が鮮明で視野角が広く、応答速度が速いという特徴がある。

近年広く普及しているのは薄型、軽量、低消費電力の「液晶ディスプレイ」(LCD:Liquid Crystal Display)で、据え置き型の機器のほかにも、携帯機器の筐体に備え付けられた表示画面としても幅広く採用されている。当初欠点とされた視野角の狭さや応答速度の遅さ、発色の鈍さなども他の方式と遜色ないレベルに改善され、画面の大型化、画素の高密度化が進んでいる。

近年では、液晶と同じ薄型軽量で、より消費電力が少なく発色が鮮明な「有機ELディスプレイ」(OELD)も本格的に実用化され、スマートフォンなどに採用され普及が進んでいる。

ヘッドマウントディスプレイ 【HMD】

ゴーグルやヘルメット、眼鏡のような形状の、頭部に装着して使用する表示装置。目を覆うように頭部に固定すると、眼前の小さな表示面にコンピュータなどから送られてきた像が投影され、見ることができる。

頭部装着型のディスプレイ装置で、装着者の視界全体を覆うように像を写すものと、映画館のように少し離れた場所に大画面の表示装置が現れたように見えるものがある。表示面をハーフミラーにしたり、外界を写す小さなビデオカメラを内蔵するなどして、眼前の外の光景が見えるようになっている製品もあり、「透過型ヘッドマウントディスプレイ」などと呼ばれる。

左右の表示面に少しずつ違った映像を表示することで立体感や奥行きの感じられる3次元的な表示を可能としたものや、身体の移動や頭部の動きをセンサーで検知して表示内容に反映させることで映像世界内への没入感を高めることができる製品もある。

人間の感覚器官に働きかけ現実感のある環境を人工的に作り出す技術を「VR」(Virtual Reality:バーチャルリアリティ/仮想現実/人工現実感)というが、コンピュータによりリアルタイムに生成した映像をHMDに表示するシステムはVRを実現する方式の中でも特に有望なものとして近年急激に発展し、ビデオゲームなどに応用されている。

プリンタ

出力装置の一つで、コンピュータなどから文字や画像、図形などのデータを受け取り、紙などに印刷する装置。

用紙をセットするカセットやトレイ、紙送り装置、印字ヘッドなどの印字機構、インクやトナーなど着色材料を貯める容器などで構成され、用紙を一枚ずつ繰り出し、端から順に必要な箇所に着色して印刷を行う。

黒など単色の印刷しかできないものと、複数の原色の着色材料を使用してカラー印刷できるものがある。多くの機種はB5版やA4版の普通紙の印刷に対応しているが、B4版やA3版などの大きな用紙に印刷できるものや、はがきや写真用紙、CDやDVDなどのレーベル面に印刷できるものなどもある。

コンピュータとはUSBケーブルやネットワークケーブル(イーサネット:Ethernet)など有線で接続する場合と、無線LAN(Wi-Fi)やBluetoothなどで無線接続する場合がある。デジタルカメラやスマートフォンと接続して写真などを印刷できる機種もある。

近年では、筐体上面にイメージスキャナ(画像読み取り装置)を備え、紙面を読み取ってコンピュータに画像データとして入力したり、印刷機能と連動してコピー機(複写機)として利用できる「プリンタ複合機」(インクジェット方式のプリンタの場合はインクジェット複合機とも)が一般的になっている。

印字方式によりいくつかの種類に分類される。現在主流なのは、ヘッドの先端の微細なノズルからインクを噴射して印刷する「インクジェットプリンタ」(ink jet printer)と、感光体にレーザーを照射して微細な粉末を付着させ紙に転写する「レーザープリンタ」(laser printer)である。

他にも、ヘッドの先端のピンをインクのついたテープ(インクリボン)に打ち付けて紙に転写する「ドットインパクトプリンタ」(dot impact printer)、熱を加えると黒く変色する特殊な用紙に熱したヘッドを押し当てて印刷する「感熱式プリンタ」などがある。

プリンタの性能は主に解像度と印字速度で表される。印刷解像度はどれくらい微細な点で像を構成するかを1インチあたりの点の数を意味する「dpi」(dots per inch:ドット毎インチ)という単位で表すことが多い。

印字速度は、1分あたりに印刷できる平均枚数を意味する「ppm」(pages per minute:ページ毎分)や、印字面数を意味する「ipm」(images per minute:イメージ毎分)などの単位で表すことが多い。

ラインプリンタ (line printer)

プリンタの印字動作の違いによる分類の一つで、文字を一行ずつ印刷していくものをラインプリンタ(line printer)という。

帳票などの印刷を行う業務用の製品で主に用いられる方式で、一度の印字動作で用紙の横幅に相当する数の文字を同時に印刷することができる。印刷方式としては縦横に並んだ微細なピンをインクリボンに打ち付けて紙にインクを写し取るドットインパクト方式(インパクトプリンタ)が多い。

シリアルプリンタ (serial printer)

プリンタの印字動作の違いによる分類の一つで、文字を一文字ずつ印刷していくものをシリアルプリンタ(serial printer)という。

印字ヘッドを用紙上で左右に移動させ、端から一文字ずつ順番に印字していくプリンタのことを指す。よく用いられる印字方式としては、微細なピンでインクリボンを打ち付けるドットインパクト方式(インパクトプリンタ)や、微細なノズルからインクを噴射するインクジェット方式などがある。

ページプリンタ (page printer)

プリンタの印字動作の違いによる分類の一つで、一度に紙面一ページをまとめて印刷できるものをページプリンタ(page printer)という。一度の印刷動作で用紙全面を印刷できるプリンタで、ほとんどの製品は印刷方式としてコピー機(複写機)などと同じ乾式電子写真方式を用いる。

光源にレーザーを用いるものを「レーザープリンタ」(laser printer)、LED(Light Emitting Diode:発光ダイオード)を用いるものを「LEDプリンタ」という。他の方式に比べ高速で高品質の印刷が可能だが、筐体が大きく高価なため、オフィスで利用する業務用の製品が多い。

キーボード 【KB】

指で押し込むことができる小さな部品(鍵やボタン)が規則正しく並んだ盤状の装置。楽器の場合は音を発することができ、コンピュータの入力装置の場合は文字や記号を入力したり指示や命令を発行することができる。

音楽の分野では、ピアノのように細長いけんが横一列に並んだ楽器(の操作部分)を意味し、「鍵盤」とも呼ばれる。コンピュータの分野では、正方形や横長の小さなボタンが縦横に整然と並び、文字や記号、コンピュータへの指示などを送信するための入力装置のことを指す。

一般的な製品には100前後のキーが4~5段に渡って並んでおり、各キーの上面(キートップ)に入力される文字や機能などが記されている。文字や記号を入力するキーは小さな正方形になっていることが多く、特殊な機能を与えられたキーは横長になっていることが多い。キートップに指先などで触れて押し込むことで、そのキーが押されたという信号がコンピュータへ送信される。

文字キーにはアルファベットやアラビア数字、記号などが割り当てられており、日本国内で使用される装置にはかな文字が刻印されているものもある。一つのキーには通常複数の文字が割り当てられており、単に打鍵したときと、「Shift」キーを押しながら打鍵したとき、かな入力モードで打鍵したとき、などのように使い分けられる。

文字キー以外に特殊な文字の入力や機能の呼び出しを行うためのキーがあり、スペース(空白)文字を入力するスペースキー(横長のためスペースバーとも呼ばれる)や、タブ文字を入力するTabキー、選択のキャンセルなどを行うEscキー、現在地の文字の削除などを行なうDeleteキー(Delキー)、「↑」など矢印の刻印された方向キー(矢印キー)など様々な種類がある。

また、他のキーと組み合わせて(同時に押して)使用するためのキーは修飾キーと呼ばれ、別の文字を呼び出すShiftキーや、文字キーをソフトウェアの機能の呼び出しに用いるCtrlキー(Controlキー)やAltキーなどがある。WindowsパソコンにしかないWindowsキーやMacにしかないCommandキーなど、機種固有の特殊なキーもある。

キーの並び方にはいくつかの標準があり、アルファベットの配列は「QWERTY」と呼ばれる並べ方が標準的に用いられる。パソコン向けにはこれに記号や特殊キーを追加した101型(英語圏向け)や、さらに日本語入力用のキーを追加した106型や109型などの規格がよく用いられる。かな文字の配列の標準としてはJIS配列や親指シフト配列(NICOLA配列)などがよく知られている。

センサー 【センサ】

自然現象や対象の物理状態の変化などを捉え、信号やデータに変換して出力する装置や機器。光や音、温度、湿度、気圧、接触、圧力、電気、磁気、距離、速度、加速度、角速度、物質の濃度など、様々な現象や対象に対応する装置が存在する。

コンピュータと関わりの深いセンサーとしては、音声を電気信号に変換するマイク(マイクロフォン)や、受光素子が受けた光を電気信号に変換するイメージセンサー、タッチパネルなどで画面への指先の接触を検知する接触センサー、家庭用ゲーム機のコントローラーなどで動きや回転を捉える加速度センサーやジャイロスコープなどがある。

小型のセンサー機器に外部との通信機能やICチップによる高度な情報処理機能を統合し、データの蓄積や変換など何らかの処理を行ったり、複数のセンサー素子の情報を統合したり、ITシステムや機器の制御システムと連携する機能を持ったものを「スマートセンサー」(smart sensor)という。

また、電源と無線通信機能を内蔵した小型のセンサー機器を分散して設置し、それら協調して動作させることで、施設や設備の監視・制御や、環境や空間の観測などを行なう通信ネットワークを「センサネットワーク」(WSN:Wireless Sensor Network)という。

バス

乗合自動車という意味の英単語。コンピュータの分野では、データ伝送路および伝送方式の一種で、複数の装置や機器、回路が一つの信号線を共有し、それらの間で相互にデータをやり取りできる構造のものをバスという。

単にバスといった場合はCPUなどのICチップ内部やチップ間、電子基板上のデータ伝送回路を指すことが多い。コンピュータ本体と周辺機器の接続や、コンピュータ間の接続についても、一つの伝送経路を複数の機器で共有する方式をバス型接続、バス型ネットワークということがある。

一般的な構成のコンピュータでは、CPUの内部で回路間を接続するバスを「内部バス」(internal bus)、CPUと別の装置(メインメモリなど)を接続するバスを「外部バス」(external bus)、コンピュータ本体(のマザーボード)と拡張カードや周辺機器などを接続するためのバスを「拡張バス」(extension bus)という。

一つのバスは、データ本体を伝送するための「データバス」(data bus)、データの所在を示すアドレス信号を伝送する「アドレスバス」(address bus)、タイミングなどの制御信号を伝送する「制御バス」あるいは「コントロールバス」」(control bus)を組み合わせて構成することが多い。

以前は複数の信号線を同期して複数ビットを同時に伝送する「パラレルバス」(parallel bus)方式が主流だったが、多数の信号線を同期するよりも一本の信号線を高周波で駆動する方が高速に伝送できるようになったため、現在では「シリアルバス」(serial bus)方式が一般的となっている。

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)という。

クロック 【クロック信号】

掛け時計、置き時計、速度計などの意味を持つ英単語。IT分野では、電子回路の動作タイミングを合わせるための高周波の周期的な信号を指すことが多い。

電子基板や半導体チップなどの内部で、複数の電子回路が信号を送受信するタイミングを揃えるために、規則正しく刻まれる電気信号を「クロック信号」(clock signal)という。そのような信号によって各回路の動作を同期させる方式を「クロック同期設計」(同期回路)という。

信号の形式にはいくつかの種類があるが、最も単純なクロック信号は一定の時間ごとに高電圧と低電圧が切り替わるもので、電圧が上がってから次に上がるまでの時間(または下がってから次に下がるまでの時間)のことを「クロック周期」(clock cycle)あるいは「クロックサイクル」という。

また、その逆数である、単位時間あたりの周期の数を「クロック周波数」(clock frequency)という。周波数が高いほど同じ時間に実行できる計算や伝送の回数が増えるため、処理や通信を高速化することができる。半導体チップやコンピュータの性能指標としてよく用いられる。

クロック信号は水晶やセラミックの振動子を内蔵したクロック発振回路によって発信され、専用の信号線を伝わって各回路に供給される。基板上のチップや回路は単一のクロックに従って動作するが、CPUなど特定のチップの内部だけ、外部からの信号の数倍のクロック信号で高速に動作させる場合もある。

クロック周波数 【動作周波数】

電子基板や半導体チップなどの内部で、複数の電子回路が信号を送受信するタイミングを揃えるための周期的な電気信号を、単位時間あたり何回発振するかを表す値のこと。単位は「Hz」(ヘルツ)。

クロック信号には様々な形式があるが、最も基本的なものは一定時間ごとに高電圧と低電圧が切り替わる信号で、基板内や回路内に設けられた発振器により生成され、各装置や回路に供給される。

クロック信号を毎秒何回発するかを表すのがクロック周波数で、この値が大きいほど、1秒を短い間隔で区切って信号の処理や伝送を実行するため、他の条件が同じなら装置をより高速に動作させることができる。

クロック信号を毎秒1回発振するのが1Hzで、毎秒1000回を1kHz(キロヘルツ)、毎秒100万回を1MHz(メガヘルツ)、毎秒10億回を1GHz(ギガヘルツ)という。現代のコンピュータのクロック周波数は数百MHzから数GHzが多い。

原則として基板上のチップや回路は単一(同一)のクロック周波数で動作するが、近年ではCPUなど特定のチップの内部だけ、外部からの信号の数倍の周波数を用いて高速に動作させる場合もあり、「CPUクロック」「メモリクロック」「ベースクロック」などのように呼び分ける。

クロック周期 (clock cycle/クロックサイクル)

クロック信号の繰り返し周期一回分にかかる時間の長さをクロック周期(クロックサイクル)という。クロック信号の始まり(電圧の立ち上がりなど)から、次のクロックの始まりまでの時間で、クロック周波数の逆数となる。

例えば、クロック周波数1MHzの信号は毎秒100万回の発振を繰り返すため、一回あたりのクロック周期は100万分の1秒(1マイクロ秒)となり、1GHzならば10億分の1秒(1ナノ秒)となる。

命令デコーダ 【命令解読器】

CPU(マイクロプロセッサ/MPU)内部の制御回路の一つで、メモリから読み込んだ命令を解釈し、その内容に従って他の回路に必要な信号を送るもの。

現代のコンピュータではプログラム(命令列)は2進数で表現されたデータとしてメインメモリ(主記憶装置/RAM)に記録されている。CPUはまず現在の実行位置として指し示されているメモリ上の番地(アドレス)から、次に実行する命令コードをCPU内部の高速な記憶装置であるレジスタに読み出す(フェッチ動作)。

命令解読器は命令レジスタにある命令を解読し、その内容を実行するにはどの回路にどのような動作をさせれば良いかを決定する(デコード)。これに基づいてデコーダは様々な回路に制御信号を発し、メモリから必要なデータを取り寄せたり、レジスタや演算器(ALU)などに必要な操作を指示する。最後に処理結果をメモリに格納して一回の命令実行サイクルは終了となり、次の命令の実行に取り掛かる。

レジスタ ⭐⭐

マイクロプロセッサ(MPU/CPU)内部にある、演算や実行状態の保持に用いる記憶素子。最も高速な記憶装置だが、一般的なCPU製品で数個から数十個(容量に換算して数十バイト程度)と数が限られる。GPUなど特殊なプロセッサでは数万個(数百キロバイト)のレジスタを内蔵するものもある。

演算などの処理を行うためのデータをメインメモリ(RAM)やキャッシュメモリから読み出して置いたり、計算結果や途中経過などを保持したり、読み込みや書き出しを行うメモリ上のアドレス(番地)などを指し示したりするために用いられる。メモリ内の記憶素子のように番地によって識別されるのではなく、それぞれ個別の識別名が与えられている。

命令によって役割が決まっているものを専用レジスタ、特定の役割が割り当てられておらずプログラムの都合で様々な用途に使い回せるものを汎用レジスタという。プログラムからアクセスできずプロセッサ自身が内部的に使用するための特殊なレジスタ(内部レジスタ)を持つ製品もある。

専用レジスタの種類や役割はプロセッサの仕様により異なるが、多くの製品に共通するものとして、アキュムレータ、データレジスタ、アドレスレジスタ、インデックスレジスタ、ベースレジスタ、スタックポインタ、ステータスレジスタ(フラグレジスタ)、プログラムカウンタなどがある。

命令レジスタ 【インストラクションレジスタ】

CPU(マイクロプロセッサ)内部の高速な記憶装置であるレジスタの一種で、実行する命令の内容を格納するもの。

プロセッサが命令を実行する際、プログラムカウンタ(PC:Program Counter)と呼ばれるレジスタの内容を参照し、メインメモリ上の現在の実行位置から命令を読み出し、命令レジスタに格納する。この段階を「フェッチ」(fetch)という。

読み出された命令は、操作の種類を表す「オペコード」(opcode)や操作対象を指示する「オペランド」(operand)などが含まれており、命令デコーダという回路によりその内容が解析される。この段階を「デコード」(decode)という。

最後に、解析された命令の内容に応じて必要なデータなどをレジスタやメインメモリから取り出し、処理を実行する。スーパースカラや命令パイプラインなどで複数の命令を並列に処理するプロセッサの場合は、同時に実行状態に置かれる命令の数だけ命令レジスタが用意されている。

プログラムカウンタ 【プログラムレジスタ】

マイクロプロセッサ(MPU/CPU)内部でデータを保持するレジスタの一種で、次に実行すべき命令が格納されているメモリ上の番地(アドレス)を保存しているもの。また、その保存しているアドレス値。「PC」と略記されることもある。

レジスタ(register)はプロセッサの回路内に存在する極めて高速に読み書きできる記憶装置で、用途に応じて様々なものが用意されている。プログラムカウンタはそのうちの一つで、次に実行すべき命令がメモリ上のどの番地に格納されているかを指し示している。

プログラムの実行が開始され、メモリ上のある番地から実行すべき命令が読み出されると、プロセッサ内の制御回路によって命令の長さの分だけプログラムカウンタの値が加算され、次に実行すべき命令(の先頭位置)の番地を指し示すようになる。分岐やジャンプは、プログラムカウンタの内容を飛び先のプログラムが格納されている番地に書き換えることで実現される。

マルチコアCPU 【multi-core CPU】

2つ以上のプロセッサコアを単一のICチップに集積したマイクロプロセッサ(MPU/CPU)。コアの数に応じて複数のコンピュータプログラムを並列に実行することができる。

一般的なCPUでは、命令の解釈や演算、他の装置の制御などを行う回路を組み合わせた「プロセッサコア」(processor core)が1セット入っている。マルチコアCPUにはこのコアが複数内蔵されており、ちょうどCPUを複数個搭載しているような状態になる。

マルチコアCPUでは、各コアは単体で機能が完結していて独立しているため、それぞれのコアは他のコアに影響されることなく動作できる。一台のコンピュータに複数のプロセッサを搭載するマルチプロセッサと同じように、処理を複数のコアで分散して並列に実行することで性能を向上させる。

コアの数を増やしていけば同時に実行できるプログラムの数も増え、複数台のコンピュータを用意したのと同じように全体として性能を向上させることができる。ただし、単体のプログラムの実行性能(シングルスレッド性能)はこの方法で向上させることはできない。

演算回路などはコアごとに独立しているが、一部のキャッシュメモリ(2次キャッシュなど)や外部とのデータ伝送路などは複数のコアで共有される。キャッシュの共有は、あるコアが読み込んだデータを別のコアが流用できるなど性能面でのメリットもある。

一方、マルチコアCPUのデメリットとして、1個のプロセッサ製品にほぼフルセットのコアを複数個詰め込むという性質上、どうしてもプロセッサのサイズ(面積やトランジスタ数)は大きくなり、製造コストは高くつく。

マルチコアCPUはOSからは独立した複数のマイクロプロセッサとして扱われ、動作感もマルチプロセッサ構成とほとんど変わらないため、利用者やソフトウェア開発者はマルチコアCPU上での動作を特に意識する必要はない。

内蔵するコア数によって呼び方が変わり、2コアは「デュアルコア」、4コアは「クアッドコア」、6コアは「ヘキサコア」、8コアは「オクタコア」と呼ばれる。10コアや12コアの製品も開発されているが、これらは単に「数字+コア」と呼称されることが多い。

ヘテロジニアスマルチコア (heterogeneous multicore)

異なる種類(heterogeneous)のプロセッサコアを一つのICチップに集積して一体的にどうさせる方式をヘテロジニアスマルチコアという。

機能や得意分野の異なる複数の種類のコアを統合することにより、様々な場面で総合的に高い性能を発揮できるように設計されている。ただし、性能を引き出すためには複雑なプログラミングが必要とされるため、対応ソフトの開発コストは高くなりがちになる。

ヘテロジニアス方式は組み込みシステム向けのプロセッサなどで採用例があり、ソニーのプレイステーション3のCPUである「Cell/Broadband Engine」プロセッサなどが有名。一方、パソコンやサーバ向けの汎用CPU製品では同じコアを複数搭載するホモジニアスマルチコアが主流となっている。

ホモジニアスマルチコア (homogeneous multicore)

同じプロセッサコアを複数集積したマルチコアプロセッサのことをホモジニアスマルチコアという。通常、単にマルチコアと言えばこの方式のため、あえて明示することは少なく、異なる種類のコアを組み合わせるヘテロジニアスマルチコアと対比する文脈で主に用いられる用語である。x86/x64系プロセッサなど、一般に広く流通する汎用的なCPU製品の多くがこの方式である。

キャッシュ 【キャッシュデータ】

低速な記憶装置や伝送路から読み出したデータのうち、直近に読み込んだものや使用頻度が高いものを高速な記憶装置に複製しておくこと。また、その際に使われる高速な記憶装置や、複製されたデータそのもののこと。データの読み込みを高速化したり、伝送量を削減することができる。

例えば、コンピュータのメインメモリはストレージ装置に比べれば何桁も高速にデータの読み書きが行えるため、使用頻度の高いデータをメモリ内に保持しておくことにより、すべてのデータをストレージに置いた場合よりも処理を高速化することができる。この場合、メモリ(に複製されたデータ)がストレージのキャッシュである。

同様の手法は通信においても利用することができ、通信ネットワークを介して外部の別の機器から受信したデータをストレージに保存しておくことで、次に必要になったときに高速に読み出すことができる。手元にデータをとっておくことで、通信回線の帯域幅(伝送容量)や伝送量(および伝送料)を節約する効果もある。

コンピュータのCPU(マイクロプロセッサ/MPU)の内部には演算装置から高速にアクセスできる小容量の特殊なメモリ回路が内蔵されており、これを「キャッシュメモリ」(cache memory)という。メインメモリよりも遥かに高速に読み書きできるため、使用頻度の高いデータを記録しておくことでメモリからの読み込み時間を削減して性能を向上させることができる。

ちなみに、日本語の外来語で「キャッシュ」は現金、換金、現金化などの意味でも用いられるが、こちらは “cash” の音写であり、“cache” とは発音が同じだが綴りと意味が異なる別の単語(異綴同音異義語)である。

キャッシュメモリ 【緩衝記憶装置】

CPU(マイクロプロセッサ)などのICチップ内部に設けられた高速な記憶装置の一つ。使用頻度の高いデータを蓄積しておくことにより、相対的に低速なメインメモリ(主記憶装置)へのアクセスを減らすことができ、処理を高速化することができる。

プロセッサ内部の回路として読み書き可能な半導体メモリを集積し、プログラムの実行のためにメインメモリから読み込んだ命令やデータを一時的に保管しておく。メインメモリを読み書きするよりは何桁も高速にアクセスできる。

CPUなどの内部には、命令を実行するための回路に必要なデータを送り込むための「レジスタ」(register)もある。キャッシュメモリのアクセス速度はレジスタよりは低速だが、容量は数kB(キロバイト)から数MB(メガバイト)程度と、数個~十数個しかないレジスタよりは遥かに多い。

容量や速さの異なる2~3段階(2~3種類)のキャッシュメモリを用いる場合があり、実行回路に近く高速で容量の少ない方から順に「1次キャッシュ」「2次キャッシュ」「3次キャッシュ」といったように呼称する。実行回路はまず1次キャッシュにデータが無いか探し、無ければ2次キャッシュに、さらに無ければ3次キャッシュ、といったように順番に探す。

一般的な汎用のCPUは「フォンノイマン型」と呼ばれる構成になっており、命令もデータも区別せずメインメモリに混在させるため、キャッシュメモリも両者の区別なく記録する。一方、命令とデータが装置レベルで分離している「ハーバード型」の場合には、「命令キャッシュ」と「データキャッシュ」が分かれており、データの伝送路や制御方式も異なる。一部の組み込みシステムなどに見られる方式である。

1次キャッシュ 【L1キャッシュ】

CPU(マイクロプロセッサ)などのICチップ内部に設けられたキャッシュメモリのうち、最も優先的に読み書きが行われるもの。最も高速に動作するが最も容量が少ない。パソコン向けのCPU製品では数KB(キロバイト)から数十KB程度の容量であることが多い。

キャッシュメモリはプロセッサ内部に設けられた少容量の半導体メモリ回路で、メインメモリよりも高速に読み書きが可能となっている。メインメモリから読み込んだ命令やデータを保管しておき、次に必要になったとき高速に読み出すことができるようにする。

プロセッサの中には容量や実装方式の異なる複数段階の1次キャッシュメモリを搭載しているものがある。このうち、実行回路が最も優先的に読み書きを行うものを1次キャッシュメモリという。2次キャッシュ以降のキャッシュメモリに比べ、最も容量が少ないが最も高速に動作する。

実行回路に内蔵されたレジスタに次いで高速に動作し、最も使用頻度の高いデータや最も直近に使用したデータが置かれる。1次キャッシュメモリに収まりきらないデータは2次キャッシュへ送られる。読み込み時に1次キャッシュメモリに見つからないデータは2次キャッシュから探し、それでも無ければ3次キャッシュあるいはメインメモリに読み込みに行く。

2次キャッシュ 【L2キャッシュ】

CPU(マイクロプロセッサ)などのICチップ内部に設けられたキャッシュメモリのうち、1次キャッシュに収まりきらないデータを格納するために設けられているもの。

キャッシュメモリはプロセッサ内部に設けられた少容量の半導体メモリ回路で、メインメモリよりも高速に読み書きが可能となっている。メインメモリから読み込んだ命令やデータを保管しておき、次に必要になったとき高速に読み出すことができるようにする。

プロセッサの中には容量や実装方式の異なる複数段階の2次キャッシュメモリを搭載しているものがある。このうち、実行回路が最も優先的に読み書きを行うものを「1次キャッシュ」(L1キャッシュ)と呼び、これに収まりきらないデータを格納するものを2次キャッシュメモリという。1次キャッシュより読み書きは低速だが容量が大きい。

2次キャッシュメモリに収まらないデータは3次キャッシュ(L3キャッシュ)がある場合は3次キャッシュへ、ない場合はメインメモリへ格納される。パソコン向けのCPU製品の場合、1次キャッシュが数KB(キロバイト)から数十KBなのに対し、2次キャッシュメモリは数百KBから数MB(メガバイト)用意されることが多い。

MIPS 【Million Instructions Per Second】

コンピュータの処理速度をあらわす単位の一つで、毎秒何百万回の命令を実行できるかを表す値。1MIPSのコンピュータは、1秒間に100万回の命令を処理できる。主にマイクロプロセッサの性能を反映するため、プロセッサの性能指標として扱われることもある。

命令の体系(命令セットアーキテクチャ)の異なるプロセッサの間では、一つの命令で実行できる内容に違いがあり、同じ内容の処理を行うのに何命令要するかが異なるため、MIPSは同じ命令セットのプロセッサ(互換性のあるプロセッサ)同士でなければ比較できない。

GIPS (Giga-IPS/billion instructions per second)

コンピュータの処理速度をあらわす単位の一つで、毎秒何十億回の命令を実行できるかを表す値。1GIPSのコンピュータは、1秒間に10億回の命令を処理できる。MIPSの1000倍に相当する単位。主にマイクロプロセッサ(MPU/CPU)の性能を反映するため、プロセッサの性能指標として扱われることもある。

MIPS同様、命令の体系(命令セットアーキテクチャ)の異なるプロセッサの間では単純に比較することはできず、同種のプロセッサの製品モデルや世代による違いを比較するのに用いることが多い。

論理回路 ⭐⭐

デジタル信号を処理して論理演算や記憶などを行うための電子回路。単純な論理演算を行う回路を膨大な数組み合わせればCPU(MPU/マイクロプロセッサ)のような複雑な装置を作ることができる。

二状態のいずれかを取るデジタル信号を入力および出力とする論理素子を配線で結び、様々な論理演算や記憶を行う回路を構成する。信号の状態は論理的には2進数の「0」と「1」、あるいは真偽値(真理値/ブール値)の「真」と「偽」に対応し、物理的には電圧の高低で表すことが多い。高電圧を「真」や「1」に対応付ける方式を「正論理」、逆を「負論理」という。

論理素子は「論理ゲート」(logic gate)とも呼ばれ、何らかの論理演算を行う機能を持った単体の素子である。一つ以上の入力を取り、所定の演算を行って一つの信号を出力する。実際の電子回路上では抵抗やトランジスタなど複数の電子部品を組み合わせて実装される。図で表す際の記号には標準規格があり、MIL記号やJIS記号などがよく用いられる。

基本的なゲートとして、否定(NOT)演算を行う「NOTゲート」、論理和(OR)演算を行う「ORゲート」、論理積(AND)演算を行う「ANDゲート」、排他的論理和(XOR)演算を行う「XORゲート」、否定論理和(NOR)演算を行う「NORゲート」、否定論理積(NAND)演算を行う「NANDゲート」などがある。複雑な挙動の論理回路もほとんどがこれらの組み合わせで構成されている。

<$Fig:logic|center|false>

現在の入力のみから出力を決定する回路を「組み合わせ回路」(combinational logic)と呼び、加算を行う加算器のように演算を行う回路などが該当する。一方、内部に状態を持ち、過去の入力で変更された現在の内部状態と入力を組み合わせて出力を決定する回路を「順序回路」(sequential logic)という。フリップフロップ回路(ラッチ回路)やカウンタ回路などが該当する。

集積回路 【IC】

高度な機能を持つ電子部品の一つで、トランジスタ、抵抗、コンデンサ、ダイオードなど、多数の微細な電子部品を一つの基板の上で連結し、全体として複雑な処理を行ったり、大量のデータの記憶を行ったりできるもの。形態が数cm角程度の小片であるため「チップ」(chip)と呼ばれる。

マイクロプロセッサ(MPU/CPU)やマイクロコントローラ(MCU)、メモリ、センサー、電源回路など様々な種類があり、電子機器の中枢部品として広く利用されている。回路の集積度の高いものをLSI(Large Scale Integration)、VLSI(Very LSI)、ULSI(Ultra-LSI)などと分類していた時代もあったが、現代ではLSI以外の呼称はほぼ廃れている。

一般的なICはシリコン(Si:ケイ素)などの半導体でできた数mmから数cm角のチップの表面に、数十万個から多いもので10億個以上の微細な半導体素子と、それらを結ぶ金属配線が実装されている。素子や配線は印刷や写真の手法に由来する光学的な焼付処理(フォトリソグラフィ)によっていっぺんにまとめて形成されるため大量生産に適している。

チップは樹脂などでできた外殻(ICパッケージ)に封入され、その周囲や裏面などに規則正しく並んだ金属端子で外部と接続される。用途に応じて電子基板(プリント基板)の所定の位置に組み付け、あるいははんだ付けされ、電子機器の一部として機能する。

主なICの種類

ICには大きく分けてデジタル信号を扱うデジタルICとアナログ信号を扱うアナログICがあり、デジタルICにはデータや信号の処理を行うためのロジック系ICと、データの記録に用いられるメモリICがある。

アナログICには各種のセンサーや変換回路、増幅器、無線信号処理といったアナログ信号処理用のICと、電源・電力制御を行うための電源ICなどがある。デジタルとアナログの両方の信号用の回路を内蔵したミックスドシグナルICもある。

ロジックとメモリ、デジタルとアナログなど複数の異なる種類の回路を混載し、単体でひとまとまりの大きな機能(機器の制御など)を提供するよう設計されたICを「システムLSI」あるいは「SoC」(System-on-a-Chip)などという。

また、汎用品(汎用IC)か特注品(カスタムIC)かによる分類、一枚のチップで完結した構造(モノリシックIC)か複数のチップや電子部品の複合構造(ハイブリッドIC)かによる分類など、いくつかの分類法がある。

ロジックIC

ロジック系のICは主にデータの演算や変換、処理、伝送、別の装置の制御などの機能を論理回路として実装したIC製品である。MPUやASSP(特定用途向け標準品)のようにメーカーが機能や仕様を決めて設計する汎用品(既製品)と、用途や組み込み対象ごとに個別に設計されるASIC(特定用途向けIC)に分かれる。

コンピュータの心臓部に当たるマイクロプロセッサ(MPU:Micro-Processing Unit)やデジタル機器の制御装置であるマイクロコントローラ(MCU:Micro-Control Unit)、デジタル信号処理に特化したDSP(Digital Signal Processor)、コンピュータグラフィックス関連の演算処理に特化したGPU(Graphics Processing Unit)などの種類がある。

MPUやMCUなどは内部に一時的なデータ保管のための記憶素子を内蔵した構成が一般的で、I/O制御といった従来は別のチップに分かれていた様々な機能や役割が統合されるようになってきているため、単純なロジック系ではなくシステムLSI/SoCに分類されることもある。

チップ製造時には特定の機能は与えられておらず、開発者が内部の論理回路の構成をデータとして与えることで機能するようになる「プログラマブル」(programmable)なICもある。方式や回路規模によってPLD(Programmable Logic Device)、CPLD(Complexed PLD)、FPGA(Field Programmable Gate Array)などの種類がある。

ちなみに、「汎用ロジックIC」といった場合は、MPUなど規格や設計があらかじめ決まっている汎用製品という意味ではなく、NANDゲート、フリップフロップ回路といった単機能の論理回路を単体のICチップとして実装した製品のことを指す。

メモリIC

メモリ系のICは主にデータの記録に用いられるもので、コンピュータやデジタル機器の主記憶装置(メインメモリ)や内蔵プログラム(ファームウェアなど)の記録、永続的なデータ記憶装置(ストレージ)などとして用いられる。

大きく分けて、任意に読み書きが可能な「RAM」(Random Access Memory)と、使用時には記録済みデータの読み出ししかできない「ROM」(Read Only Memory)に分かれる。前者は電源を落とすと内容が失われる「揮発性メモリ」、後者は通電状態に左右されず常に記録内容が維持され続ける「不揮発性メモリ」である。

RAMは記憶素子の内容を維持するために一定間隔で再書き込み動作(リフレッシュ)を行う必要がある「DRAM」(Dynamic RAM)と、リフレッシュしなくても記憶が失われない「SRAM」(Static RAM)に分類される。前者は消費電力は大きいが低コストで高密度化(大容量化)しやすいためコンピュータのメインメモリに使われる。後者は高速性や省電力性が必要な組み込み用途などで使われる。

ROMは製造時に内部の回路に固定的に信号を記録し、以降は内容を変更することができない(現在ではこれをマスクROMと呼ぶ)。しかし、技術の進展でチップ製造時にはデータを記録せず、開発者が特殊な装置でデータを記録する「PROM」(Programmable ROM)が発明された。PROMがさらに発展し、内容の消去と再書き込みを繰り返し行うことができる「EPROM」(Erasable Programmable ROM)が生まれた。

さらに、すべての処理をコンピュータなど(読み出しを行う)機器に装着した状態のまま実行できる「EEPROM」(Electrically Erasable Programmable ROM)に改良され、さらに制御方式や書き換え性能などを向上させた「フラッシュメモリ」となった。フラッシュメモリはUSBメモリやメモリーカード、SSDなどの形で、従来の磁気ディスクや光学ディスクに代わって主流のストレージ装置として急速に普及している。

LSI 【Large-Scale Integration】

半導体の小片の表面に微細な電子部品や配線を大規模に集積した装置。歴史的にはIC(集積回路)のうち素子の集積度が数千ゲート(数万トランジスタ)かそれ以上のものを意味したが、現代では単にICの同義語、言い換え語として用いられるのが一般的。

集積回路(IC:Integrated Circuit)とは、トランジスタや抵抗、コンデンサ、ダイオードなどの多数の微細な電子部品とそれらを結ぶ金属配線を一枚の半導体基板の上に一体的に形成し、全体として複雑な機能を持たせたチップ(小片)状の電子部品である。

デジタル信号の処理や記憶などが可能で、マイクロプロセッサ(MPU/CPU)やマイクロコントローラ(MCU)、メモリ、センサー、電源回路など様々な種類があり、コンピュータや電子機器の中枢部品として広く利用されている。

SSI/MSI/LSI

1960年代初頭に発明された初期のICは素子が数個程度のシンプルな構造だったが、1970年頃になると新たな製造技術などにより素子の集積度が飛躍的に向上し、一枚のチップに積載された部品の数で製品の世代やカテゴリーを表すようになった。

概ね論理ゲートの数が100~1000程度のものを「MSI」(Medium Scale Integration:中規模集積回路)、これを超え10万ゲート位までのものを「LSI」(Large Scale Integration:大規模集積回路)と呼ぶようになった。このとき同時に、初期の小規模なチップに「SSI」(Small Scale Integration:小規模集積回路)という区分を与えて後続世代と区別するようになった。

VLSI/ULSI

1980年代に入ると製造技術の微細化の進展で更に大きな規模の回路が生産できるようになり、ゲート数が10万を超えるものを「VLSI」(Very Large Scale Integration)、100万を超えるものを「ULSI」(Ultra-Large Scale Integration)と呼ぶようになった。

2000年頃になると100万ゲートを超えるチップが開発されるようになるが、次第に回路規模による細かな区分は意識されなくなり、ULSIを超える区分は用いられなかった。

現代のLSI

現在では「LSI」の語はほとんどICと同義語のように使われるようになり、「高い集積度」という本来の意味合いはほぼ喪失している。ICの言い換え以外で「LSI」の呼称を一般的に用いるのは、複数の機能を一枚のチップに混載した「システムLSI」程度で、これも「SoC」(System-on-a-Chipの)という呼称に置き換えられつつある。

ANSI 【American National Standards Institute】

アメリカ合衆国における工業規格の標準化を行う機関の一つ。日本における日本工業標準調査会(JISC)に近い組織で、ANSI規格はJIS規格に近い位置づけとなる。

連邦政府機関ではなく民間の非営利法人で、自らは標準規格の作成はせず、分野ごとの標準開発機関(SDO:Standards Developing Organizations)が提案した仕様を検討し、標準として承認する。

世界的に影響力のある標準化機関の一つで、ANSIで標準化された規格がそのまま世界的に利用されたり、ISO/IECなどの国際標準となることも多い。米政府調達に関する標準規格は商務省所管の米国立標準技術研究所(NIST:National Institute of Standards and Technology)が制定している。

1918年に設立されたAESC(American Engineering Standards Committee)が前身で、1928年にASA(American Standards Association)に、1966年にUSASI(United States of America Standards Institute)に改称、1969年に現在の名称となった。

論理演算 【ブーリアン演算】

真(true)と偽(false)の二通りの状態を取る真偽値(真理値/ブール値)の間で行われる演算。コンピュータでは真を1に、偽を0に対応付けたビット演算として行われることが多い。

入力が一つの単項演算として、入力値の反対の値を出力する「否定」(NOT A:Aではない)がある。入力が二つの二項演算には、どちらかが真なら真を出力する「論理和」(A OR B:AまたはB)、両者とも真の時のみ真を出力する「論理積」(A AND B:AかつB)、両者が異なる時に真を出力する「排他的論理和」(XOR:eXclusive OR)がある。

電子回路などでは、論理和と否定を組み合わせた「否定論理和」(NOR:Not OR)、論理積と否定を組み合わせた「否定論理積」(NAND:Not AND)が用いられることもある。排他的論理和と否定を組み合わせた「否定排他的論理和」(XNOR)は値が同じとき真、異なるとき偽となるため「同値」(EQ:equal)とも呼ばれる。

<$Fig:logic|center|false>

三項以上を計算する際は二項ずつの計算を繰り返すことで結果が得られる。その際、四則演算のように交換法則や分配法則、結合法則、ド・モルガンの法則などが成り立つ。すべての論理演算はNOT、AND、ORの三つの組み合わせで構成できるが、この三つはすべてNANDの組み合わせで構成でき、NANDだけですべての論理演算を記述できることが知られている。

コンピュータでは真偽値自体の演算(プログラミング言語におけるブール型の値の演算など)の他に、真を1、偽を0に置き換えてビット間で論理演算を行うことがある。ビット列について論理演算を行う場合は二つのビット列のぞれぞれ対応する位置にあるビット同士で論理演算を行う。

このような演算方式を真偽値の論理演算と区別して「ビット演算」(bitwise operation)と呼ぶこともある。なお、ビット演算には論理演算に相当する演算以外にも、シフト演算やローテート演算などビット列を左右に移動する操作もある。

プログラミング言語では算術演算などと並んで最も基本的な演算の一つとして論理演算が用意されていることが多く、論理演算子によって式を記述する。演算子は「&&」のような記号を用いる場合と、「and」のような英単語をそのまま用いる場合がある。C言語の「&」と「&&」のように、論理演算と対応するビット演算にはそれぞれ別の演算子が与えられていることが多い。

真理値表 【真偽表】 ⭐⭐

ある論理回路や論理式について、考えられるすべての入力の組み合わせと、対応する出力を一つの表に書き表したもの。

真理値(ブール値/真偽値)は論理演算などで用いられる値で、「真」(true)と「偽」(false)の2値のいずれかを取る値である。コンピュータ上ではすべての情報を「1」と「0」を並べた2進数で表すため、真と1を、偽と0を対応付けて論理回路で様々な処理を行う。

真理値表は論理演算の入力値と出力値の対応関係を図に表したもので、一般的な形式では表の左側の列に入力を、右側の列に出力をそれぞれ並べる。各行に入力の組み合わせと、その時の出力を記入していく。各項には「1」(あるいは「真」「Truth」「T」)か「0」(あるいは「偽」「False」「F」)のどちらかを記入する。

行数

<$Fig:truthtable|right|true>

入力が1つ(NOT演算)の場合は入力「0」と「1」の2行で表され、入力が2つの場合は「0-0」「0-1」「1-0」「1-1」の4行となる。同様に、3入力では8行、4入力では16行というように、2の入力数乗が表の行数となる。

列数

ある特定の論理演算の結果を示す場合は出力は1列となるが、複数の異なる演算について結果を比較するために、それぞれの演算ごとに列を用意する(列名部分に演算内容を記述する)場合もある。論理回路の動作を示す表の場合には、出力の数だけ列を用意し、それぞれの演算結果を書き込んでいく。

ベン図 【Venn diagram】

集合間の関係を表す図法の一つ。集合の範囲を円などの図形で表し、図形の重なりによって共通部分を表現するもの。概ね3つ程度までの集合の関係を表すのに用いられる。

19世紀の終わり頃、イギリスの数学者ジョン・ベン(John Venn)によって考案された図法である。まず大きな長方形などで描画範囲を設定し、これをすべての要素が含まれる全体集合とする(この領域は設定しない場合もある)。個々の集合は円や楕円などの図形で表される。集合間に共通の要素がある場合、図形の一部を重ねて表現する。

集合Aを円で表すとき、Aの外側はAの補集合(A、Ac)を表す。集合Bも円で表すと、両者の重なった領域が共通部分(A∩B)、重なりも含め両者を合わせた領域が和集合(A∪B)を表す。BがAに完全に含まれる場合、BはAの部分集合(A⊃B)となる。

3つ以上の集合の関係も図示できるが、4つ以上は重なり方の組み合わせを漏らさず図示するのが難しくなるため、あまり用いられない。説明のために集合ごとに色や模様で塗り分けたり、現在着目している領域のみを着色することが多い。黒で塗られた領域は元が存在しないことを表すため、塗り分けで黒を用いることは控える。

集合演算の結果を視覚的に分かりやすく表すことができるため、これを論理演算の図示に応用することもある。変数を円に対応付け、円の内部を真(true)または1、外側を偽(false)または0に対応付ける。例えば、2変数PとQの場合、円Pの外側がPの論理否定(not P/¬P)、円の重なりが論理積(P and Q/P∧Q)、両円を合わせた領域が論理和(P or Q/P∨Q)に対応する。

ゲート

門、門扉、出入り口、通路、開閉する、などの意味を持つ英単語。

半導体の分野では、電界効果トランジスタ(FET:Field Emission Transistor)において、ソースとドレインの間の絶縁体の上に置かれた電極のことを論理ゲートという。ここに電圧を加えることでソース-ドレイン間の電流を遮断したり通したりすることができ、開閉できる門のような役割を果たすためこのように呼ばれる。

論理ゲート (logic gate)

半導体集積回路(ICチップ/LSIチップ)を構成する、最も基本的な論理演算を実行する論理回路の最小単位を「論理論理ゲート」(logic gate)あるいは単に論理ゲートという。

論理演算の種類に対応してNOT論理ゲート、AND論理ゲート、OR論理ゲート、XOR論理ゲート、NAND論理ゲート、NOR論理ゲート、XNOR論理ゲートなどの種類があり、複雑・大規模な論理回路はこれら基本的な論理論理ゲートを組み合わせて構成されている。

ICチップの規模(集積度)を計る単位として、いくつの論理論理ゲートを繋ぎ合わせて作られたかを表す「論理ゲート数」(単位:論理ゲート)が用いられることもある。

AND回路 【AND gate】 ⭐⭐

基本的な論理回路の一つで、二つの入力と一つの出力を持ち、入力がいずれも「H」(Hight:高電圧)のときのみ出力が「H」となり、それ以外の場合は出力が「L」(Low:低電圧)となるもの。論理積(AND)演算を行う回路である。

正論理の場合、入力の両方が「H」のとき出力が「H」となり、片方あるいは両方が「L」のとき出力が「L」となる(負論理の場合はこの逆)。「H」と「L」を2進数の「1」と「0」に対応付ければビット論理積(ビットAND)演算を、真理値の「真」(true)と「偽」(false)に対応付ければ論理演算のAND演算を行うことができる。

現在の入力のみから出力が決まる組み合わせ回路の一つで、最も基本的な論理ゲートの一つである。回路図に用いる記号をIEC、MIL/ANSI、DINの各規格がそれぞれ定めており、JIS規格はIEC記号に準拠している。AND回路が用意されていない場合でも、NAND回路あるいはNOR回路(のみ)の組み合わせでAND回路を構成することができる。

OR回路 【OR gate】 ⭐⭐

基本的な論理回路の一つで、二つの入力と一つの出力を持ち、入力のいずれもが「L」(Low:低電圧)のときに出力が「L」となり、それ以外の場合は出力が「H」(High:高電圧)となるもの。論理和(OR)演算を行う回路である。

正論理の場合、入力の片方あるいは両方が「H」のとき出力が「H」となり、両方「L」のときのみ出力が「L」となる(負論理の場合はこの逆)。「H」と「L」を2進数の「1」と「0」に対応付ければビット論理和(ビットOR)演算を、真理値の「真」(true)と「偽」(false)に対応付ければ論理演算のOR演算を行うことができる。

現在の入力のみから出力が決まる組み合わせ回路の一つで、最も基本的な論理ゲートの一つである。回路図に用いる記号をIEC、MIL/ANSI、DINの各規格がそれぞれ定めており、JIS規格はIEC記号に準拠している。OR回路が用意されていない場合でも、NAND回路あるいはNOR回路(のみ)の組み合わせでOR回路を構成することができる。

NOT回路 【NOT gate】 ⭐⭐

基本的な論理回路の一つで、一つの入力と一つの出力を持ち、入力の逆の状態を出力するもの。論理否定(NOT)演算を行う回路である。

入力が「H」(High:高電圧)なら出力は「L」(Low:低電圧)、入力が「L」なら出力は「H」となる。「H」と「L」を2進数の「1」と「0」に対応付ければビット否定(ビットNOT)演算を、真理値の「真」(true)と「偽」(false)に対応付ければ論理演算のNOT演算を行うことができる。

最も基本的な論理ゲートの一つで、様々なデジタル回路の構成部品として用いられる。回路図に用いる記号をIEC、MIL/ANSI、DINの各規格がそれぞれ定めており、JIS規格はIEC記号に準拠している。NOT回路が用意されていない場合でも、NAND回路あるいはNOR回路を用いてNOT回路を構成することができる。

XOR回路 【XOR gate】

基本的な論理回路の一つで、二つの入力と一つの出力を持ち、二つの入力が一致する時に「L」(Low:低電圧)となり、不一致のとき「H」(High:高電圧)となるもの。排他的論理和(XOR)演算を行う回路である。

正論理の場合、入力の片方が「H」、もう片方が「L」のとき出力が「H」となり、両方「H」または「L」のとき出力が「L」となる(負論理の場合はこの逆)。「H」と「L」を2進数の「1」と「0」に対応付ければビットXOR演算を、真理値の「真」(true)と「偽」(false)に対応付ければ論理演算のXOR演算を行うことができる。

現在の入力のみから出力が決まる組み合わせ回路の一つで、最も基本的な論理ゲートの一つである。回路図に用いる記号をIEC、MIL/ANSI、DINの各規格がそれぞれ定めており、JIS規格はIEC記号に準拠している。XOR回路が用意されていない場合でも、NAND回路あるいはNOR回路(のみ)の組み合わせでXOR回路を構成することができる。

NAND回路 【NAND gate】

基本的な論理回路の一つで、二つの入力と一つの出力を持ち、入力が両方「H」(High:高電圧)のときのみ出力が「「L」(Low:低電圧)となり、それ以外の場合は出力が「H」となるもの。論理積(AND)の結果を反転(NOT)した否定論理積(NAND)演算を行う回路である。

正論理の場合、入力の片方あるいは両方が「L」のときに出力が「H」となり、両方「H」のとき「L」となる(負論理の場合はこの逆)。「H」と「L」を2進数の「1」と「0」に対応付ければビットNAND演算を、真理値の「真」(true)と「偽」(false)に対応付ければ論理演算のNAND演算を行うことができる。

現在の入力のみから出力が決まる組み合わせ回路の一つで、最も基本的な論理ゲートの一つである。回路図に用いる記号をIEC、MIL/ANSI、DINの各規格がそれぞれ定めており、JIS規格はIEC記号に準拠している。

「機能的完全性」(functional completeness)を備え、AND回路やOR回路、NOT回路などの基本的な論理ゲート、あるいは加算器などのより複雑な回路を含め、任意の論理回路はNAND回路のみの組み合わせで実装できることが知られている。また、他の論理ゲートより少ない半導体素子(トランジスタなど)で実装できるため実用上もよく利用される。

NOR回路 【NOR gate】

基本的な論理回路の一つで、二つの入力と一つの出力を持ち、入力が両方「L」(Low:低電圧)のときのみ出力が「H」(High:高電圧)となり、それ以外の場合は出力が「L」となるもの。論理和(OR)の結果を反転(NOT)した否定論理和(NOR)演算を行う回路である。

正論理の場合、入力の片方あるいは両方が「H」のときに出力が「L」となり、両方「L」のとき「H」となる(負論理の場合はこの逆)。「H」と「L」を2進数の「1」と「0」に対応付ければビットNOR演算を、真理値の「真」(true)と「偽」(false)に対応付ければ論理演算のNOR演算を行うことができる。

現在の入力のみから出力が決まる組み合わせ回路の一つで、最も基本的な論理ゲートの一つである。回路図に用いる記号をIEC、MIL/ANSI、DINの各規格がそれぞれ定めており、JIS規格はIEC記号に準拠している。

「機能的完全性」(functional completeness)を備え、AND回路やOR回路、NOT回路などの基本的な論理ゲート、あるいは加算器などのより複雑な回路を含め、任意の論理回路はNOR回路のみの組み合わせで実装できることが知られている。

半加算器 【ハーフアダー】 ⭐⭐

2進数の加算(足し算)を行う論理回路(加算器)のうち、下の桁からの繰り上がりを考慮せず、単純に二数の和のみを求める回路のこと。より複雑な加算器の構成要素となる。

加算を行う回路を加算器というが、半加算器は2つのビット列の同じ桁の値同士を加算し、その桁の加算後の値と、上位桁への繰り上がりの有無を表す「キャリー」(carry out)の2つを出力する。キャリー出力は繰り上がりがなければ「0」、あれば「1」となる。

2つのビットが両方「0」ならその桁の値として「0」(0+0=0)を、片方が「1」なら「1」(0+1=1, 1+0=0)を出力するが、両方「1」ならば結果は「10」(1+1=10)と2桁の値になるため、その桁の値として「0」を、キャリーとして「1」を出力する。キャリーは隣の上位桁の全加算器に入力される。

半加算器は基本的な論理回路の組み合わせで構成でき、AND回路2つ、OR回路1つ、NOT回路1つで作ることができる。XOR回路が利用可能であれば、XOR回路1つとAND回路1つで構成することもできる。

半加算器は下の桁からの繰り上がりを考慮しないため、そのままでは最下位桁の加算にしか使えない。下の桁からの繰り上がりを入力として受け付けるものは「全加算器」(full adder:フルアダー)と呼ばれ、2つの半加算器とOR回路により構成することができる。最下位桁以外の加算には全加算器が用いられる。

全加算器 【フルアダー】

2進数の加算(足し算)を行う論理回路(加算器)のうち、下の桁からの繰り上がりを考慮し、3つの数の和を求める回路のこと。複数桁の加算機の構成要素となる。

加算を行う回路を加算器というが、全加算器は2つのビット列の同じ桁の値と、隣の下位桁からの繰り上がりを加算し、その桁の加算後の値と、上位桁への繰り上がりの有無を表す「キャリー」(carry out)の2つを出力する。キャリー出力は繰り上がりがなければ「0」、あれば「1」となる。

加算する3つの値の「0」と「1」の組み合わせにより「00」から「11」までの8種類の和が得られるが、下位ビットがその桁の値として、上位ビットが上位桁へのキャリーとして出力される。キャリーは隣の上位桁の全加算器に入力される。

一方、下位桁からの繰り上がりを考慮せず、単純に2つの値の和を求める回路を「半加算器」(half adder:ハーフアダー)という。繰り上がりのない最下位桁の和を求めるのに使われる。全加算器は半加算器2つとOR回路1つを組み合わせて構成することができる。

最下位桁に半加算器を置き、各桁についての全加算器を桁の数だけ並べて連結すると、複数桁の2進数の加算を行う論理回路を構成することができる。例えば、半加算器1つと全加算器7つを並べれば8ビットの全加算器となる。

ビット ⭐⭐⭐

情報量の最小単位で、二つの選択肢から一つを特定する情報の量。コンピュータなどでは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の補数となる。コンピュータ上での負の整数の表現や減算の実装などによく用いられる。

2の補数

ある自然数を2進数(2進法)で表現した時に、足し合わせるとちょうど桁が一つ増える最小の数のこと。コンピュータにおける負の整数の表現や数値演算などに応用される。

2進数における「基数の補数」と呼ばれる数で、ある数に足し合わせることで桁が一つ増え、最上位桁(値は「1」となる)以外はすべて「0」となるような数を指す。例えば、8桁の2進数「10010110」に対する2の補数は「1101010」であり、両者を足し合わせるとちょうど9桁の「100000000」となる。

これに対し、元の数に足し合わせると桁上りせず最も大きな数(「1111…」とすべての桁が1になる)となる補数は「1の補数」(2進数における減基数の補数)と呼ばれる。コンピュータでは1の補数はビット反転(NOT演算)によって求めることができ、これに1を加えると2の補数となる。

なお、2進数に限定せず2の補数という場合は、3進数における減基数の補数を指す場合もある。元の数に足し合わせると桁上りせず「2222…」とすべての桁が2になる数のことである。

算術演算子

プログラミング言語などで用いられる演算子のうち、四則演算(加減乗除)などの算術的な計算を行うもの。和を表す「+」、差を表す「-」などのこと。

ほとんどの言語では加減算は算術・数学と同じ「+」「-」を用いる。半角文字(ASCII文字)には乗算記号「×」と除算記号「÷」が用意されていないため、それぞれ「*」(アスタリスク)、「/」(スラッシュ)で代用することが多い。

一般の算術にはない記号として、剰余(割り算の余り)を求める演算子(C言語系の「%」など)や、累乗を求める演算子(BASIC系の「^」、PythonやJavaScriptの「**」など)が用意されている言語もある。

整数型の変数の値に1を加算するインクリメント演算子(C言語系の「++」など)や、同じく1を減算するデクリメント演算子(同「--」など)を算術演算に分類する場合もある。

固定小数点数

コンピュータが実数を扱うときの表現形式の一つで、小数点が特定の位置に固定されているもの。数の大きさに関わらず、整数部の桁数と小数部の桁数が決まっている。

数値を表すビット列のうち、何ビット目までが整数部で、何ビット目からが小数部かがあらかじめ固定・指定されている形式である。整数は小数点の位置が右端に固定されている特殊な場合の固定小数点数と考えることができる。

これに対し、ビット列全体を、正負を表す符号部、スケールを表す指数部、各桁の数の並びを表現する仮数部の3つに分け、基数(多くの場合2や10)を指数でべき乗した値を仮数にかけて数値を表現する方式を「浮動小数点数」(floating-point number)という。

固定小数点数は浮動小数点数に比べ表現できる値の範囲が狭く、計算の精度が低いが、整数と同じ原理や回路を用いて高速に計算できる。大きさが極端に違う数値の加減算で小さい値の情報が無視されてしまう「情報落ち」が起こらないという特徴もある。

汎用的な数値計算などでは浮動小数点数を用いるのが普通だが、3次元コンピュータグラフィックス(3DCG)の座標計算やDSP(デジタルシグナルプロセッサ)の信号処理など、扱う値の幅が決まっており高速性が重要な用途では計算の高速化のために固定小数点数が好まれることがある。

浮動小数点数 ⭐⭐

コンピュータにおける数値の表現形式の一つで、数値を桁の並びを表す仮数部と小数点の位置を表す指数部に分割して表現する方式。小数点以下の値を含む数値の表現法として最も広く利用されている。

一つの数値を符号部(正負)、仮数部、指数部の3つのデータの組み合わせで表現(データ形式としては符号-指数-仮数の順に格納することが多い)する。仮数に基数(通常は2)を指数乗した値を乗じ、符号を付け加えたものが表現する数値となる。

例えば、「-4.375」は2進数では「-100.011」であり、仮数と指数に分離すると「-1.00011×1010」(値はすべて2進表記)となる。符号は正を0、負を1とすることが多いため、符号部の値は「1」、仮数部の値は「100011」、指数部の値は「10」となる。数値が0の場合は符号と指数は不定となるが、便宜上各部をすべて0としたもの(+0.0×100)を0の表現として扱うことが多い。

IEEE 754形式

浮動小数点数は全体のデータ長や仮数部と指数部のビット数の配分などで様々な形式が存在するが、広く普及している標準規格としてIEEE 754形式が知られる。

全体で16ビット(符号1+指数5+仮数10)の「半精度浮動小数点数」、32ビット(符号1+指数8+仮数23)の「単精度浮動小数点数」、64ビット(符号1+指数11+仮数52)の「倍精度浮動小数点数」、128ビット(符号1+指数15+仮数112)の「四倍精度浮動小数点数」の4つの形式が定められており、それぞれ表現できる数値の幅の異なる。実用上は単精度と倍精度がよく用いられ、プログラミング言語や論理回路などでもこの2つに標準で対応しているものが多い。

仮数の2進数表現は先頭が必ず1になる(2以上の数字は使わない)ため、これを省略して代わりに下位の桁の表現に回す手法(俗にケチ表現という)が用いられる。また、指数部を符号なし整数とするため、本来の値に最大値の半分-1を足した表現(俗にゲタ履き表現という)を用いる。例えば指数部が8ビットの場合は127を加え、128が1を、126が-1を表す。

単精度浮動小数点数 (single precision floating point number)

数値を仮数部と指数部に分けて表現する浮動小数点数の形式の一つで、一つの数値を32ビットのデータで表現する方式のこと。多くのプログラミング言語などでは単に浮動小数点といえば単精度を意味し、“float” などの名称で表されるデータ型が用意されている。

IEEE 754標準で規定された形式では32ビットのうち先頭1ビットが正負の符号部(0が正、1が負)、続く7ビットが指数部(基数は2)、残り24ビットが仮数部となる。表現できる値の大きさの範囲は十進表記で約1.2×10-38~約3.4×1038であり、精度は十進7桁程度となる。

倍精度浮動小数点数 (double precision floating point number)

数値を仮数部と指数部に分けて表現する浮動小数点数の形式の一つで、一つの数値を64ビットのデータで表現する方式のこと。多くのプログラミング言語などが高精度な数値計算のために組み込みデータ型として用意しており、 “double” などの名称で表される。

IEEE 754標準で規定された形式では64ビットのうち先頭1ビットが正負の符号部(0が正、1が負)、続く11ビットが指数部(基数は2)、残り52ビットが仮数部となる。表現できる値の大きさの範囲は十進表記で約2.2×10-308~約1.8×10308であり、精度は十進16桁程度となる。

半精度浮動小数点数型

プログラミング言語などで用いられる数値データ型の一つで、16ビット長の浮動小数点数を格納することができるもの。言語や処理系により「half」「fp16」「binary16」などの型名で表される。

小数点数以下の桁数が可変であるような実数値を表現することができる浮動小数点数型の一つで、一つの数値を16ビットの長さのデータとして表す。標準規格として普及しているIEEE 754の「binary16」形式の場合、十進数で-65,504~65,504の範囲を表現することができ、精度は3桁である。

binary16形式では、先頭1ビットが正負を表す符号部、続く5ビットが小数点の位置を表す指数部、残りの10ビットが各桁の値の並びを表す仮数部となっている。仮数の先頭が「1」になるよう調整され、この1を省略して2桁目から格納するケチ表現を採用しているため、実質的には11ビットで仮数を表す。

多くのプログラミング言語やCPUは、32ビットの単精度浮動小数点数型を標準の浮動小数点数型として扱っているが、3次元コンピュータグラフィックス(3DCG)や機械学習などの分野では計算精度より計算回数の方が重要な場面が多く、大量のデータを扱うため記憶容量の削減にも繋がることから、半精度浮動小数点数への対応が進みつつある。

浮動小数点数

コンピュータにおける数値の表現形式の一つで、数値を桁の並びを表す仮数部と小数点の位置を表す指数部に分割して表現する方式。小数点以下の値を含む数値の表現法として最も広く利用されている。

一つの数値を符号部(正負)、仮数部、指数部の3つのデータの組み合わせで表現(データ形式としては符号-指数-仮数の順に格納することが多い)する。仮数に基数(通常は2)を指数乗した値を乗じ、符号を付け加えたものが表現する数値となる。

例えば、「-4.375」は2進数では「-100.011」であり、仮数と指数に分離すると「-1.00011×1010」(値はすべて2進表記)となる。符号は正を0、負を1とすることが多いため、符号部の値は「1」、仮数部の値は「100011」、指数部の値は「10」となる。数値が0の場合は符号と指数は不定となるが、便宜上各部をすべて0としたもの(+0.0×100)を0の表現として扱うことが多い。

IEEE 754形式

浮動小数点数は全体のデータ長や仮数部と指数部のビット数の配分などで様々な形式が存在するが、広く普及している標準規格としてIEEE 754形式が知られる。

全体で16ビット(符号1+指数5+仮数10)の「半精度浮動小数点数」、32ビット(符号1+指数8+仮数23)の「単精度浮動小数点数」、64ビット(符号1+指数11+仮数52)の「倍精度浮動小数点数」、128ビット(符号1+指数15+仮数112)の「四倍精度浮動小数点数」の4つの形式が定められており、それぞれ表現できる数値の幅の異なる。実用上は単精度と倍精度がよく用いられ、プログラミング言語や論理回路などでもこの2つに標準で対応しているものが多い。

仮数の2進数表現は先頭が必ず1になる(2以上の数字は使わない)ため、これを省略して代わりに下位の桁の表現に回す手法(俗にケチ表現という)が用いられる。また、指数部を符号なし整数とするため、本来の値に最大値の半分-1を足した表現(俗にゲタ履き表現という)を用いる。例えば指数部が8ビットの場合は127を加え、128が1を、126が-1を表す。

単精度浮動小数点数 (single precision floating point number)

数値を仮数部と指数部に分けて表現する浮動小数点数の形式の一つで、一つの数値を32ビットのデータで表現する方式のこと。多くのプログラミング言語などでは単に浮動小数点といえば単精度を意味し、“float” などの名称で表されるデータ型が用意されている。

IEEE 754標準で規定された形式では32ビットのうち先頭1ビットが正負の符号部(0が正、1が負)、続く7ビットが指数部(基数は2)、残り24ビットが仮数部となる。表現できる値の大きさの範囲は十進表記で約1.2×10-38~約3.4×1038であり、精度は十進7桁程度となる。

倍精度浮動小数点数 (double precision floating point number)

数値を仮数部と指数部に分けて表現する浮動小数点数の形式の一つで、一つの数値を64ビットのデータで表現する方式のこと。多くのプログラミング言語などが高精度な数値計算のために組み込みデータ型として用意しており、 “double” などの名称で表される。

IEEE 754標準で規定された形式では64ビットのうち先頭1ビットが正負の符号部(0が正、1が負)、続く11ビットが指数部(基数は2)、残り52ビットが仮数部となる。表現できる値の大きさの範囲は十進表記で約2.2×10-308~約1.8×10308であり、精度は十進16桁程度となる。

浮動小数点数

コンピュータにおける数値の表現形式の一つで、数値を桁の並びを表す仮数部と小数点の位置を表す指数部に分割して表現する方式。小数点以下の値を含む数値の表現法として最も広く利用されている。

一つの数値を符号部(正負)、仮数部、指数部の3つのデータの組み合わせで表現(データ形式としては符号-指数-仮数の順に格納することが多い)する。仮数に基数(通常は2)を指数乗した値を乗じ、符号を付け加えたものが表現する数値となる。

例えば、「-4.375」は2進数では「-100.011」であり、仮数と指数に分離すると「-1.00011×1010」(値はすべて2進表記)となる。符号は正を0、負を1とすることが多いため、符号部の値は「1」、仮数部の値は「100011」、指数部の値は「10」となる。数値が0の場合は符号と指数は不定となるが、便宜上各部をすべて0としたもの(+0.0×100)を0の表現として扱うことが多い。

IEEE 754形式

浮動小数点数は全体のデータ長や仮数部と指数部のビット数の配分などで様々な形式が存在するが、広く普及している標準規格としてIEEE 754形式が知られる。

全体で16ビット(符号1+指数5+仮数10)の「半精度浮動小数点数」、32ビット(符号1+指数8+仮数23)の「単精度浮動小数点数」、64ビット(符号1+指数11+仮数52)の「倍精度浮動小数点数」、128ビット(符号1+指数15+仮数112)の「四倍精度浮動小数点数」の4つの形式が定められており、それぞれ表現できる数値の幅の異なる。実用上は単精度と倍精度がよく用いられ、プログラミング言語や論理回路などでもこの2つに標準で対応しているものが多い。

仮数の2進数表現は先頭が必ず1になる(2以上の数字は使わない)ため、これを省略して代わりに下位の桁の表現に回す手法(俗にケチ表現という)が用いられる。また、指数部を符号なし整数とするため、本来の値に最大値の半分-1を足した表現(俗にゲタ履き表現という)を用いる。例えば指数部が8ビットの場合は127を加え、128が1を、126が-1を表す。

単精度浮動小数点数 (single precision floating point number)

数値を仮数部と指数部に分けて表現する浮動小数点数の形式の一つで、一つの数値を32ビットのデータで表現する方式のこと。多くのプログラミング言語などでは単に浮動小数点といえば単精度を意味し、“float” などの名称で表されるデータ型が用意されている。

IEEE 754標準で規定された形式では32ビットのうち先頭1ビットが正負の符号部(0が正、1が負)、続く7ビットが指数部(基数は2)、残り24ビットが仮数部となる。表現できる値の大きさの範囲は十進表記で約1.2×10-38~約3.4×1038であり、精度は十進7桁程度となる。

倍精度浮動小数点数 (double precision floating point number)

数値を仮数部と指数部に分けて表現する浮動小数点数の形式の一つで、一つの数値を64ビットのデータで表現する方式のこと。多くのプログラミング言語などが高精度な数値計算のために組み込みデータ型として用意しており、 “double” などの名称で表される。

IEEE 754標準で規定された形式では64ビットのうち先頭1ビットが正負の符号部(0が正、1が負)、続く11ビットが指数部(基数は2)、残り52ビットが仮数部となる。表現できる値の大きさの範囲は十進表記で約2.2×10-308~約1.8×10308であり、精度は十進16桁程度となる。

符号部

数値をコンピュータ上で浮動小数点型のデータとして表現したときに、正負の符号を表す部分のこと。ほとんどの場合、先頭1ビットが0なら正、1なら負とする。

コンピュータ上では実数を表す数値表現として浮動小数点をよく用いる。これは数を「仮数×基数指数」という形式で表現するが、コンピュータ上ではすべての情報を「0」と「1」を組み合わせたデジタルデータとして表すため、仮数や指数は2進数で表し、基数は2となる。

浮動小数点数をビット列として表したとき、正負を表す符号の部分を「符号部」、仮数の桁の並びを格納した部分を「仮数部」、仮数に2の何乗をかけるかを表す指数を格納した部分を「指数部」という。データ型ごとに決められたビット数の中にこの3つを規定の長さずつ並べる。

例えば、標準規格のIEEE 754形式の場合、32ビット長の単精度浮動小数点数型では符号部1ビット、指数部8ビット、符号部23ビットがこの順に並んでいる。64ビット長の倍精度浮動小数点数型ではそれぞれ1ビット、11ビット、52ビットであり、16ビット長の半精度浮動小数点数型では1ビット、5ビット、10ビットとなる。いずれの場合も符号部が「0」なら正の数、「1」なら負の数を表す。

仮数部

数値をコンピュータ上で浮動小数点型のデータとして表現したときに、各桁の数字の並びを表す部分のこと。その数の有効数字を表している。

コンピュータ上では実数を表す数値表現として浮動小数点をよく用いる。これは数を「仮数×基数指数」という形式で表現するが、コンピュータ上ではすべての情報を「0」と「1」を組み合わせたデジタルデータとして表すため、仮数や指数は2進数で表し、基数は2となる。

浮動小数点数をビット列として表したとき、正負を表す符号の部分を「符号部」、仮数の桁の並びを格納した部分を「仮数部」、仮数に2の何乗をかけるかを表す指数を格納した部分を「指数部」という。データ型ごとに決められたビット数の中にこの3つを規定の長さずつ並べる。

例えば、標準規格のIEEE 754形式の場合、32ビット長の単精度浮動小数点数型では符号部1ビット、指数部8ビット、仮数部23ビットがこの順に並んでいる。64ビット長の倍精度浮動小数点数型ではそれぞれ1ビット、11ビット、52ビットであり、16ビット長の半精度浮動小数点数型では1ビット、5ビット、10ビットとなる。

なお、同じ数値でも仮数と指数の組み合わせには様々なパターンがあり得るが、通常は仮数が必ず「1.01101…」のように実数部分が「1」になるよう指数を調整する。実数は常に1であるため省略することができ、小数点以下の「01101…」の部分だけを記録すればよい。これを「けち表現」(hidden bit)と呼び、仮数のすべての桁を記録する場合より精度を1ビット向上させることができる。

指数部

数値をコンピュータ上で浮動小数点型のデータとして表現したときに、小数点の位置を指し示す部分のこと。その数のスケールを表している。

コンピュータ上で実数を表す数値表現として浮動小数点をよく用いる。これは数を「仮数×基数指数」という形式で表現する方式で、コンピュータではすべての情報を「0」と「1」を組み合わせたデジタルデータとして表すため、仮数や指数は2進数で表し、基数は2となる。

浮動小数点数をビット列として表したとき、正負を表す部分を「符号部」、仮数の桁の並びを格納した部分を「仮数部」、仮数に2の何乗をかけるかを表す指数を格納した部分を「指数部」という。データ型ごとに決められたビット数の中にこの3つを規定の長さずつ並べる。

例えば、標準規格のIEEE 754形式の場合、32ビット長の単精度浮動小数点数型では符号部1ビット、指数部8ビット、仮数部23ビットがこの順に並んでいる。64ビット長の倍精度浮動小数点数型ではそれぞれ1ビット、11ビット、52ビットであり、16ビット長の半精度浮動小数点数型では1ビット、5ビット、10ビットとなる。

なお、例えば指数部が8ビットの場合、指数は-128~127の値をとり得るが、指数部の整数表現として符号付き整数は用いず、0から255までの符号なし整数で表すことが多い。これを「イクセス表現」(excess notation/excess-N)「下駄履き表現」「バイアス表現」「オフセットバイナリ」等と呼ぶ。格納された値から127を引いたものが実際の値であり、「0」なら-127を、「127」なら0を、「255」なら128をそれぞれ表す。

指数部は特殊な値を表現するのに用いられることもある。例えば、IEEE 754形式では、指数部の値が最大値(8ビットなら255、実際の値は128)のとき、仮数部が0以外なら非数(NaN:Not a Number)を、仮数部が0の場合は無限大(正負は符号部で指定)を表す。また、指数部が最小値(8ビットなら0、実際の値は-127)のとき、仮数部が0なら「0」を、仮数部が0以外の場合は非正規化数(正規化できない絶対値が極端に小さな値)を表す。

アンダーフロー

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

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

例えば、一つの値を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 のように扱うため、これに大きな数を掛けるなど続けて計算していくことで、途中で生じた桁の欠落が最終的に大きな誤差を生じさせてしまうことがある。

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

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

算術オーバーフロー

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

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

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

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

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

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

アンダーフロー(underflow)

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

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

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

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

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

端数処理 【丸め処理】

長い桁の数から、特定の短い桁の概数を求めること。「丸め処理」「丸め」とも言う。規定の桁数を超える部分をどう扱うかによっていくつかの方法がある。

例えば、「123.45」という数値を整数に丸める場合、整数部分だけを残して「123」とする処理を「切り捨て」、小数部分を「1」とみなして「124」とする処理を「切り上げ」という。また、小数部分が0.5以上なら切り上げ、0.5未満なら切り捨てる処理を「四捨五入」という。

負数を丸める場合、「-1.5の切り捨て」を絶対値の小数部分を切り捨てて「-1」とするか、正数と同じ方向に値を減らして「-2」とするか考え方が分かれる。通常は前者を採用するが、正確に伝えたい場合は前者を「0への丸め」、後者を「負の無限大への丸め」と呼ぶことがある。

切り上げについても、絶対値に着目して「-1.5」を「-2」とする考え方を「無限大への丸め」、値の増減に着目して「-1.5」を「-1」とする考え方を「正の無限大への丸め」という。四捨五入は正数と同じく最も近い値に丸めるのが原則だが、コンピュータでは端数がちょうど0.5の場合の処理が処理系によって異なる場合がある。

切り上げ、切り捨て、四捨五入の他にも、四捨五入で端数がちょうど0.5の場合は結果が偶数になるように丸める「偶数への丸め」、端数が0.5の場合に奇数になるように丸める「奇数への丸め」、端数0.5までは切り捨てて0.5よりも大きければ切り上げる「50捨51入」などもある。

プログラミング言語や表計算ソフトなどでは、四捨五入を表す関数名やメソッド名には「round」が、切り上げには「ceil」(「天井」の意)または「roundup」が、切り捨てには「floor」(「床」の意)あるいは「rounddown」が用いられることが多い。

丸め誤差 ⭐⭐

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

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

コンピュータは数値を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 【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)が市場を二分する。

タスク

仕事、課業、職務、任務などの意味を持つ英単語。ビジネス用語として業務を構成する個々の作業や工程などを表すほか、コンピュータの分野ではソフトウェアの実行単位のことをタスクということがある。

ソフトウェアについてタスクという場合、分野や製品などによっていくつかの用法があり統一された厳格な定義などはない。よく知られる用法としては、メインメモリ上に展開され実行状態にあるプログラムのことを指すもので、「プロセス」(process)とほぼ同義である。

複数のプロセスを同時並行に実行できるOSの機能や構造を「マルチタスク」(multitasking)、そのような機能がなく同時に一つのプロセスしか実行できないことを「シングルタスク」(single-tasking)という。

また、一つのプログラムが並行する複数の処理の流れを同時に実行する場合に、その一つ一つの連続した命令の流れのことをタスクということがあり、こちらは「スレッド」(thread)とほぼ同義となる。

Windowsのタスクスケジューラのように、ある目的のために順番に連続して実行されるひとまとまりのプログラムやコマンドの集合のことをタスクということがあるが、これはWindows以外では一般に「ジョブ」(job)と呼ばれることが多い。

デバイスドライバ 【ドライバソフト】

コンピュータ内部に装着された装置や、外部に接続した機器などのハードウェアを制御・操作するためのソフトウェア。OSの一部として取り込まれて一体的に動作する。

オペレーティングシステム(OS)がハードウェアを制御するための橋渡しを行なうプログラムで、利用者が直接操作することは稀で、OSに組み込まれてその機能の一部として振舞うようにできている。単に「ドライバ」と呼ばれることも多い。

OSや各プログラムは定められた手順でデバイスドライバに処理を依頼する形を取ることで、それぞれが個別のハードウェアの制御仕様に直接対応する必要がなくなり、また、機種の違いに依らず同じ機能は同じ手順で利用することができるようになる。

個別ドライバと標準ドライバ

個々のハードウェアはそれぞれ固有の機能や制御仕様を持っているため、原則として機種ごとに対応するデバイスドライバを入手・導入しなければ使用・操作することはできない。

ただし、キーボードやマウスなど機種毎の機能や仕様の差異が小さい装置については業界団体や有力メーカーが主導して共通仕様が定められている場合があり、OSに付属する標準のドライバ(ジェネリックドライバなどと呼ばれる)で大半の機能を使用できることが多い。

ドライバの入手・導入

コンピュータ周辺機器はパッケージの一部として添付された記憶メディアに電子マニュアルやユーティリティソフトなどとともにデバイスドライバが同梱され、簡単な操作でOSに導入できるようになっていることが多い。

また、開発元のWebサイトでダウンロードできるようになっている場合もあるほか、Windows UpdateなどOSのソフトウェア更新プログラムを経由して入手できるようになっていることもある。

デバイスドライバはOSごとに開発する必要があるため、Windowsのような有力なOSではほとんどのメーカーがデバイスドライバを用意しているが、マイナーなOSだと物理的に装着できてもドライバが提供されず使用できない場合がある。

ファイル ⭐⭐

コンピュータにおけるデータの管理単位の一つで、ストレージ装置(外部記憶装置)などにデータを記録する際に利用者やオペレーティングシステム(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(アクティブディレクトリ)が特に有名である。

拡張子

ファイル名の末尾で「.」(ドット/ピリオド)の後ろにある英数字1~4文字程度の符号。ファイルの種類やデータ形式を表している。

一般的なコンピュータのストレージ(外部記憶装置)では、データを「ファイル」というかたまりに分けて保管している。各ファイルはシステムや利用者が命名した「ファイル名」によって識別されるが、その末尾にある「.」より後の部分を拡張子という。例えば、「新しいテキスト ドキュメント.txt」というファイル名の拡張子は「.txt」(あるいは「txt」)である。

拡張子はファイルの種類や形式を表すために付与されるもので、慣例として1~4文字程度の半角英数字の組み合わせが用いられることが多い。現代のほとんどのファイルシステムには文字数や文字種の制限はないが、かつてパソコン用OSとして普及していた「MS-DOSエムエスドス」には半角3文字(3バイト)までの制約があったため、後継のWindowsや他のシステムでも習慣的に(ピリオドを除いて)3文字の拡張子が多い。

複数のファイル形式が複合的に用いられている場合には「backup.tar.gz」のように二重に拡張子を付与することがある。この例の場合、複数のファイルをtar形式で一つにまとめ(アーカイブ)、gzip形式で圧縮したファイルという意味になる。ファイル形式自体は最後尾(.gz)の拡張子が表している。

拡張子の機能

Windowsではファイルを指定して開くよう指示すると拡張子を元に関連付けられたアプリケーションソフトを自動的に起動するようになっている。このため、システムが内部で使用する特殊なファイルなどを除き、原則としてすべてのファイルに拡張子が付与されている。

LinuxなどのUNIX系OSでは、ファイル名を見ただけで形式が分かるよう利用者にとっての便宜のために付けられるだけで、システム上の動作を指定するような働きはない。macOS(Mac OS X)ではファイルの種類の判別に独自の仕様を用いるが、一部のバージョンでは拡張子も用いる。

OS以外でも、例えばWebサーバやWebブラウザがファイルを送受信する際、データの種類を指定するMIMEタイプが不明な場合などにファイル名の拡張子を頼りにファイル形式を判断するといった用途に用いられている。システムが拡張子を利用しないUNIX系OSでも、ソフトウェアによっては拡張子を見てファイル形式を判断する動作を行うものがある。

拡張子の表示・変更

OSのデスクトップ画面やエクスプローラーなどのファイル管理システムでファイルやフォルダの一覧を表示すると、アイコン画像と共にファイル名が表示される。近年のWindowsやmacOSでは既定(デフォルト)の動作が拡張子非表示となっており、設定を変更しないと表示されるようにならない。

拡張子はファイル名本体と同じで利用者が自由に変更できるが、みだりに変更すると正しいソフトウェアで開けなくなる場合がある。実際のファイル形式と一致しているかチェックする仕組みなどはないため、拡張子を誤読させて利用者に実行させる(内容を閲覧するつもりでプログラムとして実行してしまう)手口を用いるコンピュータウイルスなども存在する。

パス 【パス名】

小道、道筋、進路、通り道などの意味を持つ英単語で、ITの分野では、コンピュータ内で特定の資源の所在を表す文字列のことをパスという。ストレージ(外部記憶装置)内でファイルやディレクトリ(フォルダ)の位置を表すのに用いられるが、他の用途でも使われる。

ストレージの多くはファイルシステムによって管理され、多数のファイルをグループ分けして整理しやすいように、複数のファイルを格納できる「ディレクトリ」(directory)が多段階の入れ子状になった構造になっている。これを階層構造と捉えて、最上位から順にディレクトリ名を並べて記したものがパスである。

例えば、LinuxなどのUNIX系OSで「/foo/var/hoge.txt」というパスは、ルートディレクトリ(最上位ディレクトリ)にある「foo」ディレクトリの中の「var」ディレクトリの中にある「hoge.txt」というファイルを指している。

Windows(および前身のMS-DOSなど)では、先頭をドライブレターに「:」(コロン)とし、区切り文字を「\」(日本では円マーク「¥」、欧米ではバックスラッシュ「\」)として「C:\foo\var\hoge.txt」のように表す。この例は、Cドライブの「foo」フォルダの中の「var」フォルダの中の「hoge.txt」ファイルを指す。

相対パスと絶対パス

現在操作対象としているディレクトリ位置(カレントディレクトリ)を起点に、相対的な位置を記述する記法を「相対パス」(relative path)、階層構造の頂点(ルートディレクトリ)からの位置を記述する記法を「絶対パス」(absolute path)という。

相対パスは現在位置を「.」、一つ上の階層の親ディレクトリを「..」という特殊な表記で表し、「./hoge.txt」(カレントディレクトリにあるhoge.txt)や「../../hoge.txt」(2階層上のディレクトリのhoge.txt)のように書き表す。

特殊なパス

パスが最もよく使われるのはファイルシステムで管理されるストレージにおけるファイルやディレクトリの位置の記述だが、ストレージ以外の周辺機器などを指し表す特殊なパス表記が使われることもある。

例えば、UNIX系OSでは「/dev」以下のパスには周辺機器や標準入出力、特殊な機能(出力を捨てるための/dev/null等)にアクセスできる「スペシャルファイル」が置かれており、Windowsでも画面出力を表す「con」やプリンタを表す「prn」など特殊なパス(予約デバイス名)が存在する。

また、UNIX系OSでは個々の利用者のためのスペースとしてホームディレクトリが設けられ、標準的には「/home/ユーザー名」という位置に置かれる。自分のホームディレクトリは「~」(チルダ)という特殊な記号で表すこともできる。すなわち、「~」の指し示すストレージ内での位置はログインしているユーザーによって異なる。

UNC

Windowsではパスの表記をネットワーク上の他のコンピュータの共有資源(共有フォルダなど)に拡張したものとして「UNC」(Universal Naming Convention)が定められている。これは先頭に「\\コンピュータ名\共有名」を付けたもので、残りはそのコンピュータ内でのパスが続く。これにより別のコンピュータの共有フォルダの中のファイルや共有プリンタなどを通常のパスと同じように書き表すことができる。

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

ファイルなどの所在を書き表すパス(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」という位置に置かれている場合に、これをフルパスと呼ぶ。

パス 【パス名】

小道、道筋、進路、通り道などの意味を持つ英単語で、ITの分野では、コンピュータ内で特定の資源の所在を表す文字列のことをパス名という。ストレージ(外部記憶装置)内でファイルやディレクトリ(フォルダ)の位置を表すのに用いられるが、他の用途でも使われる。

ストレージの多くはファイルシステムによって管理され、多数のファイルをグループ分けして整理しやすいように、複数のファイルを格納できる「ディレクトリ」(directory)が多段階の入れ子状になった構造になっている。これを階層構造と捉えて、最上位から順にディレクトリ名を並べて記したものがパス名である。

例えば、LinuxなどのUNIX系OSで「/foo/var/hoge.txt」というパス名は、ルートディレクトリ(最上位ディレクトリ)にある「foo」ディレクトリの中の「var」ディレクトリの中にある「hoge.txt」というファイルを指している。

Windows(および前身のMS-DOSなど)では、先頭をドライブレターに「:」(コロン)とし、区切り文字を「\」(日本では円マーク「¥」、欧米ではバックスラッシュ「\」)として「C:\foo\var\hoge.txt」のように表す。この例は、Cドライブの「foo」フォルダの中の「var」フォルダの中の「hoge.txt」ファイルを指す。

相対パスと絶対パス

現在操作対象としているディレクトリ位置(カレントディレクトリ)を起点に、相対的な位置を記述する記法を「相対パス名」(relative path)、階層構造の頂点(ルートディレクトリ)からの位置を記述する記法を「絶対パス名」(absolute path)という。

相対パスは現在位置を「.」、一つ上の階層の親ディレクトリを「..」という特殊な表記で表し、「./hoge.txt」(カレントディレクトリにあるhoge.txt)や「../../hoge.txt」(2階層上のディレクトリのhoge.txt)のように書き表す。

特殊なパス

パス名が最もよく使われるのはファイルシステムで管理されるストレージにおけるファイルやディレクトリの位置の記述だが、ストレージ以外の周辺機器などを指し表す特殊なパス名表記が使われることもある。

例えば、UNIX系OSでは「/dev」以下のパス名には周辺機器や標準入出力、特殊な機能(出力を捨てるための/dev/null等)にアクセスできる「スペシャルファイル」が置かれており、Windowsでも画面出力を表す「con」やプリンタを表す「prn」など特殊なパス名(予約デバイス名)が存在する。

また、UNIX系OSでは個々の利用者のためのスペースとしてホームディレクトリが設けられ、標準的には「/home/ユーザー名」という位置に置かれる。自分のホームディレクトリは「~」(チルダ)という特殊な記号で表すこともできる。すなわち、「~」の指し示すストレージ内での位置はログインしているユーザーによって異なる。

UNC

Windowsではパス名の表記をネットワーク上の他のコンピュータの共有資源(共有フォルダなど)に拡張したものとして「UNC」(Universal Naming Convention)が定められている。これは先頭に「\\コンピュータ名\共有名」を付けたもので、残りはそのコンピュータ内でのパス名が続く。これにより別のコンピュータの共有フォルダの中のファイルや共有プリンタなどを通常のパス名と同じように書き表すことができる。

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

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

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

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

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

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

ミドルウェア 【MW】

ソフトウェアの種類の一つで、オペレーティングシステム(OS)とアプリケーションソフトの中間に位置し、様々なソフトウェアから共通して利用される機能を提供するもの。OSが提供する機能よりも分野や用途が限定された、具体的・個別的な機能を提供する場合が多い。

多くのアプリケーションで共通して利用される機能やハードウェアの基本的な制御機能などは、個別に開発するのは非効率であるため、通常はOSの機能として提供され、アプリケーションはOSの機能を利用するだけで済むようになっている。

ただ、そのようなOSの機能はほとんどのアプリケーションが必要とするような極めて基本的・汎用的なものに限られるため、特定の分野でしか使われないが、その分野では必ず必要とされるような機能がミドルウェアとして提供されることが多い。

また、ミドルウェアの中には複数のOSやハードウェアに対応し、OSや機種ごとの差異を吸収する設計となっているものもある。アプリケーション開発者はシステムごとの違いを気にせずに、効率的に開発を進めることができる。

ミドルウェアの種類

どのような機能がミドルウェアとして提供されるかは分野によって大きく異なる。インターネット上のサーバなどではWebサーバやデータベース管理システム(DBMS)、アプリケーションサーバ、データ連携ツールなどが該当する。

業務システムなどでは、こうしたアプリケーションの基盤となる機能だけでなく、自身がアプリケーションとして動作し、システムの運用や管理など行うものをミドルウェアと呼ぶことがある。例えば、バックアップソフト、クラスタソフト、システム監視ツール、運用管理ツールなどである。

組み込みシステムのミドルウェア

産業機械やデジタル家電といった、いわゆる組み込みシステムでは、機器の性能や記憶容量が乏しく、分野や用途によって必要なソフトウェアの機能が大きく異なるため、OS標準の機能が最小限に絞り込まれていることが多い。

このため、パソコンやサーバではOSが提供するような基本的な機能も必要な場合にのみミドルウェアとして組み入れる仕組みになっている場合もある。ファイルシステムやネットワーク通信、グラフィック表示の操作画面(GUI:Graphical User Interface)などの機能である。

ライブラリやモジュールとの違い

汎用的な機能をアプリケーションに提供するソフトウェアには「ライブラリ」(library)や「モジュール」(module)なども存在するが、これらは単体では動作しないプログラム部品として提供され、アプリケーションの一部に組み込まれて一体的に動作する。

一方、DBMSのようなミドルウェアは単体で動作するソフトウェアであり、システム上に常駐して外部から処理依頼を受け付け、結果を送り返す。アプリケーション本体とは独立しており、配布や導入・設定、起動や終了などもアプリケーションとは別に行われるのが一般的である。

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

ある特定の機能や目的のために開発・使用されるソフトウェア。利用者が目的に応じて導入し、オペレーティングシステム(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)に変換されてから実行される。スクリプト言語のように、この変換処理を開発時には行わず、実行時にインタプリタなどのソフトウェアによって動的に行う場合もある。

ソースコード 【ソースプログラム】 ⭐⭐

プログラミング言語などの人間が理解・記述しやすい言語やデータ形式を用いて書き記されたコンピュータプログラムのこと。プログラムに限らず、人工言語や一定の規約・形式に基いて記述された複雑なデータ構造の定義・宣言などのこともソースコードと呼ぶ場合がある。

コンピュータへの指示や一連の処理手順などをプログラミング言語によって文字データの羅列として表記したもので、そのままではコンピュータ(のCPU)では実行できないため、CPUが直に解釈できる命令コードの体系である機械語(マシン語)によるプログラムに変換されて実行される。

変換後の機械語による実行可能プログラムを「オブジェクトコード」(object code)、「オブジェクトプログラム」(object program)、「ネイティブコード」(native code)、「ネイティブプログラム」(native program)、「バイナリコード」(binary code)などと呼ぶ。

実行可能形式への変換

ソースコードからオブジェクトコードへの変換はソフトウェアによって自動的に行うのが一般的となっている。アセンブリ言語で記述されたソースコードを変換することを「アセンブル」(assemble)、そのようなソフトウェアを「アセンブラ」(assembler)という。

アセンブリ言語以外の高水準言語で記述されたソースコードを一括して変換することは「コンパイル」(compile)と言い、そのようなソフトウェアを「コンパイラ」(compiler)という。実行時に少しずつ変換しながら並行して実行するソフトウェアもあり、「インタプリタ」(interpreter)と呼ばれる。

開発時にソースコードから直接オブジェクトコードへ変換せずに、特定の機種やオペレーティングシステム(OS)の仕様・実装に依存しない機械語風の独自言語による表現(中間コード)に変換して配布し、実行時に中間コードからCPU固有の機械語に変換するという二段階の変換方式を用いる言語や処理系もある。

ソースコードの作成

ソースコードは多くの場合、人間がキーボードなどを操作して文字を入力して記述する。この作業・工程を「コーディング」(coding)という。ソースコードはテキストデータの一種であるため文書編集ソフトで作成することはできず、テキストエディタや統合開発環境(IDE)に付属する専用のコードエディタなどを用いることが多い。

必ずしも人間が記述するとは限らず、何らかの元になるデータや入力からソフトウェアによって生成したり、別の言語で記述されたソースコードを変換して生成したり、オブジェクトコードを逆変換してソースコードに戻したりといった方法で、ソフトウェアが自動的・機械的に作成する場合もある。

ソースコードの公開・非公開

日本を含む多くの国でソースコードは著作物の一種として著作権で保護されている。販売される商用ソフトウェア製品の多くは、ソースコードを企業秘密として非公開とし、人間に可読でない中間コードやオブジェクトコードによる実行プログラムのみを利用者に提供している。

一方、ソースコードを公開し、誰でも自由に入手、利用、改変、再配布、販売などができるようにしている場合もある。そのようなソフトウェアを、ソースコードがオープンになっているという意味で「オープンソースソフトウェア」(OSS:Open Source Software)という。ボランティアのプログラマが個人あるいは共同で開発しているソフトウェアに多いが、企業がOSSを開発・公開している例も多く見られる。

TRON 【The Real-time Operating system Nucleus】

あらゆる機器、施設、設備にコンピュータが内蔵され、それらが相互に通信して連携動作する社会の到来を想定し、その中核となるコンピュータやソフトウェアのアーキテクチャ(基本設計)を構築することを目指すプロジェクト。1984年に当時東京大学助手だった坂村健氏が開始した。

人間を取り巻く様々なモノにICチップやコンピュータシステムが組み込まれ、それらがネットワークで接続され協調動作することで社会インフラとして機能するシステムを「HFDS」(Highly Functionally Distributed System:超機能分散システム)と呼び、その実現に向けて各種技術のオープンな仕様の策定を推進した。特に、電子機器に組み込まれてその制御を司るリアルタイムOSの共通仕様の策定・普及で大きな役割を果たした。

TRONでは主にデータ形式やインターフェース仕様、利用者の操作体系(HMI:Human Machine Interface)などの仕様を策定し、ソフトウェアやハードウェアそのものの仕様や実装はほとんど規定していない。これは、システムを構成する要素間の互換性や接続性が確保されていれば、個々の製品の仕様は開発者が自由に決定すべきとする基本方針による。

TRONプロジェクト全体はいくつかのサブプロジェクトに分かれており、

  • CPU仕様を策定する「TRONCHIP」(TRON仕様チップ)
  • 組込み機器用リアルタイムOSの仕様を策定する「ITRON」(Industrial TRON)
  • パソコンなどの人間が直接操作するコンピュータの装置やOSの仕様を策定する「BTRON」(Business TRON)
  • 通信機器のOSやネットワークシステムの技術基盤を確立する「CTRON」(Communication and Central TRON)
  • HFDSの構成要素を有機的に結びつけ連携させるOSの実現を目指す「MTRON」(Macro TRON)

などの研究・開発プロジェクトが置かれた。最も広く産業応用が進んだのはITRONで、後にITRONを核として「μITRON」や「JTRON」「eTRON」「T-Engine」などの派生プロジェクトが誕生した。

μITRON (micro ITRON)

TRONプロジェクトが策定している、産業機器などへの組み込みシステムに搭載するリアルタイムOSの標準仕様をμITRON(マイクロアイトロン)という。同仕様を策定するTRONプロジェクトのサブプロジェクトの名称でもある。

産業機器や輸送機械、家電製品、情報・通信機器などに組み込むコンピュータシステムを制御するためのOSの標準仕様を定めたもので、この仕様に準拠したOSを企業などが開発している。μITRON準拠のOSは様々な機器・プロセッサ向けに数十種類が存在すると言われる。

組み込みシステムの事情に即し、詳細で厳密な標準化やハードウェアの抽象化を避け、個々のOSの実装によりハードウェアの性能や機能を発揮できるようになっているが、μITRON準拠OS間の互換性が低く、ソフトウェアの移植性や再利用性が低いという問題もある。

最初のITRON仕様は1987年に発表され、1989年に後継のフルセット規格ITRON2と、小規模システム向けに仕様を絞り込んだμITRON2が発表された。その後、μITRONの方が広く普及したため、バージョン3.0からはμITRONが規格名称となり、仕様の縮小に関する規約も仕様本体に取り込まれた

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