_en.png/500px-Midnight_Commander_(2005)_en.png)
-console.png/500px-Vim-(logiciel)-console.png)
コンピューターの世界では、テキストベースのユーザーインターフェイス( TUI ) (または、テキストだけではなくコンピューター端末の特性に依存していることを反映して、ターミナルユーザーインターフェイス) は、ビットマップディスプレイや現代の従来のグラフィカルユーザーインターフェイス(GUI)が登場する前の、人間とコンピューターの相互作用の初期の形態として一般的だったユーザーインターフェイス(UI)の一種を表すレトロニムです。現代の GUI と同様に、画面領域全体を使用でき、マウスやその他の入力を受け入れることができます。色を使用することもでき、┌ や ╣ などのボックス描画文字を使用して表示を構成することがよくあります。現代の使用コンテキストでは、通常、ターミナルエミュレーターです。
テキスト端末の種類
テキスト アプリケーションの観点 から見ると、テキスト スクリーン (およびそれとの通信) は次の 3 つのタイプのいずれかに属します (ここではアクセスしやすさの降順で並べています)。
- ビデオ アダプタまたは中央プロセッサ自体によって制御される、本物のテキスト モードディスプレイ。これは、さまざまな種類のパーソナル コンピュータやモバイル デバイスでローカルに実行されるアプリケーションの通常の状態です。オペレーティング システムによって阻止されなければ、スマートなプログラムはハードウェア テキスト モードのパワーをフルに活用できます。
- テキスト モードエミュレーター。例としては、X Window SystemのxtermやMicrosoft Windowsのwin32 コンソール(ウィンドウ モード)などがあります。これは通常、実際のテキスト モード表示を期待するプログラムをサポートしますが、実行速度がかなり遅くなる可能性があります。独自のフォントのアップロードなど、高度なテキスト モードの特定の機能は、ほぼ確実に使用できなくなります。
- リモートテキスト ターミナル。通信機能は通常、シリアル ラインまたはそのエミュレーションに制限され、 TelnetやSecure Shellなどの場合には、帯域外チャネルとしてioctl () がいくつか使用される可能性があります。これは、ソフトウェアの制限によりリモート ディスプレイ デバイスの機能を使用できないため、最悪のケースです。
Linuxやその他のUnix 系システムでは、同じインターフェース (つまり、標準ストリーム) がディスプレイとキーボードを制御するため、プログラムは 3 つのケースのいずれにも簡単に対応できます。Windows との比較については以下を参照してください。
開発者がTUI アプリケーションを構築するのに役立つ TUI プログラミング ライブラリが多数用意されています。
ANSI互換端末の場合
米国規格協会(ANSI) 標準ANSI X3.64 は、端末を駆動して TUI を作成するために使用できるエスケープ シーケンスの標準セットを定義します( ANSI エスケープ コードを参照)。エスケープ シーケンスは、上記のセクションで説明した 3 つのケースすべてでサポートされ、任意のカーソル移動と色の変更が可能になります。ただし、すべての端末がこの標準に準拠しているわけではなく、互換性はないが機能的に同等のシーケンスが多数存在します。
DOSおよびMicrosoft Windowsの場合

IBM パーソナル コンピューターとその互換機では、基本入出力システム ( BIOS ) とDOSシステム コールによって画面にテキストを書き込む方法が提供され、ANSI.SYSドライバーは標準の ANSI エスケープ シーケンスを処理できます。しかし、プログラマーはすぐに、画面バッファーに直接データを書き込む方がはるかに高速でプログラムが簡単で、エラーも少ないことに気付きました。詳細については、 VGA 互換テキスト モードを参照してください。プログラミング方法のこの変更により、多くの DOS TUI プログラムが生まれました。Windowsコンソール環境は、アプリケーションがウィンドウで実行されている場合でも、特定の EGA/VGA テキスト モード機能、特にテキスト バッファーへのランダム アクセスをエミュレートすることで有名です。一方、Windows で実行されるプログラム (ネイティブ アプリケーションと DOS アプリケーションの両方) は、前述の Windows コンソール レイヤーのため、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ターミナルは、 MicrosoftがWindows 10以降[2]向けにWindowsコンソールの代替として開発したマルチタブ ターミナルエミュレーターです。
2019 年にMicrosoftによって Windows に追加されたWindows Subsystem for Linux は、 Windows コンソール、Windows ターミナル、その他の Windows ベースのターミナル 内で、Windows 上でLinuxテキストベース アプリを実行することをサポートします。
Unix系システムの場合


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 アプリケーションは、dialogプログラム ( 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をシミュレート) があります。この機能は、ジョブ、並列ビルド、またはテストを実行するためのものですが、軽量のターミナルマルチプレクサとしても使用できます (ウィンドウ分割とタブページを使用)。
オープンVMS
VAX/VMS(後にOpenVMSとして知られる)には、 cursesと同様のスクリーン管理機能またはSMGと呼ばれる機能がありました。これはコマンドラインから呼び出すことも、SMG$ライブラリを使用するプログラムから呼び出すこともできます。[3]
オベロン
もう 1 つの種類の TUI は、1988 年に最初にリリースされ、現在も維持されているOberon オペレーティング システムの主要なインターフェイスです。他のほとんどのテキストベースのユーザー インターフェイスとは異なり、Oberon はテキスト モードのコンソールやターミナルを使用せず、マウス クリックの主なターゲットとなるテキストを表示される大きなビットマップ ディスプレイを必要とします。ハイパーテキストのリンクと同様に、コマンドには という形式があり、マウスの中央クリックでアクティブになります。画面上のどこに表示されたテキストも編集でき、必要なコマンド構文でフォーマットされていれば、中央クリックして実行できます。適切にフォーマットされたコマンドを含むテキスト ファイルは、いわゆるツール テキストとして使用できるため、ユーザーが構成可能なメニューとして機能します。以前のコマンドの出力を編集して、新しいコマンドとして使用することもできます。このアプローチは、従来のダイアログ指向のコンソール メニューやコマンド ライン インターフェイスとは根本的に異なります。
Module.Procedure parameters ~
グラフィカルウィジェットを使用せず、プレーンテキストのみを使用するが、タイルウィンドウマネージャを備えたGUIに匹敵する機能を提供するため、テキストユーザーインターフェイスまたはTUIと呼ばれます。簡単な紹介については、最初に公開されたOberonシステムに関するレポートの4ページ目の2番目の段落を参照してください。[4]
Oberon のUI は、Bell Labs オペレーティング システムの Plan 9 用のAcme テキスト エディターと電子メール クライアントのデザインに影響を与えました。
組み込みシステム

最新の組み込みシステムは、パソコンなどのモニターに TUI を表示できます。この機能は通常、専用の集積回路、モジュール、またはFPGA を使用して実装されます。
ビデオ回路またはモジュールは通常、 UART経由のVT100互換コマンド セットを使用して制御されます。[引用が必要] FPGA 設計では通常、ビデオ メモリへの直接アクセスが可能です。[引用が必要]
その他の用途
- Commodore 64 8 ビット コンピュータのフル スクリーン エディタは、当時の市場セグメントでは先進的でした。ユーザーは、カーソルを画面領域全体に移動して、BASICプログラム行やダイレクト モードコマンドを入力および編集できました。すべての Commodore 8 ビットコンピュータは、TUI の作成に適した文字グリフを含むPETSCII文字セットを使用していました。
- Apple のMacintosh Programmer's Workshopプログラミング環境には、TUI シェルの Commando が含まれていました。これが BBEdit のシェル ワークシートのインスピレーションとなりました。
- 後のApple IIモデルには、TUI の作成に使用されるグラフィカル グリフのセットであるMouseTextが含まれていました。
- 1982 年のCorvus Conceptコンピュータは、フルページのピボット ディスプレイ上でファンクション キーベースのテキスト インターフェイスを使用していました。
参照
- コマンドラインインターフェース(CLI)
- コンソールアプリケーション
- 自然言語ユーザーインターフェース
- テキストベースのゲーム、TUIを使用したゲーム
- VGAテキストモード
- MDAA
プログラミングライブラリの例
- curses (プログラミングライブラリ)
- ncurses
- CDK
- Newtウィジェットベースのツールキット
- S-ラング
- ターボビジョン
- Visual Basicの初期バージョン
参考文献
- ^ Windows 7 でフルスクリーンの cmd プロンプト。Social.technet.microsoft.com。2013 年 6 月 15 日に取得。
- ^ Warren, Tom (2019年5月6日). 「Microsoft、Windows用の新しいコマンドラインアプリ、Windows Terminalを発表」. The Verge .
- ^ 「OpenVMS RTL Screen Management (SMG$) Manual」. hpe.com . 2001 . 2021年1月1日閲覧。
- ^ ヴィルト、ニクラス;グートクネヒト、ユルク (1988)。 Oberon システム(PDF) (技術レポート)。 ETH Eidgenössische Technische Hochschule Zürich、Institut für Informatik。 Vol. 88.土井:10.3929/ethz-a-000487176。
