GNUstep

GNUstep(グニューステップ)は、かつてNeXT社が開発したOPENSTEPの仕様に基づき、自由ソフトウェアとして実装された開発環境です。Objective-Cライブラリ、ウィジェットツールキット、アプリケーション開発ツール群を含み、Unix系オペレーティングシステムだけでなく、Microsoft Windows上でも動作します。GNUプロジェクトの一環として開発されており、オープンソースの恩恵を享受できます。

歴史



GNUstepの開発は、スタンフォード線形加速器センターのPaul Kunz氏らが、NeXTSTEPのアプリケーション「HippoDraw」を他のプラットフォームに移植しようとしたことから始まりました。当初、アプリケーションを再設計するのではなく、基盤となるNeXTSTEPのオブジェクト層を書き換えることで移植を試みました。この試みから最初のlibobjcXが生まれ、HippoDrawをX Window System上で動作させることに成功しました。OPENSTEPの仕様が1994年に公開されると、彼らは新たなAPIに対応したobjcXの開発に着手し、これが後のGNUstepとして知られるようになりました。

概要



GNUstepは、OPENSTEPの仕様に準拠した、プラットフォームを跨ぐオブジェクト指向開発環境を提供します。NeXT社は後にApple Computerに買収されましたが、GNUstepはOPENSTEPの理念を引き継ぎ、JavaRubySchemeといった他の言語との連携も可能です。アプリケーションインターフェースはmacOSのCocoaと共通の起源を持ち、Cocoaよりも古い歴史を持っています。GNUstepはOPENSTEPの完全な実装を目指しており、macOSが持つ多くのフレームワークを欠いていますが、開発者たちは互換性を保つためにCocoaの追加機能にも追随しようと努めています。ただし、ABI(アプリケーションバイナリインターフェース)が異なるため、バイナリレベルでの互換性は期待できません。

パラダイム



GNUstepは、OPENSTEPの設計思想を継承し、Objective-C言語をベースとしています。その開発パラダイムには、以下の特徴的な要素が含まれます。

Model View Controller (MVC) パラダイム: アプリケーションをモデル、ビュー、コントローラーの3つの役割に分割し、開発効率と保守性を向上させます。
Target-Action: イベントが発生した際に、特定のオブジェクト(ターゲット)の特定のアクション(メソッド)を実行する仕組みです。
ドラッグ・アンド・ドロップ: グラフィカルユーザーインターフェース上でのオブジェクトの移動や操作を直感的に行えます。
委譲: あるオブジェクトの処理を別のオブジェクトに委ねることで、コードの再利用性と柔軟性を高めます。
メッセージ転送: `NSInvocation`を通じて、オブジェクト間でメッセージを送受信するメカニズムです。
クラスの機能: オブジェクト指向プログラミングの基本概念であるクラスに基づいたプログラミングを提供します。

ファウンデーションキット



GNUstepの根幹をなすファウンデーションキットは、デバイスに依存しない以下の機能を提供します。

文字列: テキストデータの操作や処理を行うための機能。
集合(配列、セット、辞書)と順序子: 複数のオブジェクトを効率的に管理するためのデータ構造と、その要素を順に取り出すための仕組み。
ファイル管理: ファイルやディレクトリの作成、読み書き、削除などの操作。
オブジェクト・アーカイブ: オブジェクトの状態を永続的に保存するための機能。
拡張されたデータ操作: より複雑なデータ処理を行うための機能。
分散オブジェクトとプロセス間通信: 異なるプロセス間でオブジェクトを共有したり、メッセージを送受信したりする機能。
URL処理: ウェブサイトなどのネットワークリソースを扱う機能。
通知 (notifications) および分散通知: アプリケーションやプロセス間でイベントを通知する仕組み。
簡単なマルチスレッド: 複数の処理を並行して実行するための機能。
タイマー: 特定の時間間隔で処理を実行するための機能。
ロック: 複数のスレッドが同時にデータにアクセスするのを防ぐための機能。
例外処理: エラーが発生した場合に、プログラムが異常終了しないようにするための機能。

アプリケーションキット



ユーザーインターフェースを構築するためのアプリケーションキットには、以下の要素が含まれます。

ユーザインタフェースの要素: テーブルビュー、ブラウザ、マトリックス、スクロールビューなどのUI部品。
グラフィックス: WYSIWYG(見たまま編集)、ポストスクリプト風グラフィックス、ベジェ曲線、イメージ処理、グラフィカル・コンテキストなどの描画機能。
カラー管理: 較正色、物理色(CMYK,RGB,HSB)、グレイと名前付きカラー表現、アルファブレンディングなどの色に関する機能。
テキスト: 多様なテキストフォーマット、アタッチメント、レイアウトマネージャ、タイプセッター、ルール、段落スタイル、フォント管理、スペルチェックなどのテキスト処理機能。
文書管理: 文書を作成、編集、保存するための機能。
印刷機能: 印刷操作、印刷パネル、ページレイアウトなどの印刷に関する機能。
ヘルプ管理: アプリケーションのヘルプを表示するための機能。
ペーストボード: クリップボードのような機能で、データのコピー&ペーストを実現。
スペルチェッカー: テキストのスペルミスを検出する機能。
アプリケーションのワークスペース束縛: アプリケーションの動作環境を管理する機能。
ドラッグ・アンド・ドロップ操作: アプリケーション間でオブジェクトを移動する機能。
アプリケーション間の共通サービス: アプリケーション間で共有できるサービスを提供する機能。



脚注



GNUstepは、その起源であるOPENSTEPの設計思想を色濃く反映しており、Objective-Cを用いた開発に興味がある開発者にとって貴重な選択肢となります。

関連項目



[プロパティリスト]
NEXTSTEP
Darwin
OPENSTEP
Window Maker
Étoilé

外部リンク



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

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。