GNUstep

GNUstep（グニューステップ）は、NeXTのOPENSTEP Objective-C ライブラリ(フレームワーク)、ウィジェット・ツールキット、アプリケーション開発ツール群をフリーソフトウェアとして実装したものである。Unix系オペレーティングシステムだけでなくMicrosoft Windowsでも動作する。GNUプロジェクトの一部でもある。

歴史 
GNUstepの開発が始まったのは、スタンフォード線形加速器センターの Paul Kunz らがNEXTSTEPの HippoDraw を他のプラットフォームに移植したいと考えたのがきっかけであった。HippoDrawを一から書き直してアプリケーションとしての設計だけを活用するのではなく、アプリケーションが依存しているNeXTSTEPのオブジェクト層を書き換えようと考えた。そしてできたのが最初のlibobjcXである。これを使って彼らは HippoDraw を全く書き換えることなくUNIXシステムのX Window System上に移植できた。OPENSTEPの仕様が1994年に公開されると、彼らは新たなAPIにも対応するobjcXを作ることを決めた。そのソフトウェアが"GNUstep"として知られるようになるのである。

概要 
GNUstepは、NeXTのOPENSTEP仕様に完全互換なプラットフォームにまたがったオブジェクト指向開発環境を備えている（NeXT社はApple Computerに買収された）。Appleと同様GNUstepはJavaインターフェイスを持ち、同時にRubyやSchemeとも接続できる。
GNUstepのアプリケーションインタフェースはmacOSのCocoaのインタフェースと根幹は同じ（NeXTとOPENSTEP）である。GNUstepの発祥はCocoaより先であった。

GNUstepはOPENSTEPの仕様を満たすことを目指して開発され、macOSが実装しているフレームワークの多くを欠いているが、GNUstepの開発者は互換性を保つため、AppleのCocoaの追加機能に追随しようとしている。ただし、CocoaとGNUstepはABIが全く異なるため、アプリケーションのバイナリレベルの互換性は期待できない。

パラダイム 
GNUstepはOPENSTEPと似ており、OPENSTEPの設計規則を継承するとともにObjective-C言語を使っている。
 Model View Controller パラダイム 
 Target-Action 
 ドラッグ・アンド・ドロップ
 委譲 
 (NSInvocationを通した)メッセージ転送

クラスの機能

ファウンデーションキット 
（デバイスに依存しないクラス群とプログラミング機能）
 文字列
 集合（配列、セット、辞書）と順序子 (enumerators)
 ファイル管理
 オブジェクト・アーカイブ
 拡張されたデータ操作
 分散オブジェクトとプロセス間通信
 URL処理
 通知 (notifications) および分散通知
 簡単なマルチスレッド
 タイマー
 ロック
 例外処理

アプリケーションキット 
（GUI系クラスの集まり）
 ユーザインタフェースの要素(テーブルビュー、ブラウザ、マトリックス、スクロールビュー)
 グラフィックス（WYSIWYG、ポストスクリプト風グラフィックス、ベジェ曲線、イメージ処理、グラフィカル・コンテキスト）
 カラー管理(較正色と物理色(CMYK,RGB,HSB)、グレイと名前付きカラー表現、アルファブレンディング)
 テキスト：多様なテキストフォーマット、アタッチメント、レイアウトマネージャ、タイプセッター、ルール、段落スタイル、フォント管理、スペル
 文書管理
 印刷機能：印刷操作、印刷パネルとページレイアウト
 ヘルプ管理
 ペーストボード（クリップボードのようなもの）
 スペルチェッカー
 アプリケーションのワークスペース束縛
 ドラッグ・アンド・ドロップ操作
 アプリケーション間の共通サービス

脚注

関連項目 

 プロパティリスト(defaults)
 NEXTSTEP
 Darwin
 OPENSTEP
 Window Maker
 Étoilé

外部リンク 

 The GNUstep Project Homepage(英語)
 GNUstepはOpenStepの代替フリーソフトウェア

GNUプロジェクト
デスクトップ環境
オープンソースソフトウェア
X Window System
MacOS
ウィジェット