出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/02/11 01:56 UTC 版)
|
|
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 (2025年10月)
|
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 IIIとUNIX System Vに採用された。後者はライセンス上の制限があるため、BSDとAT&Tそれぞれのバージョンは独立に開発されている。AT&T版ではterminfoを使っただけでなく、以下のような改良も行われている。
AT&Tでのcurses開発は1990年代中ごろに終わり、同じころX/OpenがcursesのAPIを定義した[6]。その後もncursesとPDCursesの開発は継続されている。BSD版cursesはNetBSDで保守されており、多バイト文字対応、termcapからterminfoへの移行などが行われている。
ncursesはcursesの代替としてLinux、OpenBSD、FreeBSD、NetBSD向けにGNUプロジェクトで作られたライブラリであり、その後、POSIX準拠のUNIXに移植されていった。PDCurses (Public Domain Curses) はUNIX以外の DOS、Windows、OS/2など向けに作られたcursesとほぼ同じ機能を提供するライブラリである。クロスプラットフォームのゲームなどで、Linuxではncurses、WindowsではPDCursesを使っているものがある。
1990年代には、4.4BSDでBSD版cursesにハイライト表示方法を複数サポートするなどの改良を施した。しかしこちらはあまり普及しなかった。それとは別に、AT&T版を真似た別のバージョンの開発が始まっていた。これには少なくとも2つの実装がある。pcurses(1982年開始)とPDCurses(Public Domain curses、1987年開始)である。
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は、テキストのみの表示デバイス(PCのコンソールモード、ANSI端末、telnetやSSHのクライアントなど)でGUI風の機能を提供するよう設計されている。
cursesを使ったプログラムは、テキストのみの表示デバイスでよくあるコマンドラインインタフェース (CLI) ではなく、一般的なGUIに似たユーザインタフェースを採用することが多く、テキストボックスやスクロール可能なリストといったウィジェットを使う。それによってCLIよりも使いやすいものになり、同時にテキストのみを表示する各種デバイスでも利用可能である。また、GUIを使うよりも少ないリソースで動作可能である。
SVR4ではcursesを利用した言語 FMLI を導入し、それを使ったテキストのみのユーザインタフェースFACEを実装した。FACEはシステム管理用インタフェースに使われた。FMLIはSolarisでも使われていた。
cursesを使ったソフトウェアが必ずGUI風のテキストユーザインタフェースを採用するとは限らない。例えばviエディタはTUI/GUI的なインタフェースではない。
固有名詞の分類