| 呪い | |
|---|---|
Curses を使用する FMLI 上に構築された Live Upgrade (lu) コマンド | |
| 開発者 | ケン・アーノルド |
| 初回リリース | 1978年[ 1 ] |
| 書かれた | C |
| タイプ | ウィジェットツールキット |
cursesはUnix ライクなシステム用の端末制御ライブラリであり、テキスト ユーザー インターフェイス(TUI) アプリケーションの構築を可能にします。
名前は「カーソル最適化」という言葉をもじったものです。これは、文字セル端末(例: VT100 )におけるアプリケーションの表示を管理する関数のライブラリです。[ 2 ]
ncurses は、 4.4BSD のクラシック cursesの承認された代替品です。
curses を使用すると、プログラマーは特定の端末タイプに直接書き込むことなく、テキストベースのアプリケーションを作成できます。実行システム上の curses ライブラリは、端末タイプに基づいて適切な制御文字を送信します。このライブラリは、端末画面にマッピングされる1つまたは複数のウィンドウを抽象化します。各ウィンドウは文字マトリックスで表されます。プログラマーは各ウィンドウの望ましい外観を設定し、curses パッケージに画面の更新を指示します。ライブラリは、画面を更新するために必要な最小限の変更を決定し、端末固有の機能と制御シーケンスを使用してそれらを実行します。
つまり、プログラマーが画面の外観を示す文字マトリックスを作成し、curses にその作業を処理させるということです。
curses APIは複数の場所で説明されています。[ 3 ] cursesの実装のほとんどは、数千種類の端末の機能を記述できるデータベースを使用しています。PDCursesのように、端末データベースではなく専用のデバイスドライバを使用する実装もいくつかあります。ほとんどの実装はterminfoを使用していますが、termcap を使用しているものもあります。cursesには、文字セル端末への移植性とシンプルさという利点があります。ビットマップグラフィックや複数のフォントを必要としないアプリケーションでは、cursesを使用したインターフェース実装は、通常、Xツールキットを使用したものよりもはるかにシンプルで高速です。
最初のcursesライブラリはケン・アーノルドによって書かれ、 BSD UNIXとともにリリースされました。Rogueをはじめとするいくつかのゲームで使用されました。[ 4 ] [ 5 ] [ 6 ] 1990年代にはBSDライブラリにいくつかの改良が加えられ、「4.4BSD」cursesとして公開されました。例えば、複数の種類のビデオハイライト機能が追加されました。しかし、これらは広くは利用されていません。
「curses」という名前は、カーソル最適化(curses optimization)をもじったものです。[ 7 ] cursesはviエディタで使われていたと誤解されることがあります。実際には、cursesのカーソル移動を最適化するコードは、cursesより古いviから借用されたものです。[ 5 ]
Goodheart によると、 Ken Arnold による curses のオリジナルの実装は、termcapライブラリの関数を再利用し、それに追加することから始まりました。[ 8 ]数年後、バークレーでviとtermcap のソースを保守していたMary Ann HortonがAT&T 社に移り、terminfoを使用して別のバージョンを作成しました。これはUNIX System IIIとUNIX System Vの一部となりました。後者のライセンス制限のため、ライブラリの BSD バージョンと AT&T バージョンは独立して開発されました。 termcap/terminfo の改良に加えて、 AT&T バージョンでは他の改良も行われました。
AT&T curses の開発は、X/Open Curses が定義された1990年代半ばに停止したようです。[ 9 ] 1995年、BSD のメンテナーであるKeith Bostic は、 curses ライブラリを公式に廃止し、ncursesを採用しました。[ 10 ] ncurses と PDCurses の開発は継続されています。BSD curses のバージョンは、NetBSDオペレーティングシステムで引き続きメンテナンスされています(ワイド文字のサポート、termcap から terminfo への移行など)。
AT&T curses を模倣した様々な開発ラインが、少なくとも 3 つの実装から始まりました。Pavel Curtisによるpcurses (1982 年開始)、Mark Hessling によるエディタTHEをサポートするPDCurses (パブリック ドメイン curses) (1987 年開始)、Rexx /Curses、[ 11 ]、およびPC curses (Björn Larsson によるバージョン 1.4 以前。1990 年以前の Pavel Curtis のライブラリに触発されて開発されました)。[ 12 ] [ 13 ]
ncurses(新しいcurses)は「pcurses として始まり、1993年後半にncurses 1.8.1として再発行されました」。[ 14 ] ncursesは最も広く知られているcursesの実装であり、 NetBSDプロジェクトにおけるBSD cursesなど、他の派生版の開発のきっかけとなりました。[ 15 ] [ 16 ]
ncursesライブラリは当初Linux、OpenBSD、FreeBSD、NetBSDで開発されましたが、Thomas Dickeyを中心に多くのANSI/POSIX UNIXシステムに移植されています。PDCursesはncursesと同一ではありませんが、同じ関数呼び出しを使用し、ncursesと同じように動作します。ただし、PDCursesはDOS、Win32、OS/2 、 X11などのコンソールウィンドウなど、異なるデバイスを対象としています。両者間の移植は難しくありません。例えば、ローグライクゲームADOMはLinuxとncurses向けに開発され、後にDOSとPDCurses向けに移植されました。[ 17 ] [ 18 ]
Curses は、コンソールモードで動作する PC、ハードウェア ANSI 端末、 TelnetまたはSSHクライアントなど、テキストのみのデバイス上で GUI のような機能を実現するように設計されています。Curses ベースのソフトウェアとは、ユーザーインターフェースが curses ライブラリ、または互換ライブラリ( ncursesなど) によって実装されているソフトウェアです。
Cursesベースのプログラムは、テキストのみのデバイスで一般的に見られるコマンドラインインターフェース(CLI)ではなく、テキストボックスやスクロール可能なリストなどの「ウィジェット」を含む、従来のグラフィカルユーザーインターフェースに似たユーザーインターフェースを備えていることがよくあります。これにより、テキストのみのデバイスでも実行可能でありながら、CLIベースのプログラムよりもユーザーフレンドリーになります。また、Cursesベースのソフトウェアは、GUIベースのソフトウェアよりもリソースフットプリントが軽く、ハードウェアとソフトウェアの両方において、より幅広いシステムで動作します。これには、1990年以前の古いマシンから、テキストのみのディスプレイを使用する最新の組み込みシステムまでが含まれます。
Curses はUnix 系オペレーティング システムと最もよく関連付けられますが、 Microsoft Windows用の実装も存在します。
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ)が必要ですBjörn Larsson 著の PC curses (バージョン 1.4) に基づく
はPavel Curtisの[パッケージ]の移植版/書き直しです。