PCを用いたアプリケーション開発やファイルの操作などを行う際、ユーザーがテキストベースでコマンドを入力して、コンピューターのシステムやアプリケーションを制御するためのホストアプリケーション「ターミナル」が用いられることがあります。このターミナルについて、ソフトウェアエンジニアのグレゴリー・アンダース氏がその歴史などについて解説しています。

State of the Terminal | g.p. anders

https://gpanders.com/blog/state-of-the-terminal/



現代まで続くターミナルは、Digital Equipment Corporationが1978年に発売したビデオ表示端末のVT100にそのルーツをたどることができます。



by Wolfgang Stief

ビデオ表示端末とは、それ以前のテレタイプ端末を改良したものです。テレタイプ端末はキーボードで入力した内容や受信したメッセージを紙に出力するものでしたが、ビデオ表示端末は紙を使うことなく、インタラクティブなインターフェイスを備え、ディスプレイ上に情報を表示することができました。

VT100の登場まで、ビデオ表示端末は各デバイスごとに独自のエスケープシーケンスを使用していました。そのため、当時のアプリケーションにはどのシーケンスを使うべきかを考えるプロセスが必要となり、さらなる発展の妨げとなっていました。

そこで、このような問題を解決するために、Termcapなどのヘルパープログラムなどが開発されました。現代でも、Termcapの改良版であるライブラリであるTerminfoが使用されています。

その後、ECMA-48やANSI X3.64のようなエスケープシーケンスの規格が整備され、VT100はこれらのエスケープシーケンス規格をサポートした最初のビデオ表示端末となりました。VT100は標準エスケープシーケンス規格をサポートすることで、確実なプログラムの起動が可能になりました。その結果VT100は高い人気を集め、多くのクローンが生み出されたそうです。



by Wolfgang Stief

VT100のターミナルをベースとして、1984年にはマサチューセッツ工科大学でX Window Systemの標準的なターミナルソフトであるxtermが開発されました。xtermは従来のビデオ表示端末にはなかったマウストラッキングや設定可能なカラーパレットなどの機能を備えており、複数のクローンがこれらの機能をコピーすることになりました。こうしてxtermはターミナルソフトにおける新しいデファクトスタンダードに成長したとのこと。

現代のターミナルベースのアプリケーションでは、ユーザーは自身が確認できるテキストと、ターミナルの状態を変更する制御コードという2種類のデータをターミナルに書き込むことになります。制御コードには、カーソルを現在の行の先頭に移動する「/r」や、カーソルを次の行に移動する「/n」などのC0制御コードなどが用いられます。

これらのターミナルは、シェルから直接コードを実行することができるなど、基本的には非常に使いやすく設計されています。しかし、現代のターミナルエミュレーターのシステムを支えるのは、xtermのような古いテクノロジーであるため、「CtrlやAltなどの修飾キーの扱い方」などの問題が生じてきました。



それでも、度重なるアップデートや開発によってこれらの問題は解決に向かいつつあります。アンダース氏は「ターミナルの基盤となるテクノロジーは、現代のテクノロジーの基準からすると非常に古いものとなっています。しかし、これは欠点ではなく強みです。ターミナルソフトは登場したり消えたりしていきますが、ターミナルの基盤となるプラットフォームが消えることはありません」と述べています。