OPENSTEP(オープンステップ)とは
OPENSTEPは、
オペレーティングシステム、
ソフトウェアの仕様、およびNeXT Softwareが開発した製品の名称です。元々、先進的な設計で評価の高かったNEXTSTEPから、
Machカーネルを分離し、上位のフレームワーク層を整理して生まれたものです。特に、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年代半ばには、オブジェクト指向プログラミングモデルでこの問題に対処しようとしましたが、APIの複雑さやパフォーマンスの低さから、実際にはほとんど使用されず廃止されました。
その後、サンは代替案を模索し始め、
Taligentや
マイクロソフトのCairoプロジェクトを検討しました。しかし、
Taligentの理論的な新しさは、成熟したNeXTのプラットフォームと比較されることが多く、サンはNeXTと提携してOpenStepを開発することを決定しました。この決定は、「
TaligentとCairoに対する先制攻撃」と見なされました。1993年の提携には、サンからNeXTへの1,000万ドルの投資が含まれていました。
OpenStepの基本的なコンセプトは、NeXTSTEPのオブジェクトレイヤーを縮小し、Sunの
Solarisオペレーティングシステムで実行できるように適応させることでした。OpenStepの取り組みの大部分は、
MachやNeXT固有のハードウェアに依存するNeXTSTEPの部分を取り除くことでした。その結果、Display PostScript、
Objective-Cランタイムと
コンパイラ、およびNeXTSTEP
Objective-Cライブラリで構成される小規模なシステムが生まれました。しかし、基本的な
オペレーティングシステムや低レベルの表示システムは含まれていませんでした。
1994年半ばに、NeXTはAPIの最初のドラフトを公開し、その年の後半には、OpenStep準拠のNeXTSTEPバージョンをOPENSTEPとしてリリースしました。また、OpenStepの仕様をオブジェクト標準化団体に提出しました。1994年9月に公開された公式のOpenStep APIは、APIをFoundationとApplication Kitに分割した最初のものであり、「NS」プレフィックスの使用もここから始まりました。一方、初期のNeXTSTEPは「NX」プレフィックスを使用し、低レベルのデータ構造に標準のUnix libcタイプに依存したApplication Kitのみを含んでいました。
OPENSTEPは、1997年にNeXTがApple Computerと合併するまで、NeXTの主力製品であり続けました。その後、OPENSTEPは既存の
Classic Mac OSの技術と統合され、Mac OS Xが誕生しました。iPhoneとiPadのiOSもOPENSTEPの後継ですが、タッチデバイスを対象としています。
当初、サンはOpenStep環境を、CORBA準拠のオブジェクトシステムである
Solaris NEOを補完するために採用しました。この移植では、OpenStep AppKitをSun X11サーバーのDisplay PostScript層に統合し、AppKitをマルチスレッドコードに対応させ、
Machポートの動作をシミュレートする
Solarisデーモンを実装しました。また、NeXTのObjCランタイムを使用して
Objective-CをサポートするようにSunPro C++
コンパイラを拡張し、NeXTSTEPのルックアンドフィールを可能な限り実装するX11ウィンドウマネージャーを作成しました。さらに、Project BuilderやInterface Builderなどの開発ツールをSunPro
コンパイラに統合しました。完全なエンドユーザー環境を提供するために、サンはMail.app、Preview.app、Edit.app、Workspace Manager、Dockなど、いくつかのエンドユーザーアプリケーションのNeXTSTEP-3.3バージョンも移植しました。
製品のOpenStepとCORBA部分は後に分割され、NEOは1995年後半にOpenStep環境なしでリリースされました。1996年3月、サンはNEOと
Javaを統合する製品であるJoeを発表しました。サンは1996年7月22日に
Solaris用のOpenStep環境のベータリリースを出荷し、1996年8月に非商用目的で無料でダウンロードできるようにし、1996年9月に販売を開始しました。OpenStep/
Solarisは
SPARCアーキテクチャ専用に出荷されました。
解説
OpenStepは、NeXTSTEPといくつかの点で異なります。まず、NeXTSTEPは
オペレーティングシステムであるのに対し、OpenStepはAPIです。また、NeXTSTEPとは異なり、OpenStepでは
Machカーネルは必須ではありません。さらに、NeXTSTEPの各バージョンには特定の
エンディアンがありますが、OpenStepは
エンディアンフリーです。OpenStepでは、新しいクラスと
メモリ管理機能が導入されています。
OpenStep API仕様では、Foundation Kit、Application Kit、Display PostScriptの3つの主要コンポーネントが定義されています。
OpenStepの構築
OpenStepの標準化により、OPENSTEPプラットフォームで提供されるいくつかの新しい
ライブラリパッケージも作成できるようになりました。これらのパッケージは、実質的にすべての
オペレーティングシステムでスタンドアロンで実行できるように設計されており、異なるプラットフォームで実行されるネットワーク全体のアプリケーションの基盤として使用されることを目的としています。
これらのパッケージの中で最も重要なのは、Portable Distributed Objects (PDO)です。PDOはOpenStepの「簡素化された」バージョンであり、Foundation Kitテクノロジーのみを含み、新しい
ライブラリと組み合わせて、非常に少ないコードでリモート呼び出しを提供します。PDOは、アプリケーションが実行される
オペレーティングシステムを定義するOpenStepとは異なり、
ライブラリがアプリケーション自体にコンパイルされ、特定のプラットフォーム用のスタンドアロンの「ネイティブ」アプリケーションを作成します。
また、同様のD'OLEは、COMオブジェクトとしてサービスを提供し、プログラマーがMicrosoft Windowsアプリケーションから呼び出されるCOMサービスを作成できるようにしました。たとえば、D'OLEを使用して高性能な財務モデリングアプリケーションを開発し、それをMicrosoft Excel内から直接呼び出すことができます。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