端末

概説

「端末」あるいは「ターミナル」（英: terminal）という用語・表現は、通信の歴史で、2つの意味で用いられてきた歴史がある。
ひとつは、通信の中継機器、集約機器、分配機器などとの対比で用いられている用語・用法であり、回線やネットワークの末端に接続され、他の機器と通信を行う主体となる機器のことである。
もうひとつの用法は、情報機器の一種を指すための用法で、通信回線などを通じて他のコンピュータなどに接続し、もっぱら情報の入力や表示などをする機器のことである。

入・出力機器

「端末」には、ユーザー（オペレータ）がデータをコンピュータに入出力するのに使う機器（ハードウェア）を指す用法もある。しかも、コンピュータの歴史では、こちらの用法のほうが伝統的（古くからさかんに用いられてきた）用法である。この意味の「端末」には、電子式のものも、電気機械式のものもある。コンピュータを使うためのユーザインタフェース機能を備える。端末装置とも呼ぶ。
この意味の「端末」は、通常は、その機能が、データの表示と入力に限定されている。つまり、それ単体では、データ処理のプログラミングはできない。
（プログラミングが可能であるような（特別な）端末は、「インテリジェント端末」または「シンクライアント」と呼んで区別する。）　なお、パーソナルコンピュータ（PC）が登場・普及してからは、PC上で、《端末のエミュレータ》を動作させることができるようになり、PC上でローカルなプログラミングと遠隔地にあるホストシステムへのアクセスを同時に動作させることも可能となった。

歴史

初期の端末は、本来は電信に使われた機器である ASR-33（右写真）のような電気機械式のテレタイプ端末 (TTY) であった。その後、DECの DECwriter のようなプリンタで印字する専用端末が登場した。しかし、プリンタで印字する速度に制限されること、対話的な利用ではプリンタで記録を残す必要性が低いことから、あまり普及しなかった（端末を使用しないバッチ処理が主流だった）。
1970年代初めごろ、パンチカードの代わりに既に利用可能となっていたビデオ表示端末を使うことで、より対話的な新たなコンピュータの利用法が可能になることがわかってきた。ブラウン管の速度で情報を表示することも1つの挑戦であり、その制御には集積回路以前の電子回路がそれなりの規模で必要であった。ある企業は15,000ドルでビデオ表示端末を発売する計画を発表して大量の注文を受けたが、自前の集積回路を製作するという計画であることが明らかとなり、あまりにも野心的であったために中止された。別のアプローチとして、Tektronix が開発したストレージ管という特殊なブラウン管を使う方法があった。これは、書き込んだ情報をリフレッシュすることなく保持するものである。
初期のビデオ表示端末は、CPUはなく個別の論理回路を使っている。マイクロプロセッサが開発された動機の1つは、端末に必要な電子回路を単純化し部品点数を減らすことであった。多くの端末はメインフレームに接続され、緑色か琥珀色のスクリーンのものが多かった。通常、コンピュータとの通信はシリアル通信であり、シリアルポートを使うことが多い。IBMのシステムでは、同軸ケーブルで接続し、SNAプロトコルで通信するものがあった。
その後、DEC製の VT52 や VT100 などが登場した。これらは当時は「インテリジェント端末」と呼ばれ、今でもソフトウェアでエミュレートされて使われている。これらが「インテリジェント」と呼ばれたのは、エスケープシーケンスを解釈してカーソルの位置や表示の制御を行ったためである。VT100 以外で有名な端末としては IBM 3270、Wyse の様々な機種（Wyse 60 はベストセラーとなった）、Tektronix 4014 などがある。
1970年代末から1980年代初め、DEC、Wyse、Televideo、HP、IBM、Lear-Siegler、ヒース など様々な企業が端末を製造したが、これらの多くはコマンドシーケンスに互換性がなかった。
初期の IBM PC にはグリーンディスプレイが付属していたが、これは端末ではない。PCに付属するディスプレイは文字生成ハードウェアを持たず、PC内のディスプレイカードで生成されたビデオ信号を表示しているに過ぎない。それでもPC本体で端末ソフトを動作させてメインフレームと接続すれば、端末をエミュレートすることができる。このため、端末の市場はPCに圧迫されてどんどん縮小していった。今日、PC上のtelnetクライアントの多くは、最も典型的な端末である DEC VT100 のエミュレーションを提供している。

テキスト端末

テキスト端末とは、テキスト（文字列）の入力と表示を行う入出力機器である。キャラクタ端末とも呼ばれる。情報は事前に選択した形状の文字の並びとして表示される。その表示にブラウン管のようなビデオ表示を使う場合、ビデオ表示端末 (VDT) と呼ぶ。
本来、テキスト端末は端末装置としてコンピュータにシリアルポートで接続されていたが、その後デスクトップ型のコンピュータではコンソールが組み込みとなり、グラフィカルなデスクトップ環境で動作する端末エミュレータが使われるようになった。グラフィカルなディスプレイがテキスト端末を一掃することはなく、コマンド行インタフェースやテキストユーザインタフェースに適した方式として生き残っている。多くのプログラミング言語は標準入出力としてテキストの入出力をサポートしている。

種類

コンソールはコンピュータを操作するのに使われるテキスト端末である。デスクトップ型のコンピュータであれば、本体に備わっているキーボードとディスプレイがコンソールの役目を果たす。LinuxやFreeBSDなどのUnix系オペレーティングシステムには、1つのコンピュータ上で複数のテキスト端末を提供する仮想コンソール機能がある。
端末エミュレータは、グラフィカルなウィンドウシステム内で動作するプログラムで、ウィンドウ上でテキスト端末を利用できる。これにより、GUIとテキスト端末は共存している。主な端末エミュレータとしては、Win32コンソールや xterm がある。Unix系オペレーティングシステムでは、擬似端末に接続される。モデムと共に使用することを前提とした特殊な端末エミュレータも存在する。例えば SSH クライアントなどもな端末エミュレータである。

テキスト端末上のアプリケーション

テキスト端末で動作するアプリケーションとしては、まずコマンドラインインタプリタあるいはシェルがある。これらはコマンドプロンプトを表示してユーザーにコマンド入力を促し、ユーザーがコマンドを入力する際には最後に Enter キーを押下する。シェルでは、そのコマンドの多くはそれぞれがアプリケーションである。
また、テキストエディタも重要なアプリケーションの種類である。ディスプレイ全体を使い、テキストを表示し、ユーザーがそれを編集できるようにしてある。ワープロソフトも元々はテキスト端末で利用可能だったが、WYSIWYG化と共にGUIが必須になっていった。
telnet や ssh は、遠隔のサービスと接続してローカルな端末から操作を可能にする。

プログラミングインタフェース

最も単純な形態では、テキスト端末はファイルのようなものである。ファイルへの書き込みが表示され、ファイルからの読み込みがユーザー入力を読み取ることになる。Unix系オペレーティングシステムでは、テキスト端末に対応したキャラクタスペシャルファイルが存在する。
他に、特殊なエスケープシーケンスや制御文字があり、プログラムから使える termios システムコールがある。ncurses などのライブラリから使うのが最も容易である。さらに ioctl システムコールを使って端末固有の操作が可能である。

技術

アプリケーションから端末を使う最も簡単な方法は、単にテキスト文字列を逐次的に読み書きすることである。出力したテキストはスクロールしていくので、最近出力した部分（通常24行）だけが見えている。UNIXでは通常入力テキストは Enter キーが押下されるまでバッファされるので、アプリケーションが読み取るテキストは文字列として完全な形になっている。このような使い方の場合、アプリケーションが端末について詳しく知る必要はない。
多くの対話型アプリケーションでは、これでは不十分である。典型的強化としては、「コマンド行編集」（readline などのライブラリを使う）がある。また、同時にコマンド履歴にアクセスできるようにする場合もある。これらは対話型コマンドラインインタプリタでよく使われる。
さらに対話的なものとして、フルスクリーン型のアプリケーションがある。この場合は、アプリケーションが全体の表示を完全に制御する。また、キー押下にも即座に反応する（Enter キー押下までバッファリングすることはない）。テキストエディタ、ファイルマネージャ、ウェブブラウザなどがこのモードを使う。さらに、テキスト表示の際の色や輝度も制御でき、アンダーラインをつけたり、点滅させたり、罫線素片などの特殊な文字を表示させたりすることも可能である。
これらを実現するには、アプリケーションが通常のテキスト文字列だけでなく、制御文字やエスケープシーケンスを扱う必要がある。それによって、カーソルを特定の位置に移動させたり、特定位置の文字を消去したり、色を変えたり、特殊な文字を表示させたり、ファンクションキーに応答したりといったことが可能になる。
ここで問題になるのは、端末や端末エミュレータが各種存在することで、それぞれが自前のエスケープシーケンスを持っている。このため、特別なライブラリ（cursesなど）が作成され、端末データベース（Termcap や Terminfo）と共に作用して、端末の違いを吸収する役目を果たす。

ダム端末

ダム端末（dumb terminal）という用語は、その文脈によって様々な意味で使われる。
RS-232で接続する端末についての文脈では、ダム端末とは解釈できる制御文字が（CR、LF などに）限られている端末を言う。ダム端末はエスケープシーケンスを解釈できないため、行の消去、画面の消去、カーソル位置制御といったことができない。つまり、ダム端末はテレタイプ端末と同程度のことしかできない。Unix系システムではこのようなダム端末が今でもサポートされており、環境変数 TERM を dumb と設定することでダム端末と認識する。「インテリジェント端末」は、この文脈ではダム端末でないテキスト端末を意味する。
より広い意味では、キーボードとビデオ表示装置やプリンターを備えた装置で、RS-232接続でホストシステムと通信し、ローカルにデータを処理したりプログラムを実行したりしないものを全てダム端末と呼ぶことがある。この意味では、パーソナルコンピュータも、ディスクレスワークステーションも、シンクライアントも、X端末もダム端末と言える。
また、モノクロのテキスト表示しかできない端末装置をダム端末と呼ぶこともある。さらに、キーボードから入力された文字を一文字ずつホストに送信する端末装置をダム端末と呼ぶこともある。

グラフィック端末

グラフィック端末は、テキストだけでなく画像を表示できる。グラフィック端末はさらに、ベクターモード端末とラスターモード端末に分類される。
ベクターモード端末は、ホストコンピュータの制御により、直接ブラウン管に直線などを描画する。通常の走査式のブラウン管と異なり、オシロスコープのような仕組みになっている。そのため線は連続的に描画されるが、描画された線が残っている時間と描画速度との兼ね合いで、同時に表示できる線の本数（あるいは長さの総計）は限られている。ベクターモード端末は歴史的には重要な意味を持つが、現在では使われていない。
現代のグラフィック端末は全てラスターモードであり、テレビのように走査によって画像を描画し、ピクセルが格子状に並んでいる。人間の目に画像として認識されるようにするには、高速にラスタースキャンする必要がある。このため、ラスターモードのグラフィックディスプレイは歴史的には登場が遅く、しかも当初は非常に高価だった。
今日の端末はグラフィカルなものがほとんどであり、画像を表示することができる。また、カラー表示できるものが多く、テキストも実際には画像として表示している。

ビデオ表示端末

ビデオ表示端末（英: Video Display Terminal, VDT）はブラウン管や液晶などのビデオディスプレイを表示に用いる端末である。もともとはテレタイプ端末のような機械式端末に対して用いられた用語である。
労働衛生管理で端末作業について言及する場合、VDTの略称が多く用いられる。