テキストユーザインタフェース

テキストユーザインタフェース（、TUI）とは、テキスト(文字)を用いて人とコンピュータが対話を行うユーザインタフェースである。

TUIは、文字によって構成された画面上にメニュー、一覧、入力欄などを表現し、画面全体を二次元的に利用できる。この点で、コマンドを逐次入力し、結果を一行単位で表示する文字ベースの操作形態とは区別される。また、実装によっては、グラフィカルユーザインタフェース (GUI) と同様にマウスなどの入力装置を利用できる場合もある。

文字情報を主体として画面を表現するため、GUIと比較して計算量や通信量などのリソース消費が比較的少ないという利点がある。

TUIという名称は、GUIが考案、普及した後に名づけられたレトロニムである。

 ANSI互換端末でのTUI 
TUIがDOSやWindows上でどのように実現されるかを理解するためには、文字端末とANSIエスケープシーケンスの仕組みを押さえておく必要がある。

ANSI互換端末は、エスケープシーケンスと呼ばれる制御文字列を受け取り、カーソルの移動や文字色の変更、画面の消去などを行うことができる。ANSI規格 ANSI X3.64 は、端末間で互換性のあるTUI表示を可能にするため、その制御文字列の仕様を定義したものであり、ANSIエスケープコードと呼ばれる。

かつて、DEC VT100やIBM 3270のような、文字だけを画面に表示する端末が存在した。これらの端末は、ANSI規格に完全準拠していないものもあったが、同等の機能を持つ端末も存在した。のちに、この機能がソフトウェアとして実装されると、現在では端末エミュレータと呼ばれるようになった。

 DOSおよびMicrosoft WindowsでのTUI 
250px|right|thumb|FreeDOS Editのユーザインタフェース
IBM PC およびその互換機では、BIOSやDOSのシステムコールが画面への文字出力機能を提供していた。さらに、カーソルの移動や画面消去といった画面制御では、ANSI.SYSドライバがエスケープシーケンス（ESCから始まる制御用の文字列）を解釈して処理した。

一方で、これらの仕組みを介さず、テキストモードのスクリーンバッファに直接データを書き込む方式も広く用いられた。この方式は、より高速でかつ実装が単純という特徴があった。その結果、DOS上では文字主体のTUIプログラムが広く開発された。

一部の環境では、背景色に青、文字色に白もしくは黄色が採用されたが、色をカスタマイズできる実装も存在した。その後、GUIの普及に伴い、プルダウンメニューやダイアログボックスといった画面要素が追加されていった。また、マウス入力にも対応するようになり、操作方法の多様化も進んだ。

TUIを採用したソフトウェアの例としては、初期のMicrosoft Word、MS-DOS Shell、WordPerfect、Norton Commander、Borland Turbo C（conioライブラリを含む）、Lotus 1-2-3 などが挙げられる。これらの一部は1990年代初めにWindows 3.xが普及した後もそのインターフェースを維持した。例えば、Microsoft C 6.0 コンパイラはWindows向けのGUIプログラムを開発することが可能であったが、その開発環境自体のインタフェースはTUIだった。

初期のWindowsには、DOSソフトウェアを表示するためのコンソールが含まれており、DOSで動作するTUIプログラムをWindows上で利用できた。その後のバージョンでは、Win32コンソールが追加され、DOS用の画面ではなく、Windows専用のTUI画面として表示できるようになった。コンソールは通常ウィンドウモードで起動されるが、必要に応じて全画面テキストモードに切り替えることもできる。

 Unix系システムでのTUI 
Unix系オペレーティングシステムでも、同様に文字を主体としたTUIプログラムが広く利用されている。

TUI表示には、端末制御ライブラリであるcursesや、その互換ライブラリncursesが用いられることが多い。

BSDで開発されたcursesは、TUIを移植性高く実装できるAPIである。ハードウエアに依存せず同一のAPIでTUIを実現できるため、画面全体を使ったTUIプログラムが多数開発されるようになった。

体表的なアプリケーションとして、viなどのテキストエディタ、pineやMuttなどの電子メールクライアント、SMITなどのシステム管理ツール、lynxなどのウェブブラウザがある。なお、初期のpine やvi などでは curses を使用せず、より低機能なtermcapライブラリを利用し、curses 相当の機能をアプリケーション内部で実装していた。

Linuxの普及に伴い、DOSユーザーがUnix系プラットフォームに移行するようになり、DOSの影響を受けたTUIも開発されるようになった。例えば、DOS上の通信プログラムであるTelixをベースにしたUnix系向けのminicomが存在する。さらに、直接移植されたTUIアプリケーションもあり、Twinと呼ばれるTUIベースのデスクトップ環境も開発された。

 関連項目 
 端末
 キャラクタユーザインタフェース
 コンソールアプリケーション - TUIで操作できるアプリケーション
 ncurses
 ローグライクゲーム

 脚注 

Category:コンピュータのユーザインタフェース
Category:レトロニム