curses(プログラミングライブラリ)

呪い
開発者ケン・アーノルド
初回リリース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 ]数年後、バークレーvitermcap のソースを保守していたMary Ann HortonがAT&T 社に移り、terminfoを使用して別のバージョンを作成しました。これはUNIX System IIIUNIX System Vの一部となりました。後者のライセンス制限のため、ライブラリの BSD バージョンと AT&T バージョンは独立して開発されました。 termcap/terminfo の改良に加えて、 AT&T バージョンでは他の改良も行われました。

ビデオのハイライト(太字、下線)
BSD バージョンではstandoutのみがサポートされていました。
線画
BSD バージョンではこの点についてほとんどサポートがありませんでした。
これは BSD バージョンではサポートされていませんでした。

AT&T curses の開発は、X/Open Curses が定義された1990年代半ばに停止したようです。[ 9 ] 1995年、BSD のメンテナーであるKeith Bostic は、 curses ライブラリを公式に廃止し、ncursesを採用しました。[ 10 ] ncurses と PDCurses の開発は継続されています。BSD curses のバージョンは、NetBSDオペレーティングシステムで引き続きメンテナンスされています(ワイド文字のサポート、termcap から terminfo への移行など)。

pcurses と PDCurses

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

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はDOSWin32OS/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用の実装も存在します。

参照

参考文献

  1. ^ Craddock, David L. (2016年6月17日). 「Procedural Dungeons of Doom: The Making of Rogue – Chapter 3」 . 2023年5月18日閲覧
  2. ^ Thomas E. Dickey. 「NCURSES - よくある質問」 .
  3. ^ジョン・ストラング『 cursesを使ったプログラミング』オライリー社、 ISBN 0-937175-02-1
  4. ^ Peter H. Salus (1994年10月). 「Unixの歴史は、技術の歴史であると同時に、コラボレーションの歴史でもある」 . Byte.
  5. ^ a b Arnold, KCRC (1977). 「画面更新とカーソル移動の最適化:ライブラリパッケージ」カリフォルニア大学バークレー校.{{cite journal}}:ジャーナルを引用するには|journal=ヘルプ)が必要です
  6. ^ Kenneth CRC Arnold、Elan Amir (1992年12月). 「画面更新とカーソル移動の最適化:ライブラリパッケージ」 .
  7. ^ Thomas E. Dickey. 「NCURSES - よくある質問」 .
  8. ^グッドハート、バーニー (1991). UNIXの呪いの解説. プレンティス・ホール. p. xi. ISBN 0-13-931957-3
  9. ^ 「X/Open Curses、第4版バージョン2、リファレンスページ」 The Open Group、1997年。
  10. ^ Eric S. Raymond (1995年9月1日). 「ncurses: Linux向けポータブルスクリーン処理」 . Linux Journal . 2023年5月18日閲覧
  11. ^ Mark Hessling (2008). 「Rexx/Curses」 . SourceForgeプロジェクト rexxcurses . 2014年2月10日閲覧
  12. ^ F. Ellermann (1993-07-26). 「CURSES.NEW in pccurses.zip」. 2014-02-10閲覧. Björn Larsson 著の PC curses (バージョン 1.4) に基づく
  13. ^ Björn Larsson (1990-01-14). 「README.NOW in pccurs14.zip」 . 2014年2月23日時点のオリジナルよりアーカイブ。 2014年2月10日閲覧。PCcursesはPavel Curtisの[パッケージ]の移植版/書き直しです。
  14. ^ Thomas E. Dickey (1996年12月). 「NCURSES - 新たな呪い」 .
  15. ^ NetBSDプロジェクト (2004年2月). 「CURSES_SCREEN(3), NetBSDライブラリー関数マニュアル」 .
  16. ^ Ruibiao Qiu (2005年9月). 「NetBSD-SoC: NetBSD curses ライブラリーのワイド文字サポート」 .
  17. ^ Thomas Biskup (1994–2007). 「ADOM - The Past」 . 2007年10月10日時点のオリジナルよりアーカイブ。 2007年11月16日閲覧
  18. ^ Thomas Biskup (1996年3月15日). 「New Game: ADOM (MS-DOS, MS-Windows, and Linux only)」 .ニュースグループrec.games.roguelike.announce . 2007年11月16日閲覧