コンソール

**コンソール**（）とは制御卓、制御盤、操作卓などの意味を持つ英単語で、大型機械や電子機器などの操作や監視のための装置を一か所に集めた盤状あるいは卓状の装置のことだが、派生的な意味として、コンピュータの入出力装置や、文字の入出力による対話的な操作システム、オペレーティングシステム（OS）を操作・制御する画面などを表す。

## 大型コンピュータにおけるコンソール

狭義のコンソールとは、パーソナルコンピュータ（パソコン、PC）が登場する以前の、大型のコンピュータ（汎用機あるいはメインフレーム）やミニコンピュータ（ミニコン）に設けられた、運用（運転）の制御をするための装置を指す。コンピュータをオペレーターが操作するために必要な入出力装置を備えた制御盤である。

### システムコンソール
Manchester Small-Scale Experimental Machine（1948年）やIBM 1620（1959年）と言った最初期のコンソールの時代は英数字の入出力が可能なキーボードやディスプレイが存在せず、フラットパネルに並んだトグルスイッチや電球のオン・オフからシステムの状態を読み取るしかなかったが、1960年代以降はキーボードとディスプレイを最初から備えているか、コンソール本体に搭載していなくてもシリアルポートを使ってキーボードとディスプレイを備えた端末を接続して使うのが一般化した。このようにテキストによる入出力が可能で、英数字の表示可能なディスプレイが搭載されてシステムのことを表示できるコンソールのことを**システムコンソール**と呼ぶ。

システムコンソールとして当時に一般的に用いられたのは、CUI/CLIを利用して対話的にコマンドを実行するためのキーボードとビデオディスプレイを備えた操作卓であり、GUIは存在しなかった。そのためGUIの普及した現代においても、コンソールの機能をエミュレートする場合は普通CUIのシステムコンソールがエミュレートされる。

### シリアルコンソール

ミニコンやサーバ等、キーボードやディスプレイを接続せずに運用する機器においては、シリアルポートを通じて接続された別の機器（ビデオ表示端末）がシステムコンソールとして利用される。これを**シリアルコンソール**と呼ぶ。DECのVT100（1978年）が代表的なシリアルコンソールで、1970年代から1980年代にかけて大いに普及したが、パーソナルコンピュータの普及以後はシステム標準ソフトウェアの一つとしてエミュレートにより実現されることが多い。

## パーソナルコンピュータにおけるコンソール

パーソナルコンピュータにおいては非常に小さなコンピュータシステムが事実上コンソールと一体化しているといって良く、これらがシステムの一部分として区別されることはほとんどない。その一方で、ソフトウェアを用いてシステム上に何らかのコンソールの機能を再現することが可能である。典型的にはCUIをサポートする端末エミュレータが挙げられるが、本来コンソールの提供する機能はCUIやGUIには限らないことに注意が必要である。

### 端末エミュレータ
シリアルコンソールとして利用されるビデオ表示端末の機能を、OS上のソフトウェアとしてエミュレートしたものを端末エミュレータまたは単にコンソールと呼ぶ。1970年代から1980年代にかけての代表的なビデオ表示端末であるDEC VT100の機能をエミュレートしたものが多い。

### 仮想コンソール
Unix系OSでは複数のコンソール（端末エミュレータ）をキーボードで切り替えることで仮想的に同時に走らせることができ、同時に複数の処理を行うことができる。これを仮想コンソールと呼ぶ。一般的なUnix系OSではデフォルトで6つの仮想コンソールを持つことができる。

### システムコンソール

## ビデオゲームにおけるコンソール

ビデオゲーム用のコンピュータの制御卓はビデオゲームコンソールと呼ばれる。ただし、ビデオゲームコンソール（）といえば、一般的にゲーム用のコントローラーやジョイスティックなどではなくコンピュータシステム本体を指すことが多い。日本語では家庭用ゲーム機に相当し、コンソールまたはホームコンソール（）とも呼ばれる。黎明期の家庭用ゲーム機およびその操作卓は、単一のゲームに特化した一体型の専用コンソール（）であったが、次第にROMカートリッジなどによる交換可能方式が主流となっていった。

### CUIコンソール
ではゲーム中にコマンドライン風の画面を呼び出すことができる。チートコードを入力したりするのに使われる。

### 互換機能と互換機
あるコンソール（ゲーム機）上でエミュレーションによって他のコンソール（ゲーム機）用のゲームをプレイできるように何らかの互換機能やサービスが提供されている場合がある。主に旧世代機のゲームをプレイできるようにするために提供されるが、メディアの読み込みなどに旧世代機との部分的な後方互換性があり、ハードウェアレベルでのエミュレーションとなっているものもあれば、ハードウェア互換性が一切なく完全にソフトウェアベースのエミュレーションで実装されることもある。CPUやGPUなどシステムアーキテクチャが大きく異なるコンソールのエミュレートには十分に余裕を持ったハードウェア性能が必要とされるため、たとえハードウェア性能の劣る旧世代機であってもエミュレートできないこともある。また、映像が乱れたり音声が途切れたり、といった不具合が発生し、正常に動作しないこともある。

例えばニンテンドーDSでは一部のゲームボーイアドバンスのゲームカセット（ROMカートリッジ）をそのまま使用してゲームをプレイすることができる。PlayStation 2やPlayStation 3では多くの初代PlayStation用のゲームディスク（CD）をそのまま使用してゲームをプレイすることができる。Xbox Series X/Sでは初代Xbox・Xbox 360・Xbox Oneのゲームをプレイすることができる。ただし、Xbox 360以前とXbox One以降ではシステムアーキテクチャが大きく異なり、完全なエミュレーションは提供されていないため、オリジナルのゲームプログラムをそのまま走らせるのではなく、エミュレータ専用にコンバートされたゲームプログラムを走らせる形となっている。Wii、ニンテンドー3DS、Wii U向けには、ファミリーコンピュータやスーパーファミコンなどのゲームをダウンロード購入してプレイできるバーチャルコンソールと呼ばれるサービスが展開されていたが、過去のコンソールにおけるオリジナルのゲームプログラムと完全に同じバイナリではなく移植版である。

そのほか、生産が終了して入手しづらくなってしまったレトロハードウェアの代替として、サードパーティによる互換機が発売されているものもあるが、ほとんどはソフトウェアベースのエミュレーションによって実現されており、純正機とチップレベルの完全な互換性があるわけではないため、再現性はエミュレーションの精度に依存する。

## CUIコンソールの必要性
PCやワークステーション向けのデスクトップOSでは、特にMicrosoft Windows 95やMicrosoft Windows NTなどの登場以降、GUI環境が普及しているが、そのような環境においても仮想的なCUIコンソールを備えている場合がほとんどである。実装の方法は各OSによって異なるが、典型的にはアプリケーションソフトウェア（アプリケーション）のひとつとして、実画面上にウィンドウ表示または全画面表示される仮想CUI画面と実機のキーボードの組み合わせとして表現されている。

GUI環境でも採用される理由としては、
* コマンドラインインタプリタ上で動作するシェルスクリプトによってOSの持つコマンドを対話的に実行したり、各種スクリプト言語（動的言語）を使って手軽にプログラムを実行したりできる
* CUIコンソール上で動作するCUIアプリケーション（コンソールアプリケーション）は、GUIアプリケーションに比べて作成・メンテナンス・移植しやすく、処理が高速で消費メモリが小さい
* あるプログラムの実行結果（出力）を別のプログラムへの入力とするなど、組み合わせによる複雑な処理のパイプライン化や自動化が容易
* 過去のコード資産を活用できる
などが挙げられる（上記はもちろん通常のCUI環境でもあてはまる）。

ライブラリのようなソフトウェア部品は、画面表示（ビュー層）を必要としないモデル層やロジックのみから構成されるものも多く、そのようなライブラリの機能を単体テストする場合は、自動化の観点からもコンソールアプリケーションのほうが有利である。

デスクトップOSではほとんどがCUIコンソールを備えているので、利用は簡単である。例えばWindows NT系の場合、「コマンド プロンプト」（cmd.exe）が用意されている。「ファイル名を指定して実行」から、もしくは「アクセサリ」または「Windows システム ツール」から起動できる（具体的な手順はOSバージョンによって異なる）。Mac OS X（OS X、macOS）以前のClassic Mac OSではGUIによる直感的な操作性を重視しており、ライトユーザーにとって分かりにくいCUIコンソールは持たなかった。UNIXベースで再設計されたMac OS X以降では「ターミナル」が用意されている。

一方、Linuxから派生したAndroidや、Darwinから派生したiOSのように、モバイルOSではたとえUnix系であってもCUIコンソールを持たないものもある。これは、モバイル機器の入力インターフェイスが複雑なオペレーションには適していないことのほか、システムへの変更を簡単に加えることができないようにするというセキュリティ的な理由もある。

### CUIのコンソールが用いられる代表的なOS
* 各種Unix系OS
* DOS

## 脚注
### 注釈

### 出典

## 関連項目
* コンソールサーバ
* 仮想コンソール