1992.02 いよいよ NeXT が主役

ドクター、ワークステーションと暮らす (7)

1992-02 大橋克洋

< 1991.12 UNIX と Macintosh OS の共通点 | 1993.03 NeXus Meeting レポート >

最近ようやくNeXTの環境が整ってきたので、メインのマシーンはsunから完 全にNeXTへと移行した。私にとって欠かすことのできない日本語TeXとNemacs もNeXTの上で動くようになった。先日、Mac の上で PageMaker という DTPソ フトを使ってみたが、絵の貼り込みさえなければ出力されたレイアウトは格段 に TeX の方が美しい。TeX でも絵を入れることができないではないが、かな り面倒なのが難点である。文字だけのものであれば迷わず TeX を使うことに しているが、小さなものであれば NeXT 標準装備のマルチフォントエデイター 「Edit」も便利である。

従来メインに使っていたSPARCstation1+は完全にサーバマシーンと化して CRTの電源を落し、ネットワークの彼方で影の力となってファイル・メール・ FEPをサービスしてくれている。

SPARCを使うにはNeXTからremote loginすれば済むし、必要なデイレクトリー はNFS(Network File System)でNeXTにリンクしているので、あたかもNeXT 自 身のデイスクであるかのように使える。今まで sun で使ってきたTeX の文章 も NeXT 側からNeXTprinter へ出力している。

これがネットワークの強力なところで、単純なテキストファイルのような資 源の共有は勿論、FEP やデータベースなどのサービスも、ネットワーク上のど こかのマシーンがやってくれればいい。極端な話(もうじき極端ではなくなる が)そのマシーンは地球の裏側にあってもいい。

○ 置いていかれた sun の GUI

誤解を受けないように最初に断っておくが、sun は良いマシーンである。今 でも。しかしそれがもっとも能力を発揮するのは、それが開発された時そうで あったようにエンジニアリング・ワークステーションとして使われる時である。

考えてみれば6年前 sun-3 を買おうと決めた理由の一つは、UNIX 上で Mac のような GUI 環境を得るには sun が一番と考えたことだった。当時 SunView の上でマルチウインドーやアイコンなどの環境が提供されていた。しかし使っ てみると、外見は似ていても使い勝手は Mac に到底及ばないことがわかった。 GUI の開発環境が有るとはいえ、まだまだ fix した感じではなく、じっくり 腰を落ち着けて開発する気になれなかった。事実 SunView はその後かなり変 化したし、最近は X-window の方がメジャーのようにも見える。

ということで現在の sun を考えると、使いやすい GUI に関する限り Mac に匹敵するアプリケーションや開発環境は今だに提供されていないと言ってよ い。X-window のように汎用性のものが出てきたのは良いことだが、それを使っ て必要な環境を手に入れるにはかなり労力を必要とする。6年前にも労力を使 えばそのようなことができたということでは同じで、何とその点について sun は6年前と何も変わっていないことに気付いた。今やいろいろな面で sun も PC-98 のようになってしまったなあと思うこの頃である。 そこへ待望のNeXT環境がいよいよ熟してきたから、中心がNeXTへ移行して行 くのは当たり前の過程かもしれない。

sun を使っている人達に NeXT の話しをすると、必ず「そんな玩具使いもの になるの?」という返事が返ってくる。Mac が出現した時もそうだった。今だ に Mac を玩具としか考えていない人もあるから仕方がないとも言える。こう いうことから考えても、結局今や sun は 98 なのだ。「sun で出来ることは NeXT でできるが、NeXT でできることを sun で出来るかって、、、」言って もわからない人にはわからない、ああ、、、

○ NeXT でアプリケーション開発

InterfaceBuilder を使ったNeXTのアプリケーション開発を始めたいと思い つつObjective-Cの本が手に入らなかったりして、なかなか最初の障壁を乗り 越えられないでいたが、先月意を決してかじりついてみることにした。

努力の甲斐あって、ようやく最初の壁を突破できたようである。ひとに聞く と Objective-CのSyntax なんて簡単だよ、説明するのに10分も要らないと いうのだが、その10分で済むことが書いてあるものがなかなかない。 on line manual に obj-C の説明はあったのだが、英語のマニュアルとあっ て適当にパスしていたのがいけなかった。

わかってみると、なるほど複雑なことはなく、ちょっとした作法を覚えれば よいだけである。NeXT における obj-C のソースは、*.h というヘッダーファ イルと、*.m という本体の記述ファイルが必ずペアになっている。そしてヘッ ダーファイルで C でいう関数に当たるものの宣言がされていなければならな い。そして本体を記述するファイルにその関数の実体を書いて行く(ここは C と同じ)。

そしてOOP(オブジェクト指向)であるから、関数はオブジェクトの宣言と、 その後にそのオブジェクトが理解できる幾つかのメッセージの記述をしてゆく。 メッセージの書き方はCの関数に近いし、その中身は完全にCの文法で書くこと ができる。NeXTのコンパイラーは通常のCコンパイラーの上位互換なので、*.c というような通常のC言語のソースでも何の問題もなくコンパイルしてくれる。

あとは標準で提供されているクラスライブラリーについて理解を深めること だが、これは必要に応じて少しずつ探検し見つけて行こうと思っている。

○ 走りながら考える

コンピュータの使い方を覚えるには、まず必要最小限のことだけ理解し、必 要に応じて少しずつレパートリーを増やして行くというのが、私のいつものや り方である。

私の友人はその逆で、新しいシステムを手にしたらまずマニュアルを端から 端まで読み、その後でシステムをいじりはじめる。正式なソフト開発教育を受 けておらず、独学でせっかちな私はとにかく早く動かしてみたいという欲望に 打ち勝つことができない。走りながら考えてしまうのが常である。

何とか obj-C の文法さえのみ込んでしまえばこっちのものである。そこか らは毛糸のセーターをほどくようなもので、早速ちょっとしたアプリケーショ ンを組んでみた。おー、流石、結構早い。OOP を実現するために内部的には結 構複雑なことをやっているに違いないが、CPUに68040を積んでいることもあっ てかなりの速度で実行してくれる。

オブジェクト指向プログラミングの開発効率の良さがよく言われるが、よう やく実感することができた。確かに NeXT の場合 InterfaceBuilderという GUI 開発ツールとあいまって、THINK-C などで組む Mac のアプリと比べても 開発はかなり効率が良さそうである。しかし、どの言語でも言えることだが、 本当に読みやすいプログラム、効率的なプログラムは書き方次第であって、 OOP を使ってもグチャグチャのプログラムは書けるのである。

○ 開発には、やはり emacs がなくちゃ

IB で開発する際エデイターは標準では「Edit」を使うが、emacs を使った 方がずっと便利である。emacs には、開発のためのいろいろなツールが装備さ れていて、その中でソースの修正、コンパイル、実行、デバッグまですべて出 来てしまう。ときどき、外へ出るのは IB での GUI インタフェースとのリン クをとったりする場合であるが、外へ出るといってもマルチウインドーなので ちょっとマウスを隣のウインドーへ移すだけだから、どうということはない。

キヤラクターベースでありながらこれだけ優れた emacs のようなものを、 NeXTのような GUI 環境で実現するにはかなりの努力と長い期間を必要とする だろう。

< 1991.12 UNIX と Macintosh OS の共通点 | 1993.03 NeXus Meeting レポート >