

コンピューティングにおいて、テキストベースのユーザーインターフェイス(TUI)(あるいは、テキストだけでなくコンピュータ端末の特性にも依存することを反映して、端末ユーザーインターフェイスとも呼ばれる)は、ビットマップディスプレイや現代の一般的なグラフィカルユーザーインターフェイス(GUI)が登場する以前の、人間とコンピュータのインタラクションの初期形態として一般的だったユーザーインターフェイス(UI)の一種を表すレトロニムである。現代のGUIと同様に、画面全体を使用でき、マウスやその他の入力を受け付けることができる。また、色を使用することができ、多くの場合、┌や╣などのボックス描画文字を使用して表示を構成する。現代では、通常、端末エミュレータが使用される。
コンピューター黎明期には、テキスト端末は通常、キーボードとプリンタを組み合わせた装置だった。しかし現在では、キーボードとディスプレイを組み合わせた装置が主流となっている。
テキスト画面(およびそれとの通信)は、次の3つのタイプのいずれかに分類されます(ここではアクセシビリティの高い順に並べています)。
テキストアプリケーションの観点から見ると、表示タイプは API によって決定されます。たとえば、 curses、TPUT などです。
Linuxやその他のUnix系システムでは、同じインターフェース(すなわち標準ストリーム)がディスプレイとキーボードを制御するため、プログラムは3つのケースすべてに容易に対応できます。Windowsとの比較については、以下を参照してください。
開発者がTUIアプリケーションを構築するのに役立つTUIプログラミングライブラリが多数用意されています。
米国規格協会(ANSI)規格ANSI X3.64は、端末を操作してTUI(テキストユーザーインターフェース)を作成するために使用できる標準エスケープシーケンスセットを定義しています( ANSIエスケープコードを参照)。上記の3つのケースすべてにおいてエスケープシーケンスがサポートされている場合があり、カーソルの任意の移動や色の変更が可能になります。ただし、すべての端末がこの規格に準拠しているわけではなく、互換性はないものの機能的に同等のシーケンスが多数存在します。

IBM PC互換機では、 BIOS(基本入出力システム)とMS-DOSシステムコールによって画面にテキストを表示する方法が提供され、ANSI.SYSドライバは標準ANSIエスケープシーケンスを処理できました。しかし、プログラマはすぐに、画面バッファに直接データを書き込む方がはるかに高速でプログラミングも簡単で、エラーも少ないことに気づきました(詳細はVGA互換テキストモードを参照)。このプログラミング方法の変化により、多くのDOS TUIプログラムが誕生しました。Windowsのコンソール環境は、アプリケーションがウィンドウで実行されている場合でも、EGA/VGAテキストモードの特定の機能、特にテキストバッファへのランダムアクセスをエミュレートすることで悪名高い。一方で、前述のWindowsコンソール層の存在により、Windows上で実行されるプログラム(ネイティブアプリケーションとDOSアプリケーションの両方)は、LinuxやDOSプログラムに比べて、ディスプレイとキーボードの制御がはるかに制限される。

これらのプログラムの多くは、メイン画面に青色の背景、白または黄色の文字を使用していたが、ユーザーによる色のカスタマイズも一般的だった。IBMのコードページ437のボックス描画文字がよく使われていた。その後、インターフェースはグラフィカルユーザーインターフェース(GUI)の影響を強く受け、プルダウンメニュー、オーバーラップウィンドウ、ダイアログボックス、ニーモニックやキーボードショートカットで操作するGUIウィジェットが追加された。すぐにマウス入力が追加され、テキスト解像度では単純な色のボックスとして、拡張グラフィックスアダプタ(EGA)およびビデオグラフィックスアレイ(VGA)ディスプレイアダプタがソフトウェアでテキスト文字の形状を再定義できるようになったことで、グラフィック解像度でもマウス入力が可能になり、追加機能が提供されるようになった。
この種の注目すべきプログラムには、Microsoft Word、DOS Shell、WordPerfect、Norton Commander、Turbo VisionをベースにしたBorland Turbo PascalおよびTurbo C (後者にはconioライブラリが含まれていました)、Lotus 1-2-3などがありました。これらのインターフェースの一部は、 1990 年代初頭のMicrosoft Windows 3.1x の時代にも存続しました。たとえば、16 ビットWindows 上で真の GUI プログラムを作成するために使用されたMicrosoft C 6.0 コンパイラには、独自の TUI が今でも存在します。
Microsoft Windows は、その初期バージョンからDOS ソフトウェアを表示するためのコンソールを備えています。後のバージョンでは、コマンドライン インターフェイスや TUI プログラムのネイティブ インターフェイスとしてWindows コンソールが追加されました。コンソールは通常ウィンドウ モードとして開きますが、 Alt キーとEnterキーを同時に押すことで、フルスクリーンの真のテキスト モード画面に切り替えたり、その逆も可能です。フルスクリーン モードは Windows Vista 以降では利用できませんが、いくつかの回避策で使用できます。[ 1 ]
Windows Terminal は、 Microsoft がWindows 10以降向けに開発したマルチタブのターミナルエミュレーターです[ 2 ] 。Windows Consoleの代替として開発されました。
2019年にマイクロソフトによってWindowsに追加されたWindows Subsystem for Linuxは、Windowsコンソール、Windowsターミナル、およびその他のWindowsベースのターミナル内で、 Linuxのテキストベースのアプリケーションを実行することをサポートします。


Unix 系オペレーティングシステムでは、TUI は多くの場合、端末制御ライブラリcurses、ncurses (ほぼ互換性のあるライブラリ)、または代替のS-Langライブラリを使用して構築されます。Berkeley Unixでcursesライブラリが登場したことで、TUI を作成するための移植性と安定性に優れた API が実現しました。同じインターフェースを使用してさまざまなテキスト端末タイプと通信できるようになったことで、単純な行インターフェースではなく端末画面全体を使用する「ビジュアル」な Unix プログラムがより広く使用されるようになりました。これは、viなどのテキストエディタ、 pineやmuttなどのメールクライアント、 SMIT、SAM、FreeBSDのSysinstallなどのシステム管理ツール、lynxなどのWeb ブラウザに見られます。w3m や pine および vi の古いバージョンなどの一部のアプリケーションは、機能の劣るtermcap ライブラリを使用しており、アプリケーション内でcursesに関連する多くの機能を実行しています。ウィジェットに基づいたカスタムTUIアプリケーションは、ダイアログプログラム( ncursesベース)またはWhiptailプログラム( S-Langベース)を使用して簡単に開発できます。
さらに、 Linuxの人気上昇により、多くの元DOSユーザーがUnixライクなプラットフォームに移行し、多くのTUIにDOSの影響が見られるようになった。例えば、minicomプログラムは、人気のDOSプログラムであるTelixをモデルにしている。Twinデスクトップなど、他のいくつかのTUIプログラムも移植された。
ほとんどのUnix系オペレーティングシステム(Linux、FreeBSDなど)は仮想コンソールをサポートしており、通常はCtrl+Alt+Fキーの組み合わせでアクセスできます。例えば、Linuxでは最大64個のコンソールにアクセスでき(ファンクションキー経由で12個)、それぞれが全画面テキストモードで表示されます。
フリーソフトウェアであるGNU Screenは、単一のTUI内で複数のセッションを管理する機能を提供しており、テキストモードおよびコマンドラインインターフェース用のウィンドウマネージャのようなものと考えることができます。Tmuxも同様の機能を備えています。
macOS の 独自テキストエディタBBEdit には、全画面シェルウィンドウとして機能するシェルワークシート機能が含まれています。無料のEmacsテキストエディタは、バッファの 1 つ内でシェルを実行して同様の機能を提供できます。Emacs にはいくつかのシェル実装がありますが、ansi-termTUI プログラムの実行に適しているのは のみです。他の一般的なシェルモードであるshellと は、eshellコマンドラインと TUI プログラムをエミュレートするだけで、「ターミナルは完全に機能していません」というエラーメッセージを表示したり、文字化けしたインターフェイスを表示したりします。無料のVimおよびNeovimテキストエディタには、ターミナルウィンドウ ( xtermをシミュレート) があります。この機能は、ジョブ、並列ビルド、またはテストを実行することを目的としていますが、 (ウィンドウ分割とタブページを使用して) 軽量ターミナルマルチプレクサとしても使用できます。
VAX/VMS(後にOpenVMSとして知られる)には、 cursesと同様の機能であるスクリーン管理機能(SMG)がありました。これはコマンドラインから呼び出すことも、SMG$ライブラリを使用するプログラムから呼び出すこともできました。[ 3 ]
もう一つのTUI(テキストユーザーインターフェース)は、 1988年に初めてリリースされ、現在もメンテナンスされているOberonオペレーティングシステムの主要インターフェースです。他のほとんどのテキストベースのユーザーインターフェースとは異なり、Oberonはテキストモードのコンソールやターミナルを使用せず、大きなビットマップディスプレイを必要とします。このディスプレイ上では、テキストがマウスのクリックの主要なターゲットとなります。ハイパーテキストのリンクに類似して、コマンドは の形式で、マウスの中央ボタンをクリックすることでアクティブ化されます。画面上のどこにでも表示されるテキストは編集でき、必要なコマンド構文でフォーマットされていれば、中央ボタンをクリックすることで実行できます。適切な形式のコマンドを含むテキストファイルは、いわゆるツールテキストとして使用でき、ユーザーが設定可能なメニューとして機能します。以前のコマンドの出力さえも編集して、新しいコマンドとして使用できます。このアプローチは、従来の対話型コンソールメニューやコマンドラインインターフェースとは根本的に異なりますが、 Macintosh Programmer's Workshopのワークシートインターフェースといくつかの類似点があります。Module.Procedure parameters ~
グラフィカルウィジェットを使用せず、プレーンテキストのみを使用するものの、タイルウィンドウマネージャを備えたGUIと同等の機能を提供するため、テキストユーザーインターフェース(TUI)と呼ばれます。簡単な紹介については、 Oberonシステムに関する最初の公開レポートの4ページ目の2段落目を参照してください。[ 4 ]
Oberonのユーザーインターフェースは、ベル研究所のPlan 9オペレーティングシステム向けのAcmeテキストエディタおよび電子メールクライアントのデザインに影響を与えた。

最新の組み込みシステムは、パーソナルコンピュータのようにモニター上にTUI(テキストユーザーインターフェース)を表示する機能を備えている。この機能は通常、専用の集積回路、モジュール、またはFPGAを用いて実装される。
ビデオ回路またはモジュールは通常、UARTを介したVT100互換コマンドセットを使用して制御され、FPGA設計では通常、ビデオメモリへの直接アクセスが可能となる。