OPENSTEP

**OPENSTEP**（オープンステップ）は、オペレーティングシステム、ソフトウェアの一仕様、またそれに準拠したNeXT Softwareの製品名でもある。

先進的な設計から非常に評価の高かったNEXTSTEPのうち、Machカーネル (XNU) と切り離した上位フレームワーク層を整理してFoundation/AppKitを取り出したもので、公開仕様として1994年9月に発表されたものはOPENSTEP Enterprise（サン・マイクロシステムズとの共同開発）と呼ばれ、稼動実績としては Solaris、HP-UX、Windows NT上のものがあった。また従来のNEXTSTEPはバージョンアップされOPENSTEP for Machとしてリリースされた。これらはソースコードレベルのクロスプラットフォームを実現しており、基本的に再コンパイルのみでソフトウェアの移植が可能である。

現在のmacOSやiOSのCocoaやWindows版WebObjectsに付属する開発実行環境はOPENSTEP直系のフレームワークである。他に有志により一から開発されたクローンのGNUstepもある。これはX11、Windows NTで動作する。

他にも、例えばJavaのクラス設計にはOPENSTEPの強い影響があるといわれる。このように普及こそしなかったものの周囲に与えた影響は小さくない。

## 歴史
サン・マイクロシステムズのワークステーションは、もともと比較的低レベルでプログラムされており、基盤となるUnix オペレーティング システムとSunViewウィンドウ システム ツールキット、およびそれらのインターフェイス上に構築されたライブラリを直接呼び出していた。このため、単純なプロジェクトでもプログラミングが複雑であった。1980年代半ばに、オブジェクト指向プログラミング モデルを使用してこの問題に対処する試みが Sun のNeWS ウィンドウ システムで行われたが、複雑なアプリケーション プログラミング インターフェイス(API) と全体的なパフォーマンスの低さが組み合わさってしまい、実際に使用されることはほとんどなく、最終的にこのシステムは廃止された。

その後、サンは他の選択肢を探し始めた。Taligentはオペレーティング システムおよびオブジェクト マーケットの競合相手とみなされており、マイクロソフト のCairoプロジェクト は、どちらもまだ製品がリリースされていないにもかかわらず、検討対象となっていた。Taligent の理論上の新しさは、 古いが成熟し、商業的に確立されたプラットフォームであるNeXTとよく比較された。サンは 予備としてTaligent との会議を開催した後、NeXTと提携してオブジェクト アプリケーション フレームワークである OpenStep を構築することを決定した。これは「 Taligentおよび Cairo に対する先制攻撃」であった。Macintosh および NeXTStep の創立時の設計者であるバド・トリブル は、この決定を主導するために サンのオブジェクト製品担当副社長になった。1993 年の提携には、サンから NeXT への 1,000 万ドルの投資が含まれていた。この取引は「過去 4 年間で NeXT コミュニティにとって初めての純粋な朗報」と評された。

OpenStepの基本的なコンセプトは、NeXTSTEPのオブジェクト レイヤーの縮小版を採用し、Sun のSolarisオペレーティングシステム、具体的にはSPARCベースのハードウェア上の Solaris で実行できるように適応させることであった。OpenStep の取り組みのほとんどは、Mach または NeXT 固有のハードウェアに依存する NeXTSTEP の部分を取り除くことであった。その結果、主にDisplay PostScript、Objective-Cランタイムとコンパイラ、および NeXTSTEP Objective-C ライブラリの大部分で構成される小規模なシステムが生まれた。しかしながら基本的なオペレーティング システム、つまり低レベルの表示システムは含まれていなかった。

当時スティーブ・ジョブズは「我々は現在リードしているが、競争はまだ終わっていない。（1996年には）Cairoはすぐ後ろに迫っているが、Taligentははるかに遅れをとるだろう」と語った。サンのCEOであるスコット・マクネリは「我々は保険をかけていない。我々は1つの会社、1つのアーキテクチャーでいくという確固たる決断を下した。TaligentがHPと契約してトロフィー・ワイフを得たようなものではない」と語った。

APIの最初のドラフトは、1994年半ばにNeXTによって公開された。その年の後半に、NeXTはOpenStep準拠のNeXTSTEPバージョンをOPENSTEPとしてリリースし、Sun SPARCシステムだけでなく、いくつかの自社プラットフォームでサポートされた。NeXTは、OpenStepの仕様をオブジェクト標準化団体に提出した。 1994年9月に公開された公式のOpenStep APIは、APIをFoundationとApplication Kitに分割した最初のものであり、また「NS」プレフィックスを使用した最初のものだった。 NeXTSTEPの初期のバージョンは「NX」プレフィックスを使用し、低レベルのデータ構造に標準のUnix libcタイプに依存したApplication Kitのみを含んでいた。 

OPENSTEPは、1997年に同社がApple Computerと合併するまで、NeXTの主力オペレーティングシステム製品であり続けた。その後、OPENSTEPをベースに既存のClassic Mac OSの技術と統合され、Mac OS Xが生まれた。iPhoneとiPadのiOSも広義ではOPENSTEPの後継であるが、タッチデバイスを対象としている。

Sun は当初、オブジェクト指向の CORBA パイプラインを補完するオブジェクト指向のユーザー インターフェイス ツールキットを提供することで、 Sun のCORBA準拠のオブジェクト システムであるSolaris NEO (旧称 Project DOE) を補完する目的で OpenStep 環境を採用した。 この移植では、OpenStep AppKit を Sun X11サーバーの Display PostScript 層に統合し、AppKit をマルチスレッド コードに対応させ (Project DOE は本質的に高度にマルチスレッド化されていたため)、Mach ポートの動作をシミュレートする Solaris デーモンを実装、さらには NeXT の ObjC ランタイムを使用してObjective-Cをサポートするように SunPro C++ コンパイラを拡張し、NeXTSTEP のルック アンド フィールを可能な限り実装する X11ウィンドウ マネージャーを作成した上で、Project Builder や Interface Builder などの NeXT 開発ツールを SunPro コンパイラに統合した。完全なエンドユーザー環境を提供するために、Sun は Mail.app、Preview.app、Edit.app、Workspace Manager、Dock など、いくつかのエンドユーザー アプリケーションの NeXTSTEP-3.3 バージョンも移植した。

製品の OpenStep と CORBA 部分は後に分割され、NEO は 1995 年後半に OpenStep 環境なしでリリースされた。1996 年 3 月、Sun は NEO とJava を統合する製品である Joe を発表した。Sun は 1996 年 7 月 22 日に Solaris 用の OpenStep 環境のベータ リリースを出荷し、 1996 年 8 月に非商用目的で無料でダウンロードできるようにし、1996 年 9 月に販売を開始した。OpenStep/Solaris は SPARC アーキテクチャ専用に出荷された。

## 解説
OpenStep は、NeXTSTEP とさまざまな点で異なる。

* NeXTSTEP はオペレーティング システムであるが、OpenStep は API である。
* NeXTSTEP とは異なり、OpenStep ではMach カーネルを必要としない。
* NeXTSTEP の各バージョンには特定のエンディアンがある。たとえば、Motorola 68Kプロセッサの場合はビッグ エンディアン、 x86プロセッサの場合はリトルエンディアンとった形となる。OpenStep は「エンディアン フリー」である。
* OpenStep では、新しいクラスとメモリ管理機能が導入されている。

OpenStep API 仕様では、3 つの主要コンポーネントが定義されている。Foundation Kit (ソフトウェア フレームワーク)、Application Kit ( GUIおよびグラフィックス フロントエンド)、Display PostScript (2D グラフィックス システム (画面上にウィンドウやその他のグラフィックスを描画するため)) 。

## OpenStep の構築
OpenStep の標準化により、OPENSTEP プラットフォームで提供されるいくつかの新しいライブラリ パッケージも作成できるようになった。オペレーティング システム全体とは異なり、これらのパッケージは実質的にすべてのオペレーティング システムでスタンドアロンで実行できるように設計されている。その目的は、 CORBAやその他のシステム を使用するのではなく、異なるプラットフォームで実行されるネットワーク全体のアプリケーションの基盤として OpenStep コードを使用することであった。

これらのパッケージの中で最も重要なのは、Portable Distributed Objects (PDO) で、PDO は、本質的には OpenStep のさらに「簡素化された」バージョンであり、Foundation Kit テクノロジのみを含み、新しいライブラリと組み合わされて、非常に少ないコードでリモート呼び出しを提供する。アプリケーションが実行されるオペレーティング システムを定義する OpenStep とは異なり、PDO ではライブラリがアプリケーション自体にコンパイルされ、特定のプラットフォーム用のスタンドアロンの「ネイティブ」アプリケーションが作成される。PDO は簡単に移植できるほど小さく、すべての主要なサーバー ベンダー向けのバージョンがリリースされた。

1990 年代半ば、NeXT の社員は、さまざまな CORBA マガジンの記事に対するソリューションを、数行のコードで記述するようになった。一方、元の記事は数ページにわたっていた。PDO を使用するには、相当な量のサポート コード (Objective-C とライブラリ) のインストールが必要だったが、それでも PDO アプリケーションは、同様の CORBA ソリューションよりもかなり小さく、通常は約半分から 3 分の 1 のサイズであった。

同様のD'OLE は同じタイプのサービスを提供したが、結果として得られるオブジェクトをCOMオブジェクトとして提供し、プログラマーが高性能なプラットフォーム上で実行され、Microsoft Windowsアプリケーションから呼び出される COM サービスを作成できるようにした。たとえば、D'OLE を使用して高性能な財務モデリング アプリケーションを開発し、それをMicrosoft Excel内から直接呼び出すことができるといったものである。D'OLE が最初にリリースされたとき、OLE 自体は単一のマシン上で実行されているアプリケーション間でのみ通信していた。PDO により、NeXT は、Microsoft 自身がこの機能 (DCOM) を実装する前に、ネットワークを介して Excel が他の Microsoft アプリケーションと通信することを実証することができた。

OpenStep で開発されたもう 1 つのパッケージは、オブジェクト関係マッピング製品であるEnterprise Objects Framework (EOF)である。

## 実装
OpenStepは以下のような形で様々な実装が行われた。

* OPENSTEP for Mach
* Solaris OpenStep
* OPENSTEP Enterprise
* Rhapsody, Mac OS X Server 1.0
* Darwin, Mac OS X 10.0 とそれ以降
* GNUstep

## 参考、出典