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

一部のファイルマネージャはTUIを実装しています(ここではMidnight Commander
Vimは非常に広く使用されている TUI テキスト エディターです。

コンピューター科学において、テキストベースのユーザーインターフェースTUI)(または、テキストだけでなくコンピューター端末の特性に依存していることを反映して、ターミナルユーザーインターフェース)は、ビットマップディスプレイや現代の従来のグラフィカルユーザーインターフェース(GUI)が登場する前の、人間とコンピューターの相互作用の初期の形態として一般的だったユーザーインターフェース(UI)のタイプを表すレトロニムである。現代のGUIと同様に、画面領域全体を使用でき、マウスやその他の入力を受け入れることができる。また、色を使用することがあり、┌や╣などのボックス描画文字を使用して表示を構成することが多い。現代の使用コンテキストでは、通常、ターミナルエミュレーターである。

テキスト端末の種類

コンピュータが普及し始めた初期の頃は、テキスト端末といえばキーボードとプリンターを備えたデバイスが一般的でした。しかし現在では、キーボードとディスプレイを備えたデバイスが主流となっています。

テキスト スクリーン (およびそれを使用した通信) は、次の 3 つのタイプのいずれかに属します (ここでは、アクセシビリティの高い順に並べています)。

  1. ビデオアダプタまたはCPU自体によって制御されるローカルテキストモードディスプレイ。これは、様々な種類のパーソナルコンピュータモバイルデバイス上でローカルに実行されるアプリケーションでは正常な状態です。オペレーティングシステムによって制限されない限り、スマートなプログラムはハードウェアテキストモードの能力を最大限に活用できます。
  2. テキストモードエミュレータ。例としては、 TN3270X Window SystemxtermMicrosoft Windowsのwin32コンソール(ウィンドウモード)などがあります。これは通常、実際のテキストモード表示を想定するプログラムをサポートしますが、動作速度がかなり低下する可能性があります。独自フォントのアップロードなど、高度なテキストモードの一部機能は、ほぼ確実に利用できなくなります。
  3. リモートテキスト端末。通信機能は通常、シリアル回線またはそのエミュレーションに限定され、Telnetセキュアシェルなどの帯域外チャネルとして、 ioctl ()を数回使用することになる場合もあります。これはソフトウェアの制限によりリモートディスプレイデバイスの機能が利用できなくなるため、最悪のケースです。

テキスト アプリケーションの観点から見ると、表示タイプは、 cursesTPUTなどの API によって決定されます。

Linuxやその他のUnix系システムでは、ディスプレイとキーボードを同じインターフェース(標準ストリーム)で制御するため、プログラムは3つのケースのいずれにも簡単に対応できます。Windowsとの比較については以下を参照してください。

開発者がTUI アプリケーションを構築するのに役立つTUI プログラミング ライブラリが多数用意されています。

ANSI互換端末

米国規格協会(ANSI)規格ANSI X3.64は、端末にTUI(ユーザーインターフェース)を作成させるために使用できる標準的なエスケープシーケンスのセットを定義しています( ANSIエスケープコードを参照)。エスケープシーケンスは、上記のセクションで説明した3つのケースすべてでサポートされ、任意のカーソル移動と色の変更が可能になります。ただし、すべての端末がこの規格に準拠しているわけではなく、互換性はないものの機能的に同等のシーケンスも多数存在します。

MS-DOSとWindows

FreeDOS Editユーザーインターフェース

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

Impulse Trackerのマウスカーソル。マウスの動きに合わせて、カーソルが表示されている場所で使用されている文字のグリフをリアルタイムで再生成することで、より正確なカーソル(ピクセル単位の解像度)を実現しました。

ほとんどの場合、これらのプログラムはメイン画面の背景には白または黄色の文字が使用されていましたが、通常、ユーザーが色をカスタマイズすることもできました。IBMのコード ページ 437のボックス描画文字がよく使用されていました。後に、インターフェイスはグラフィカル ユーザー インターフェイス(GUI) の影響を強く受けるようになり、プルダウン メニュー、重なり合うウィンドウ、ダイアログ ボックスニーモニックキーボード ショートカットで操作するGUI ウィジェットが追加されました。すぐにマウス入力が追加されました。これは、単純な色付きのボックスとしてテキスト解像度で、または拡張グラフィックス アダプター(EGA) およびビデオ グラフィックス アレイ(VGA) ディスプレイ アダプターの機能によりソフトウェアでテキスト文字の形状を再定義できるため、グラフィカル解像度で 、追加機能を提供しました。

この種の著名なプログラムとしては、Microsoft WordDOS ShellWordPerfectNorton CommanderTurbo VisionベースのBorland Turbo PascalTurbo 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以降向けにWindowsコンソールの代替として開発したマルチタブターミナルエミュレーターです[ 2 ]

2019 年にMicrosoftによって Windows に追加された Windows Subsystem for Linux は、WindowsコンソールWindows ターミナル、その他の Windows ベースのターミナル 内で、Windows 上でLinuxテキストベース アプリを実行することをサポートします。

Unix系システム

XFdrakeは、 Mandriva Linuxでグラフィカルシステムを構成するために使用されるTUIです。
btop、Linux やその他の Unix 系 OS 用のタスク マネージャー ユーティリティ

Unix系オペレーティングシステムでは、TUIは端末制御ライブラリcursesncurses(ほぼ互換性のあるライブラリ)、あるいは代替ライブラリであるS-Langを用いて構築されることが多い。Berkeley Unixにおけるcursesライブラリの登場により、TUIを記述するための移植性と安定性に優れたAPIが誕生した。様々なテキスト端末タイプに同じインタフェースで通信できるようになったことで、「ビジュアル」Unixプログラムがより広く使用されるようになり、シンプルなラインインタフェースではなく端末画面全体を占めるようになった。これは、 viなどのテキストエディタpinemuttなどのメールクライアント、 SMITSAMFreeBSDSysinstallなどのシステム管理ツール、lynxなどのウェブブラウザに見られる。 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テキストエディタは、バッファ内でシェルを実行して同様の機能を提供できます。Emacsには複数のシェル実装がありますが、ansi-termTUIプログラムの実行に適しているのは のみです。その他の一般的なシェルモード、shellおよびは、eshellコマンドラインとTUIプログラムのみをエミュレートしますが、「ターミナルが完全に機能していません」というエラーメッセージが表示されたり、インターフェースが文字化けしたりします。無料のVimNeovimテキストエディタには、ターミナルウィンドウ(xtermをシミュレート)があります。この機能はジョブ、並列ビルド、またはテストの実行を目的としていますが、ウィンドウ分割とタブページを使用して軽量のターミナルマルチプレクサとしても使用できます。

オープンVMS

VAX/VMS(後にOpenVMSとして知られる)には、 cursesに似た機能であるスクリーン管理機能(SMG)がありました。これはコマンドラインから呼び出すことも、SMG$ライブラリを使用するプログラムから呼び出すこともできました。[ 3 ]

オベロン

画像といくつかのテキストビューアが表示されたOberonシステムのデスクトップのスクリーンショット

TUI のもう 1 つの種類は、 1988 年に最初にリリースされ、現在もメンテナンスされているOberon オペレーティング システムの主要なインターフェイスです。他のほとんどのテキストベースのユーザー インターフェイスとは異なり、Oberon はテキスト モードのコンソールやターミナルを使用せず、大きなビットマップ ディスプレイを必要とします。このディスプレイ上のテキストが、マウス クリックの主な対象となります。ハイパーテキストリンクと同様に、コマンドには という形式があり、マウスの中央クリックでアクティブになります。画面上のどこに表示されたテキストも編集でき、必要なコマンド構文でフォーマットされていれば、中央クリックして実行できます。適切にフォーマットされたコマンドを含むテキスト ファイルは、いわゆるツール テキストとして使用できるため、ユーザーが構成可能なメニューとして機能します。以前のコマンドの出力を編集して、新しいコマンドとして使用することもできます。このアプローチは、従来のダイアログ指向のコンソール メニューやコマンド ライン インターフェイスとは根本的に異なりますが、 Macintosh Programmer's Workshopのワークシート インターフェイスと類似点があります。 Module.Procedure parameters ~

グラフィカルウィジェットを使用せず、プレーンテキストのみを使用するにもかかわらず、タイルウィンドウマネージャを備えたGUIと同等の機能を提供するため、テキストユーザーインターフェース(TUI)と呼ばれます。Oberonシステムに関する最初の報告書の4ページ目の2段落目に記載されている簡単な紹介を参照してください。[ 4 ]

Oberon のUI は、Bell Labsオペレーティング システム のPlan 9 用のAcme テキスト エディターと電子メール クライアントのデザインに影響を与えました。

組み込みシステム

LCD画面にメニューを表示する組み込みシステム

現代の組み込みシステムは、パソコンなどのモニターにTUIを表示できます。この機能は通常、専用の集積回路、モジュール、またはFPGAを使用して実装されます。

ビデオ回路またはモジュールは通常、 UART経由のVT100互換コマンド セットを使用して制御され、FPGA 設計では通常、ビデオ メモリへの直接アクセスが許可されます。

その他の用途

参照

プログラミングライブラリの例

参考文献

  1. ^ Windows 7でコマンドプロンプトを全画面表示。Social.technet.microsoft.com。2013年6月15日閲覧。
  2. ^ Warren, Tom (2019年5月6日). 「Microsoft、Windows向けの新しいコマンドラインアプリ「Windows Terminal」を発表The Verge .
  3. ^ 「OpenVMS RTL Screen Management (SMG$) Manual」 . hpe.com . 2001年. 2020年12月4日時点のオリジナルよりアーカイブ2021年1月1日閲覧。
  4. ^ヴィルト、ニクラス;グートクネヒト、ユルク (1988)。Oberon システム(PDF) (技術レポート)。 ETH Eidgenössische Technische Hochschule Zürich、Institut für Informatik。 Vol. 88.土井10.3929/ethz-a-000487176