以下の内容はhttps://www.weblio.jp/content/cursesより取得しました。


ウィキペディアウィキペディア

curses

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/02/11 01:56 UTC 版)

curses(カーシス、カーズィス)は、Unix系システムにおいて文字表示端末上の画面表示や入力を統一的に管理するためのAPIを定義した、端末制御ライブラリ群であり[1]テキストユーザインタフェース (TUI) アプリケーションの基盤として用いられる。

概要

curses は、文字ベースの画面操作を効率的に扱うためのライブラリ群の設計概念である。アプリケーションは端末を直接操作するのではなく、ライブラリに各ウィンドウの状態を伝え、変更のあった部分だけを端末に反映させる仕組みを利用する。これにより、スクロールや分割ウィンドウ、フォーム入力などの文字ベースインターフェースを簡潔に構築できる。

curses では、実画面を 1 つ以上のウィンドウに対応付けて扱う。各ウィンドウは文字の並び(行と列)で表現され、プログラマは表示したい内容を設定して更新を指示する。ライブラリは変更があった部分だけを端末に反映するため、効率的な画面管理が可能である。

多くの実装では、端末ごとの制御文字や機能差をまとめたデータベース(通常 terminfo、一部は termcap)を参照し、古い端末でも動作可能である。専用デバイスドライバを用いる実装としては PDCurses があるが、例は少ない。代表的な実装の一つとして ncurses が存在する。

curses はグラフィカルユーザインタフェース(GUI)を提供するものではなく、ビットマップや多様なフォントを必要としない文字端末環境で、シンプルかつ高速に動作する点が特徴である。

歴史

ケン・アーノルドが開発し、BSD UNIXの一部としてリリースし、ローグというゲームなどで使用された[2][3][4]

"curses" という名称はcursor optimizationに由来する[5]。また、ときおりviエディタでcursesが使われているという趣旨の解説が記載されている場合があるが、実際にはその逆で、viのカーソル移動のコードを参考にしてcursesが書かれた[3]

当初、termcapライブラリを使って実装された。数年後、カリフォルニア大学バークレー校viとtermcapを改良していたマーク・ホートン英語版AT&Tに行き、terminfoを使った別のバージョンを作り、それがUNIX System IIIUNIX System Vに採用された。後者はライセンス上の制限があるため、BSDとAT&Tそれぞれのバージョンは独立に開発されている。AT&T版ではterminfoを使っただけでなく、以下のような改良も行われている。

  • ハイライト表示(ボールド表示、アンダーライン表示) - BSD版では単に「強調」として一種類しかサポートしていなかった。
  • 枠線の描画 - BSD版ではこの部分が貧弱だった。
  • 色付きの表示 - BSD版では全く対応していない。

AT&Tでのcurses開発は1990年代中ごろに終わり、同じころX/OpenがcursesのAPIを定義した[6]。その後もncursesPDCurses英語版の開発は継続されている。BSD版cursesはNetBSDで保守されており、多バイト文字対応、termcapからterminfoへの移行などが行われている。

pcursesとPDcurses

ncursesはcursesの代替としてLinuxOpenBSDFreeBSDNetBSD向けにGNUプロジェクトで作られたライブラリであり、その後、POSIX準拠のUNIXに移植されていった。PDCurses (Public Domain Curses) はUNIX以外の DOSWindowsOS/2など向けに作られたcursesとほぼ同じ機能を提供するライブラリである。クロスプラットフォームのゲームなどで、Linuxではncurses、WindowsではPDCursesを使っているものがある。

1990年代には、4.4BSDでBSD版cursesにハイライト表示方法を複数サポートするなどの改良を施した。しかしこちらはあまり普及しなかった。それとは別に、AT&T版を真似た別のバージョンの開発が始まっていた。これには少なくとも2つの実装がある。pcurses(1982年開始)とPDCurses(Public Domain curses、1987年開始)である。

ncurses

ncurses (new curses) はpcursesから派生したもので、1993年にバージョン1.8.1から始まった[7]。ncursesは今では最も普及している実装であり、これに刺激されてNetBSDプロジェクトでのBSD版cursesの開発などが進められた[8][9]

移植性

ncursesライブラリは当初Linux、OpenBSD、FreeBSD、NetBSDを対象としていたが、その後POSIX準拠の各種Unix系システムに移植された。PDCursesはAPIや機能はncursesと全く同一ではないが、DOS、Win32、OS/2のコンソール端末やX11などで動作する。この両者間での移植は難しくはない。例えばローグライクゲームADOM英語版はLinux上でncursesを使って書かれたが、後にDOS上でPDCursesを使って移植された[10]

cursesを使ったソフトウェア

Tin(ニュースリーダー)。cursesを使ってカラー表示している。
Jack(CDリッパー)。cursesを使用

cursesは、テキストのみの表示デバイス(PCのコンソールモード、ANSI端末、telnetSSHのクライアントなど)でGUI風の機能を提供するよう設計されている。

cursesを使ったプログラムは、テキストのみの表示デバイスでよくあるコマンドラインインタフェース (CLI) ではなく、一般的なGUIに似たユーザインタフェースを採用することが多く、テキストボックスやスクロール可能なリストといったウィジェットを使う。それによってCLIよりも使いやすいものになり、同時にテキストのみを表示する各種デバイスでも利用可能である。また、GUIを使うよりも少ないリソースで動作可能である。

SVR4ではcursesを利用した言語 FMLI を導入し、それを使ったテキストのみのユーザインタフェースFACEを実装した。FACEはシステム管理用インタフェースに使われた。FMLIはSolarisでも使われていた。

cursesを使ったソフトウェアが必ずGUI風のテキストユーザインタフェースを採用するとは限らない。例えばviエディタはTUI/GUI的なインタフェースではない。

脚注

注釈

出典

  1. ^ Thomas E. Dickey. “NCURSES - Frequently Asked Questions”. 2012年4月6日閲覧。
  2. ^ Peter H. Salus (1994年10月). “The history of Unix is as much about collaboration as it is about technology”. Byte. 2012年4月6日閲覧。
  3. ^ a b Arnold, K. C. R. C. (1977). Screen Updating and Cursor Movement Optimization: A Library Package.. University of California, Berkeley. 
  4. ^ Kenneth C. R. C. Arnold; Elan Amir (1992年12月). “Screen Updating and Cursor Movement Optimization: A Library Package”. 2012年4月6日閲覧。
  5. ^ Thomas E. Dickey. “NCURSES - Frequently Asked Questions”. 2012年4月6日閲覧。
  6. ^ X/Open Curses, Issue 4 Version 2, Reference Pages”. The Open Group (1997年). 2012年4月6日閲覧。
  7. ^ Thomas E. Dickey (1996年12月). “NCURSES - New Curses”. 2012年4月6日閲覧。
  8. ^ NetBSD project (2004年2月). “CURSES_SCREEN(3), NetBSD Library Functions Manual”. 2012年4月6日閲覧。
  9. ^ Ruibiao Qiu (2005年9月). “NetBSD-SoC: Wide Character Support in NetBSD curses Library”. 2012年4月6日閲覧。
  10. ^ Thomas Biskup (1994年 - 2007年). “ADOM - The Past”. 2007年11月16日閲覧。

外部リンク





固有名詞の分類

UNIX Cygwin  /dev/null  Curses  Procfs  ビットバケツ



以上の内容はhttps://www.weblio.jp/content/cursesより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14