しろやまです。
# NeXTという単語があるとでてくる私・・・

In <200002140336.AA00132 / fit0298.fitec.co.jp> , ARIMA Yasuhiro said...
>
> NEXTSTEP のコマンドラインで、フィルタとしての clipboard
> を使ったことがあり
> ます。
> パイプラインの一部として使えました。
>

NeXTSTEPだと、copy, pasteコマンド、OPENSTEP
以降ですと pbcopy, pbpasteコマンドでコピーバッファ
の中身を標準出力に出したり、標準入力から受け取った
りできます。

同様のものは Windowsでも

http://www.yl.is.s.u-tokyo.ac.jp/~nayuta/S/cliputil/index-ja.html

にあります。非常に便利です。

#これと WebObjects for NTの bashとUNIXコマンドで
# NeXTにちかいコマンドライン環境を作って仕事して
# おります。


けど、NeXTとオブジェクト志向とクリップボードなら
こんなコマンドよりも Servicesの方が向いてますよ。

Servicesは Pasteboardクラスと pbs(PasteBoardServer)
を基幹として動作する機構でして、まず、各アプリケーシ
ョンは、自分の得意とする機能を「提供」します。提供
された機能はその他のアプリケーションの「サービス」と
いうメニューの下に、さもアプリケーションが本来持つメ
ニューであるかのごとくサブメニューとして表示されます。

例えばマウスで一つの英単語を範囲選択をして「サービス」
メニューの「LookUp」を選択すると、そのLookUpという
アプリがまえに出てきて(動いてなければ起動されて)、その
単語をLookUpの辞書で検索した結果が表示されます。
「サービス」-> 「Grab」-> 「スクリーン」を選択すると、
Grab.appというアプリが動作し、スクリーン全体をキャプ
チャして、先の範囲に画像を張りつけます。(画像を張りつ
けられないテキスト領域なら、そもそもGrabのメニューは
灰色の表示で選択できなくなってます)。

別のアプリの機能を利用して、その入出力としてペースト
ボードを使うのが Serviceという機能です。これは、Paste-
Boardを使ったアプリケーションという巨大なオブジェクト
への通信ととらえることができます。

さて、「5 + 3」とか書いて範囲指定して、「サービス」->
「Terminal」-> 「計算を実行」を選択すると、バックグラ
ウンドで exprが走って、その計算結果( 8 )がペーストされ
ます。これはTerminal.app(NeXT標準の端末エミュレータ)
が提供する Serviceで、「UNIXコマンドを実行して、結果
を返す」サービスです。もちろん、これは Terminal.app で
再定義可能で、例えばエディタで rubyのコードを書いて、
範囲選択して、「rubyを実行」とかいうメニューを作って
実行させると、その結果を端末のウィンドウを出して表示
させたり、範囲指定した部分にペーストしたりできます。

つまり、Terminal.appは、その機能として UNIXコマンドを
Wrapして、一つの Serviceオブジェクトとして成り立たせる
事ができるアプリといえます。
# フリーソフトですが、同じようにコマンドラインをWrap
# して、ドロップしたファイルを処理する「DDT」という
# アプリもありました。( Drag Drop Tool? )


OpenStepとは、こうやって、言語もメッセージをやりとり
する、その延長としてアプリもメッセージをやり取りする
環境の仕様をさしていて、決して「UNIXをOOでみせたもの」
ではございません。
# その「実装」が OPENSTEPです。

その証拠に「NSFile」などの「ファイルを現すオブジェクト」
は存在しません。ファイルシステムを示す「NSFileManager」
はありますし、NSFileHandlerというファイルハンドルを示す
オブジェクトはありましても、ファイルというオブジェクトは
存在しないのです。文字列クラスである NSStringが

+ (id)stringWithContentsOfFile:(NSString *)path;

という「ファイルの中身を文字列とみなしてその文字列の
オブジェクトを生成する」クラスメソッドをもっていたり、
NSDataというバイト列を示すクラスが

+ (id)dataWithContentsOfFile:(NSString *)path;
+ (id)dataWithContentsOfURL:(NSURL *)url;

などというクラスメソッドで初期化される事はありますが、
これらはそれぞれ文字列であり、データであってファイル
ではありません。

# もひとついうと、OpenStep仕様も95年ごろのもので、
# とうてい「最近」ではないし、元となったNeXTSTEP
# に至ってはもう12年も前のものでして・・・

どちらかというとこれらは、「OpenStepと既存のOS
(Machだったり NTだったり SolarisだったりHP-UXだっ
たり)との連携をとる為の機能」でして、UNIXをOOした
訳でもなんでもないのです。

OpenStepにとってはMachが便利で、MachはUNIXから
離れられないからひっついてきただけで、NeXTは別に
UNIXである必要をもってないといいますか・・・
# 実際 最初はSVRで実装されて、スタンフォードの学生に
# 「だっせー」と馬鹿にされて、んでさくっとMach+4.3
# BSDに乗り換えたという逸話もあるぐらい、OSには節操
# がないです、はい。

だから、できれば・・・NeXTを「UnixのOOじゃないもの
を見えなくしちまうもの」と呼ぶのはやめてもらえません
かね? (^^;)

---
SHIROYAMA Takayuki : psi / fortune.nest.or.jp
PS: 2/17,18,19と、MacWorldExpoの某ブースで、NTで
     WebObjects展示という、周囲に喧嘩を売った(一応
     G3ももってきてますが・・・)事をやってますので、
     こんな話が聞きたいならいつでもどうぞ(^^;)