1998.05 NEXTSTEP と OPENSTEP

わーくすてーしょんのあるくらし (5)

1998-05 大橋克洋

< 1998.04 衝動買いの液晶デイスプレイ | 1998.06 「エージェント」機能に挑戦 >

現在開発中の第三世代 WINE(電子カルテ)は OPENSTEP で動き ますが、仕事に使っているものは NEXTSTEP で開発された第二世代 WINE ですので、診療室のマシーンは今だに NEXTSTEP で動いてい ます。一方、開発用のマシーンは OPENSTEP で、これからアプリ ケーションは全て OPENSTEP で開発することにしています。

両者の違いはあるといえばあるし、エンドユーザにとっては「ど こが違ったの?」というほど違いは見えません。しかし私のように アプリケーションを開発するものにとっては、大きな違いがあるの です。 今月は、これからの Apple の新しい OS となる Rhapsody の基 盤 OPENSTEP について、ちょっと解説的なお話をしてみることにし ましょう。

NEXTSTEP は Apple に吸収される前の NeXT 社が開発したもの で、Mach OS(Mac-OSではありません。マークと発音し、カーネギー メロン大学で開発された OS で、見かけ上はまったく UNIX そのも のです)の上で動きます。

「NEXTSTEP の特徴を一言でいえばUNIX の上で動く Mac」という のが、私のよく使う表現です。これからわかるように NEXTSTEP は UNIX というマルチタスクで動くパワフルな OS の上に Mac の使 いやすい GUI をかぶせたものです。そのような意味では NEXTSTEP も OPENSTEP も違いはありません。

NEXTSTEP から進化した OPENSTEP は、名前が示すように色々な CPU や OS で動くよう大幅に改良されています。このため OS と API(Application Programming Interface)部分が独立した構成に なっているのです。 NEXTSTEP は Mach の上でしか動きませんでし たが、OPENSTEP は従来通り Mach で動くものの他に Solaris や Win95 の上で動くものも提供されたということです(昔からの NeXT ユーザの殆どは、やはり Mach 版の OPENSTEP を好むと思い ます)。

Apple の新しいOS となるRhapsody は OPENSTEP とほとんど同じ ものです。 Rhapsody では OS に Mach が採用されましたので、 PowerPC という CPU で Mach OS を動かし、その上に OPENSTEP 互 換の API とMac-OS も載るということになります。

これはすなわち OPENSTEP で動くアプリケーションをひとつ開発 すれば、それは Mach, Solaris, Windows95, WindowsNT など色々 なOS の上で動くということです(コンパイルしなおす必要はある かも知れませんが)。このように本当の意味で、どんな CPU や OS でも動く「マルチプラットフォーム」化が達成されたシステム は極めて少ないと思います。

○ Rhapsody への期待

従来からの Mac ユーザの反発を恐れてか、Apple 社は最近 Rhapsody をほとんど表面に出さなくなりました(私は Apple II の頃からの Apple ユーザですが、今の Mac ユーザが、なぜより良 いものに反発するのかわかりません。食わず嫌いは自分を狭い世界 に閉じ込めてしまうだけですのに)。

しかし、開発は予定以上に順調に進んでいるようで、場合によっ てはこのエッセイを皆さんがお読みになる頃には一般向け初版リ リースのアナウンスがあるかも知れません。 Rhapsody がリリースされても、メインはあくまでも従来からの Mac-OS で、Rhapsodyは WindowsNT のようにサーバなどに向け た、よりハイグレードのシステムという位置付けになるようです。 私はそれで構わないと思っていますが、一方で「用途によっては Mac-OS より Rhapsody の方が素人にもずっと使いやすいのにな あー」とも思っています。

Rhapsody の PowerPC 版ではいわゆる YellowBox と呼ばれる OPENSTEP と BlueBox と呼ばれる Mac-OS が平行して動きます。 「欲しいものは自分で作ってしまえ」主義の私にとっても、やはり 従来からの Mac のアプリケーションが一緒に使えるのはとても嬉 しく、大変楽しみにしています。

「Rhapsody に載る Mac-OS は Mac のエミュレータではなく、 Mac-OS そのものだ」というのが Apple の開発者の見解だそうで す。それだけにバクダンもでるべきところでは、しっかりでるそう ですが、驚くべきことには Rhapsody 版の Mac-OS の方が、本来の Mac-OSよりずっと処理速度が速いということです。ベースが Mach のため I/O 管理などの処理が速いからだそうです。 PowerPC は Pentium に大幅に水を開けられているように見えま すが、Rhapsody を走らせてみるとかなり速いので、いかに Mac- OS が遅かったかということでもあるようです。互換を守るために 古いアーキテクチュアを引きづるシステムの悲哀でしょうか。

○ オブジェクト指向

「NEXTSTEP と OPENSTEP の違いは、エンドユーザにとって余り 見えない。しかし、アプリケーション開発の上では大きな違いがあ る」と冒頭に書きました。それはどこでしょうか。色々な OS と接 続してもアプリケーションがまったく同じに動くようにするため、 OPENSTEP の技術者たちは大変うまい仕掛けを組み込みました。そ れは OS とのインタフェース部分のオブジェクト化です。

NEXTSTEP は市販のオブジェクト指向のシステムの中でも、もっ とも長い実績を持つ安定したシステムという定評があります。 OPENSTEP ではさらにオブジェクト化が進み、そのような意味で とてもエレガントなシステムになったというのが私の印象です。そ れまでもオブジェクト指向ではあったのですが、OPENSTEP になっ て「なーるほど、これぞオブジェクト指向」という感激を今さらな がらに味わせてもらいました。

さてここで「オブジェクト指向」という、わかったようでわから ない概念の説明を少ししておきましょう(一通りやれば一冊の本に なってしまいますので、ほんのサワリのところだけです)。 オブジェクトとは「少なくも自分の担当については、他からいち いち指示されなくても処理できる知識をもったひとつの個体」と考 えるとよいでしょう。

総合病院の院長が院内を見回って、トイレが汚れているのに気が ついたとします。私のところのような小施設では、院長がちょっと 掃除してしまってもよいのですが、普通はそうはしませんね。 担当の長に「トイレが汚いぞ。奇麗にしておくように」と伝えま す。その指令は、伝言ゲームのように何人かのスタッフを経て、掃 除のおばさんに伝わります。おばさんは掃除の仕方を知っているの で、ちゃんと責務を果たします。

これがオブジェクト指向のひとつの例です。それぞれのスタッフ がオブジェクトですので、スタッフが別の人間にすげ変わっても何 も問題はありませんし、院長がトイレの掃除の仕方を知っている必 要もありません。スタッフそれぞれが持つ専門的なノウハウは外か ら見えなくても良いのです(これをカプセル化といい、オブジェク ト指向の特徴のひとつです)。

○ プログラム部品化のためのフレームワーク

ここからはプログラミングにちょっと踏み込んだ話になります。 ハハーンそんなものかと思って頂ければよいかと思います。 今までの説明だけですと、従来からの C や BASIC など手続型言 語の関数と余り変わらないように見えます。しかし、オブジェクト はそれぞれが知識(例えば掃除の手順とか、掃除道具のリストな ど)を自分の中に持っており、プログラム本体や他のモジュールに 依存しない、もっと独立したモジュールとして機能するようになっ ているところが大きな違いのひとつです。

オブジェクトをなるべく他に依存せず独立して機能するように 作っておけば、部品として再利用できるので、プログラミングの再 生産性が高まります。これを Software-IC などと呼びます。医療 スタッフも同じですね。いちいち上司の指示を仰がなくても、しっ かり自分の責務を果たせるようにトレーニングされたスタッフは、 どこへ行っても食いはぐれることがありません。また、このような スタッフを手に入れた病院側は、即戦力のメリットと質の向上とい うメリットを得られます(ベトナム帰りのベテランを集めた傭兵部 隊の映画を TV でやっていました。これも Software-IC の一例か も知れませんね。戦争と平和でまったく逆の例ですが)。

OPENSTEP ではオブジェクトの部品化をさらに進めるため framework という概念が前面に押しだされました。アプリケーショ ンの部品化のための AppKit.framework や、分散データベースにア クセスするための EOAccess.framework その他いろいろなものが機 能別にまとまったライブラリーになっています。

アプリケーションは、起動してから自分に必要なこれらのライブ ラリーを組み込みます(ダイナミック・リンク)ので、上手に framework を使ったアプリケーションの実体はかなりコンパクトな ものにできます。虫がとれたしっかりした frameworkを使えば新規 アプリケーションの開発もかなり短期間でできることになります。 中でも私が感激したのは Foundation.framework です。これは文 字列やファイルの扱いなどの、画面には現れない OS や I/O など とやり取りをする裏方の部分です。すなわち、色々な OS で使うに は、この framework だけを自分の使う OS 用にセットしてやれば よいというわけです(基本的には、ユーザが関知する必要はありま せん)。

さて、これを病院組織に例えるとどうなるのでしょう。臨床検査 ・給食・清掃・警備などの外注に当たるのでしょうか。専門の組織 でのしっかりした技術・質とコストに裏打ちされたサービスを利用 して、病院側の負担を軽減するというような。 冒頭に書いた OPENSTEP になって私が感激した部分は、このよう に実にエレガントに作られた仕組みなのです。 今、私の電子カルテ WINE も WINE 用フレームワークを用意し、 さらに色々なツールとの互換性を高め、開発効率を上げようとして います。

< 1998.04 衝動買いの液晶デイスプレイ | 1998.06 「エージェント」機能に挑戦 >