オブジェクト指向の原点

NEXT COMPUTERのこと

オブジェクト指向を画面アプリケーションプログラムの基礎

概念と考えてそれは何なるか。

オブジェクト(モノ)の集まりで画面を含めたロジックが作成

される。

NeXTcomputerから始まる。そのように考えた。

BYTE誌 1988年11月 表紙

 



 自分の周囲にも Macの信奉者、そこまでない人でも Mac推しはいた。中には熱狂的な人もいた。

それに過去、現在を通して Mac 系のライターがいろんなことを書いているので別に自分が何を書く理由もない。

 どうしても気になることがある。まず前提として

結果としてスティーヴ・ジョブズが正しかった、たまたま技術が追いついた。

好意と悪意そのように両極端にとらえず神格化せずなるべく公平にしたい。

 

神のような着眼点とかたまたま偶然など、自分の考えはそうでないと思っている。

アイデアを形にした。自分はそう思う。

そのために技術がいる。その当時の技術でできること。

その当時の技術でできることでも、すごく頑張れば出来ること、出来ないこと。

悪評があるのはどんなに頑張ってもできないことで無理を通そうとしたためだろうか。

 

NeXT STEP と NeXT Computer

日本だけだろうか。この技術を書く人と言う人は寡ない。

意識して探せばあるだろうけど目につくところにはない。

あるのは、ほとんど 創業時から Macintosh 発売までのアップル社内の言動、そしてピクサー社のこと。

アップル社に戻ってしたこと。それも良いことだけ。NeXT のことはまるで無視されている感じだ。

 

世界で最初に実装した。もしくは発売した。

世界で最初でなくても、実質積極的に採用して現在の技術に影響があったこと。

ざっと思いつくものを書き出してみる。

 

Interface Builder / Project Builder 

これは現在の画面デザインとイベント処理になる。

今、現在では開発環境はすべてこのスタイルだ。

 

Display PostScript 

これは現在の PDF になる。PDF は 電子文書ファイル の代名詞みたいになっている。

 

インターネットのブラウザ

Mosaic は、NeXTComputer で最初に実装されてCERNで使われた。

最初のブラウザに関することを探しても CERN のことが記事として 100 あれば NeXTComputer は3つぐらい。

CERN の関係者が、スティーヴ・ジョブズに相談してアイデアが閃いた。

 

グラフィックカード

UI 画面のためグラフィックに負荷がかかる対応。

MacintoshⅡ がそうだったので、これは違うけど現在の nvidia などグラフィックカードになっていく。

 

CD-ROM とレーザープリンター

CD-ROM は最初の実装かどうか不明。

NeXTComputer が採用したことでPCの標準装備として DVD-ROM まで続いている。

ウェブスター辞典を標準でバンドルしている。

スティーヴ・ジョブズの知識欲の旺盛さがわかる。

インターネットのない時代で豊富な知識を入手する手段で辞書を始め書籍など電子化する。

文字情報を電子化することでいつでも見ることができる。

日本であれば広辞苑といった感じだろう。

(5.25インチの光磁気ディスク)

 

レーザープリンター

プリンター本体にハードディスクを装着して文字フォントをインストールする。

そのようにすることで日本語をはじめとしてたくさんの言語を表現できる。

ハードディスクなのでフォントを追加できる。多言語化に対応できる。

 

高解像度のグラフィック、現在の 3D アニメーションにつながること。

NeXT Computer ではできなかった。後のピクサーで実現した。

ただし、最初は Sun だったと思う。そして SGI を使い始めたとおもう。

OPEN GL になり現在では当たり前のように利用されるグラフィックの API、例としてポリゴンなど。

この証拠になるのは NeXT STE P に標準の3Dツールがあったからだ。

 

そしてキャノンの存在

ハードウェアに関してはキャノンの技術者が頑張ったこと。

たぶん大変だったことだろう。しかし、思わぬ副産物は日本語の対応。

日本語の対応をすれば世界中でPC(コンピュータ)が使えることと同じになる。

英語であればそのまま、英語でなくてもヨーロッパ諸国は母国語でなくても英語のOSで済む。

英語と日本語の差は壁みたいなもので、それを超えるブレークスルーになっている。

Macintosh の日本語化は、日本だけの対応で専用PCだったといえる。韓国であれば韓国語対応の Mac という感じになる。

グローバルで文字を使えるわけでない。

UNIX でようやく多言語化のプロジェクトは出てきたころで、これは後の MS-Windows でやっと世界中で

パソコンが使えるようになったことを思えば最初から多言語対応を考えていた。もちろんこの発想はコンピュータ開発の

関係者であれば誰でも考える。

そのためのグラフィックカードの装備であるけど発想があって何もしないのでなく、それが必要だ。

だから製品価格が高価になり売れない商品になると周囲から言われても押し通してきた。

 

いろいろ書いたけど、NeXTComputer の偉業を思う。

2023/03/25

iPhone

iPhone に近い端末のアイデアはかなり早い時期からあった思う。

アップルを退社してから数年後だから直接は関係していないだろうけど

自身の関係していた組織から市場にでてきた。確証はない。

Apple Newton と MagicCap

いずれも動作が遅くて使い物にならない。

それらを横目で見ていて準備はしている。

新しいことに何でも飛びつくのでなく、自分のアイデアが実現できると踏んだときに行動する。

iPhone は、APPLE 社に戻った後のことだけど NeXT Software 時代には各種 PDA はあったので

仮に戻らなければ別のかたちで世の中に出てきたことだろう。

iPhone はそんな感じがする。

 

Objective-C

チーム内で議論してこの言語を選択した、と何かの記事に書いてあった。

いくつかの選択のなかには、C 言語、Pascal 言語はあったと思う。

オブジェクト指向という目的は、画面の部品をクラスにして、パーツにすることで動的に画面を作成する。

 

それは、見やすく、使いやすく操作性を向上させるべくゼロからコーディングするものでなくあらかじめ用意しておく。

画面のサイズ・文字入力制限はプロパティとして外だしにする。

この機能をプログラミング言語として実現できるのは、Objective-C だけだった。

C++ のクラスは、オブジェクト指向を実現する要件を満たさない。

最初のバージョンは、融通が効かない堅い仕様。

実際有用な C++ のコンパイラが出てきたのは NeXT Computer の後になる。

間違いなく Interface Builder / Project Builder に影響されていて真似と言っても良い。

クラスをボタンとかテキストボックスのように画面の部品にするアイデアは秀逸だ。

ひょっとするとこれは世の中に出てこなかったかもしれない。

スティーヴ・ジョブズのセンスとおもう。

Cocoa でJava 対応を経て現在の Swift になっていく。

Java を XCode 対応 Java としてみると、Apple 社はオリジナルのプログラミング言語で開発している。

他社製品依存しないこと、こういうところにもこだわりがあるのだなあ。

 

LotusImprov

これはロータス社が売り込んできてスティーヴ・ジョブズが悦んだ。

当時の大手数社のソフトウェア企業にアプリケーションの開発を依頼して

ロータス社が応えてくれた。そのような記事だったと思う。

どのような製品だったのかは、Excel で分析をするアプリケーションみたいなものだ。

それは化学薬品の成分だったり社会統計学だったり、人文科学から工学・理系まで汎用性がある。

機械学習の流れをつくった祖先の1つかもしれない。

高度なプログラミングの技術がなくても、博士課程の研究のようなものでなくユーザライクに分析ができること。

Excel で多変量解析とかできるぐらいだ。分析関数を用意することで利用者に計算処理を負担させることなく、

求めたいことに対して結果を得る。

記憶が曖昧だけど、この商品は評判がよくて現在の Excel に引き継がれていく。

 

 DSP

満足のいくアプリケーションの提供は少なかったが、有用でこの機種でないとできない数少ない機能が DSP になる。

人間の自然会話に対応することを目的として実装された。

現在のパソコンを使った音声会話( Chat )の原点と考える。自分はそう思う。

 根拠は、DSP を標準で内蔵することで CD-ROM と同じ音質にする。ヒトが聞く・話す、このことが普通にできる。

 実際に NeXT Computer 本体で電話が使えるようにしている。

当時の電話はアナログ回線なのでデジタルとアナログ変換を中継しないと使えなかったはずなので

電話が使えるというのは正確でない。Fax 機能はあり使えていたので電話もそうだったかもしれない。

NeXT Computer の音声処理ソフトウェアは評価が高くて音声以外にもアナログ・デジタルの研究利用では有用なものだった。

この延長が現在の Chat アプリと思う。

当時はパソコンで音声処理、自然会話の実現とか考えが思いついても標準で DSP を実装するメーカーはなかった。

 

これと同じことをしたのが、IBM THINKPAD になる。 私自身、1997 年ごろ購入して、その本体に DSP が内蔵されていた。

サンプルがあり英語であれば違和感がない。本当にヒトの声で聞こえる。音声入力すれば聞き取ってくれる。

人の声に反応して in/out の動作をさせる。

積和演算といえば現在のグラフィックカードと主に Chat を目的とした半導体チップのこともあるけど、このことは別にいいか。

コンピュータ本体に DSP を内蔵させる、この発想はいまでも感心する。

 

拡張性

Macitosh のことを知っている人であれば、違和感を感じることだろうけど

Next Computer は最初から拡張性ありきサードパーティまかせだった。

同時代のWSは逆にクローズなスタイル、流行だったと言ってもよい。

ピザボックスタイプ、ランチボックスタイプなど、薄く、コンパクトにして

拡張スロットはない。あっても1~2枚程度。まるで Macintosh の踏襲、真逆な開発の方向性だ。

WSは数値計算するものでコンピュータの用途はそれだけで余計なことはしない、こういう理由だったのだろうか。

内蔵している数値計算プロセッサよりも性能が良いのが出てくれば、そのために拡張性がある。拡張というよりオプションの1つ。

NeXT Computer は 4 枚から 5 枚の拡張カードを挿入できるセールス・ポイントであったけど

MPU が 68030 でNu-bus 仕様の制約もある。

現実は製品に対応した拡張カードを製作した会社は少なかった。

拡張カードは過去 WindowsPC もそうだった。現在でも GPU を多段に装備して拡張していく。

 

NeXT STEP

UNIX にすることで、

 上位層  NeXTSTEP

 下位層  UNIX

役割を明確化にすることでシステムをわかりやすくできるメリットがある。

NeXT STEP はアプリケーションの実行を保証すればよい。

これは、Android と Linux の関係と同じ。

 

OPEN STEP

この要求に応えたのが HP-UX で、Sun と IBM はショー、デモ程度のものはあったかもしれないが制式採用していない。

HP-UX  版は現在でもネットオークションに出品されているぐらいだ。

NeXTSTEPはインテル版 

OPENSTEPはWindowsNT版(WindowsNTのカーネルに実装)

 

オープンの考えは、NeXT 社時代だけになる。

Apple に戻った後は一転して元のクローズ、元々のスタイルに戻る。

おそらくこれは、自社の利益追求を優先させるため以外にも商品価値の維持。

市場に出すには品質とサービスは保証しなければならない。自社でコントロールできなければ  Apple 本体も引きずられてしまう。

ユーザのことを考えてのことだろう。

 

上記に書いたことが、スティーヴ・ジョブズが示した1990 年代のコンピュータ。

スティーヴ・ジョブズのアイデアをかたちにした技術者もすごいとおもう。

2023/04/04