端末

端末とは、

回線やネットワークの末端に接続され、他の機器と通信を行う機器。通信を中継・集約・分配する機器と対比して用いられている用語・概念。
利用者が直接操作する装置。コンピュータ類に接続し、もっぱら情報の入力や表示などに使う装置のこと。

1. 概説
-----

「端末」あるいは「ターミナル」という用語・表現は、通信用語とコンピュータ用語がある。

通信用語は、通信の中継機器、集約機器、分配機器などとの対比で用いられている用語・用法で、コンピュータ用語は他のコンピュータに接続し、もっぱら情報の入力や表示などをする機器のことである。

2. 通信用語としての端末
-------------

通信用語の「ターミナル」という用語は、時代とともに変化してきた。

電信時代電信時代のターミナルは、電信回線の終端に接続された機器であり、手動のキー操作によって電信信号を送信するために使用されていた。電鍵や電信機とも呼ばれた。

アナログ電話回線などの端末アナログ電話回線の端末は、電話機やファクシミリなどである。

1962年にアメリカのAT&Tから、商業的に利用可能になった最初のモデム、Bell 103 modemがリリースされた。このモデムも通信用語でいう「端末」ということになった。

1990年代でも、アナログ回線にパーソナルコンピュータを接続したり、あるいはパームコンピュータやフィーチャーフォンなど小型のコンピュータの機能を備えた端末を接続してデータのやりとりをしていた。

3. コンピュータ用語としての端末
-----------------

3.1. コンピュータの端末の歴史
-----------------

初期の端末は、本来は電信に使われた機器である ASR-33のような電気機械式のテレタイプ端末  であった。

IBMは汎用コンピュータのSystem/360を1964年に発表、この入出力用装置としては、当初はパンチカード装置やTTYが用意されていた。

right 1970年にDECが:en:DECwriterというプリンタで印字する専用端末を登場させた。DECはプリンタ方式の端末のシリーズとしてDECwriter II、DECwriter III、DECwriter IVのリリースを続けた。IBMも1974年にSystem/360用にドットマトリクス・プリンター方式の端末IBM 3767をリリースした。プリンタ方式の端末はテレタイプ端末よりは良くなり、コンピュータに長時間バッチ処理をさせて、オペレータが不在の状態でも計算結果の文字出力を大量に残しておきたい用途で使うのには向いていた。だが、プリンタの印字速度でコンピュータとのやりとりの速度が制限されてしまうという欠点はあり、対話的にコンピュータを使う場合は紙に文字記録を残す必要性は低いので、ビデオ表示方式のものが普及してゆくことになった

一方、1962年にはIBMがビデオ表示方式の端末のIBM 2260も発表していた。当時、アナログ方式の走査線が走るブラウン管の画面上に、デジタル方式のコンピュータの出力文字を表示させるということだけでも、技術的にはかなりハードルの高い挑戦であった。このころのビデオ表示端末は、多数のトランジスタやダイオードなどの電子部品を搭載した基板で作った論理回路を使っている。

このころの端末はモノクロ方式である。1971年にはIBMがIBM 2260の後継機にあたるIBM 3270を発表。

DECの端末DECは 1975年にVT52 を、1978年にはVT100を発表した。これらは当時は「インテリジェント端末」と呼ばれ、今でもソフトウェアでエミュレートされて使われて続けている。これらが「インテリジェント」と呼ばれたのは、エスケープシーケンスを解釈してカーソルの位置や表示の制御を行ったためである。他にはWyse の様々な機種、Tektronix 4014 などがある。

1970年代末- 1980年代の端末の状況やがてこのようなビデオ表示方式の端末全般がビデオ表示端末と総称されるようになった。VDTはコンピュータからの出力をTTYやプリンタ方式よりはるかに高速に表示できるという利点があり、コンピュータと対話するように利用することが可能であった。

1970年代末から1980年代初め、DEC、Wyse、Televideo、HP、IBM、Lear-Siegler、ヒース など様々な企業が端末を製造したが、これらの多くはコマンドシーケンスに互換性がなかった。当時の端末はメインフレームに接続され、単色であり、緑色かアンバーのスクリーンのものが多かった。通常、コンピュータとの信号のやり取りはRS-232Cなどシリアルポートを使うことが一般的であった。IBMのシステムでは、同軸ケーブルで接続し、SNAプロトコルで信号のやりとりをするものもあった。

3.2. テキスト端末
-----------

テキスト端末とは、もっぱらテキスト類の入力と出力だけを行う装置を指すための総称、分類用語である。文字・記号類はコンピュータ用語ではcharacterというのでキャラクタ端末とも呼ばれる。決まった文字集合しか表示できない。

上で説明したテレタイプ端末やVT100などはテキスト端末に分類される。

1970年代に登場した" ビデオ表示 " つまりブラウン管に出力する装置はビデオ表示端末  と呼ばれたが、これもテキスト端末であり、文字・記号類しか表示できなかった。

1960年代や1970年代のテキスト端末は物理的な装置として存在しており、大型コンピュータなどの近くに設置されRS-232Cなどシリアルポートで接続されていた。

なお大型コンピュータの操作を行うための装置はもともとコンソールとも呼ばれていた。

3.2.1. テキスト端末とタイムシェアリング
-----------------------

1950年代末から1960年代初頭にかけてタイムシェアリングが開発され、一台の大型コンピュータを複数のユーザが同時に使用、つまり一台の大型コンピュータに多数の端末が接続されるようになり、コンピュータネットワークが発展してゆくことになった。

3.2.2. テキスト端末のリモート接続
--------------------

1960年代ではリモート端末でも使われたのはRS-232Cで接続する装置で、テレタイプ端末などキーボードと印字機能を持った装置が一番主流で、他のタイプも含めると、主に次の2種が使われた。

Teletype Model 33: バラ打ち方式のテレタイプ端末で、データ通信のために改造されて使用された。
ASR-33: 上のTeletype Model 33の改良版で、自動で紙テープに印字する機能を追加。上述のようにDECが1975年にはVT52を、1978年にはVT100をリリースし、リモート接続で なおかつビデオ表示方式で大型コンピュータに接続することもできるようになった。今日、PC上で動く「telnetクライアント」の多くは、1970年代末当時に最も典型的な端末となった DEC VT100 のエミュレーションを提供している。

1981年にはコロンビア大学でkermitというプロトコルが、やはり回線経由で端末を接続するために開発された。

3.3. グラフィック端末
-------------

グラフィック端末は、テキストだけでなく画像を表示できる端末。グラフィック端末はさらに、ベクタースキャン端末とラスタースキャン端末に分類される。

ベクタースキャン端末は、ホストコンピュータの制御により、直接ブラウン管に直線などを描画する。通常の走査式のブラウン管と異なり、オシロスコープのような仕組みになっている。そのため線は連続的に描画されるが、描画された線が残っている時間と描画速度との兼ね合いで、同時に表示できる線の本数は限られていた。ベクタースキャン端末はコンピュータ史では重要だが、現在では使われていない。

現代のグラフィック端末は全てラスタースキャン方式である。

3.4. パーソナルコンピュータ登場後
-------------------

1970年代後半にパーソナルコンピュータが登場すると、その上で動くソフトウェア端末エミュレータが使われるようになった。

OSにGUIが採用されるようになっても、コマンド行インタフェースやテキストユーザインタフェースのほうも生き残っている。テキスト端末は、ターミナルエミュレーションソフトとして生き残った。

また多くのプログラミング言語は標準入出力としてテキストの入出力をサポートしている。

ターミナルソフトを動作させればPC眼を端末として使うことができる。このため、専用端末機の市場はPCの端末ソフトとの競争にさらされるようになり、どんどん縮小していった。

LinuxやFreeBSDなどのUnix系オペレーティングシステムでは、 1つのコンピュータ上で複数のテキスト端末を提供する仮想コンソールが使われた。その後、端末エミュレータの使用が一般化した。

端末エミュレータは、GUIなOS上で動作するプログラムで、ウィンドウを開いてそのウィンドウをテキスト端末として利用できる。主な端末エミュレータとしては、Win32コンソールや xterm がある。Unix系オペレーティングシステムでは、擬似端末に接続される。モデムと共に使用することを前提とした特殊な端末エミュレータも存在する。例えば SSH クライアントなどもな端末エミュレータである。

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

テキスト端末で動作するアプリケーションとしては、まずコマンドラインインタプリタあるいはシェルがある。これらはコマンドプロンプトを表示してユーザーにコマンド入力を促し、ユーザーがコマンドを入力する際には最後に //Enter// キーを押下する。シェルでは、そのコマンドの多くはそれぞれがアプリケーションである。

また、テキストエディタも重要なアプリケーションの種類である。ディスプレイ全体を使い、テキストを表示し、ユーザーがそれを編集できるようにしてある。ワープロソフトも元々はテキスト端末で利用可能だったが、WYSIWYG化と共にGUIが必須になっていった。

telnet や ssh は、遠隔のサービスと接続してローカルな端末から操作を可能にする。

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

最も単純な形態では、テキスト端末はファイルのようなものである。ファイルへの書き込みが表示され、ファイルからの読み込みがユーザー入力を読み取ることになる。Unix系オペレーティングシステムでは、テキスト端末に対応したキャラクタスペシャルファイルが存在する。

他に、特殊なエスケープシーケンスや制御文字があり、プログラムから使える termios システムコールがある。ncurses などのライブラリから使うのが最も容易である。さらに ioctl システムコールを使って端末固有の操作が可能である。

入出力以外の機能としてUnix系オペレーティングシステムではジョブおよびセッション管理があり、POSIXにて仕様が決められている。具体的には端末とセッションの関連付け、端末とジョブの関連付けおよび端末を入出力に使おうとしているジョブの調停などがある。例として「ユーザがログアウトなどにより端末をクローズしたら、その端末上で実行しているすべてのプロセスを終了させる」というような機能がある。

3.4.3. 技術
---------

アプリケーションから端末を使う最も簡単な方法は、単にテキスト文字列を逐次的に読み書きすることである。出力したテキストはスクロールしていくので、最近出力した部分だけが見えている。UNIXでは通常入力テキストは Enter キーが押下されるまでバッファされるので、アプリケーションが読み取るテキストは文字列として完全な形になっている。このような使い方の場合、アプリケーションが端末について詳しく知る必要はない。

多くの対話型アプリケーションでは、これでは不十分である。典型的強化としては、「コマンド行編集」がある。また、同時にコマンド履歴にアクセスできるようにする場合もある。これらは対話型コマンドラインインタプリタでよく使われる。

さらに対話的なものとして、フルスクリーン型のアプリケーションがある。この場合は、アプリケーションが全体の表示を完全に制御する。また、キー押下にも即座に反応する。テキストエディタ、ファイルマネージャ、ウェブブラウザなどがこのモードを使う。さらに、テキスト表示の際の色や輝度も制御でき、アンダーラインをつけたり、点滅させたり、罫線素片などの特殊な文字を表示させたりすることも可能である。

これらを実現するには、アプリケーションが通常のテキスト文字列だけでなく、制御文字やエスケープシーケンスを扱う必要がある。それによって、カーソルを特定の位置に移動させたり、特定位置の文字を消去したり、色を変えたり、特殊な文字を表示させたり、ファンクションキーに応答したりといったことが可能になる。

ここで問題になるのは、端末や端末エミュレータが各種存在することで、それぞれが自前のエスケープシーケンスを持っている。このため、特別なライブラリが作成され、端末データベースと共に作用して、端末の違いを吸収する役目を果たす。

3.5. 端末の分類用語
------------