大日本スクリーンのドラムスキャナ『SG-818』を3DCGで再現する
古い書類を整理していたら、むか〜し製版の仕事で扱っていた大日本スクリーンのドラムスキャナのカタログが…

ちょうど良いネタだと思い、往年のスキャナ『SG-818』を少ない資料と記憶を頼りにBlenderを使ってモデリングしてみました。

SG-818は、自分が製版会社に入って最初に使っていた80年代後半のドラムスキャナで、DTP以前のアナログ製版時代のものなので当然Macへ画像を入力するのではなく、4色分解してアミカケされたイメージをフィルムに露光して出力します。(DTP世代の人には何言ってるのか解らないかも知れませんが)
今となっては実機を見る機会はないですし(そもそも現存してるのか…)資料もカタログ以外ほとんど無いので、細かい部分はいろいろ割愛。Google先生もこの件に関してはお手上げの様でした。
一通りモデリングしてCyclesを使ってレンダリング。寸法などは割と目分量です。

本体の向かって左側にはA2サイズほどのフィルムを巻き付ける『ドラム』が格納されています。さらに左側にはレーザーで網点を生成する『ドットジェネレータ』があるんですが、ちょっと面倒になったので省略。
この当時のスキャナは、露光が終わったフィルムを現像機に通すために部屋を暗くする必要があったので、本体まるごと暗室の中に設置されていました。(もちろん現像の時以外は照明は点いてます)
フィルムの記録部が分離したセパレートタイプの機種もありましたが(DTPが普及する前の電子集版システムの出力機としても使用されていた)、現在使われているドラムスキャナは原稿を読み取る部分だけが残って入力装置になっている感じです。
操作パネル。ずらっと並んだスイッチ類が、なんとなくシンセぽいです。

LEDのメーターに表示される各版のアミ%を頼りに、ダイヤルの数値を変えながら明るさやトーンカーブ、カラーコレクションなどの色調をセットアップします。
Photoshopの『色調補正』メニューにある様な操作を、ツマミを回して行う感じでしょうか。当然、結果は『刷り上がって』来るまで見る事ができないので、それを予測するための『データの積み重ね』が重要でした。
セットした設定を記憶させる機能は無く、原稿ごとにツマミの位置をノートに記録するなどしてました。
カラー原稿をシリンダーに貼った状態を上から。

ビューワーを覗きながらハンドルを回して『手動で』ピントを合わせます。
シリンダーは高速で回転するので、原稿の貼り方が悪いと遠心力で外れて装置に当たって破れ、その結果始末書を書かされたり得意先に頭を下げに行ったり補償を要求されたりと、いろんな意味で大惨事が起こります。(ただ、自分の知る限りでは回転中よりもスキャンが終わって原稿を剥がす時に『やってしまう』人が多かったようですが)
シリンダーが回転している様子を動画にしてみました。(レンダリングに時間がかかるので少し粗め)
デジカメの普及で絶滅寸前になりながらも案外しぶとく生き残っている感じがするドラムスキャナですが、現在使われているDTPの入力機と化した、出力部のドラムを持たないものをドラムスキャナと呼ぶのは何となく抵抗が…シリンダーも形状的には同じなので間違ってはいないんでしょうけど。(どうでも良いですね)
以上、誰得エントリーでした。

ちょうど良いネタだと思い、往年のスキャナ『SG-818』を少ない資料と記憶を頼りにBlenderを使ってモデリングしてみました。

SG-818は、自分が製版会社に入って最初に使っていた80年代後半のドラムスキャナで、DTP以前のアナログ製版時代のものなので当然Macへ画像を入力するのではなく、4色分解してアミカケされたイメージをフィルムに露光して出力します。(DTP世代の人には何言ってるのか解らないかも知れませんが)
今となっては実機を見る機会はないですし(そもそも現存してるのか…)資料もカタログ以外ほとんど無いので、細かい部分はいろいろ割愛。Google先生もこの件に関してはお手上げの様でした。
一通りモデリングしてCyclesを使ってレンダリング。寸法などは割と目分量です。

本体の向かって左側にはA2サイズほどのフィルムを巻き付ける『ドラム』が格納されています。さらに左側にはレーザーで網点を生成する『ドットジェネレータ』があるんですが、ちょっと面倒になったので省略。
この当時のスキャナは、露光が終わったフィルムを現像機に通すために部屋を暗くする必要があったので、本体まるごと暗室の中に設置されていました。(もちろん現像の時以外は照明は点いてます)
フィルムの記録部が分離したセパレートタイプの機種もありましたが(DTPが普及する前の電子集版システムの出力機としても使用されていた)、現在使われているドラムスキャナは原稿を読み取る部分だけが残って入力装置になっている感じです。
操作パネル。ずらっと並んだスイッチ類が、なんとなくシンセぽいです。

LEDのメーターに表示される各版のアミ%を頼りに、ダイヤルの数値を変えながら明るさやトーンカーブ、カラーコレクションなどの色調をセットアップします。
Photoshopの『色調補正』メニューにある様な操作を、ツマミを回して行う感じでしょうか。当然、結果は『刷り上がって』来るまで見る事ができないので、それを予測するための『データの積み重ね』が重要でした。
セットした設定を記憶させる機能は無く、原稿ごとにツマミの位置をノートに記録するなどしてました。
カラー原稿をシリンダーに貼った状態を上から。

ビューワーを覗きながらハンドルを回して『手動で』ピントを合わせます。
シリンダーは高速で回転するので、原稿の貼り方が悪いと遠心力で外れて装置に当たって破れ、その結果始末書を書かされたり得意先に頭を下げに行ったり補償を要求されたりと、いろんな意味で大惨事が起こります。(ただ、自分の知る限りでは回転中よりもスキャンが終わって原稿を剥がす時に『やってしまう』人が多かったようですが)
シリンダーが回転している様子を動画にしてみました。(レンダリングに時間がかかるので少し粗め)
デジカメの普及で絶滅寸前になりながらも案外しぶとく生き残っている感じがするドラムスキャナですが、現在使われているDTPの入力機と化した、出力部のドラムを持たないものをドラムスキャナと呼ぶのは何となく抵抗が…シリンダーも形状的には同じなので間違ってはいないんでしょうけど。(どうでも良いですね)
以上、誰得エントリーでした。
スポンサーサイト
AppleScriptでJPEG画像がプログレッシブかどうかを判定する
AdobeのPhotoshopフォーラムに投稿されていたのを見て、ちょっと考えてみました。
『ApplescriptでプログレッシブJPEGはわかりますか?』
(Adobe Forums: フォーラム: Photoshop (Japan))
PhotoshopのAppleScriptリファレンスを眺めてみたり、保存した画像のXMPメタデータにそれらしい情報が含まれていないか見てみたんですが、Photoshopを使った解決法が見つからなかったので、Photoshopを使わない別の方法でやってみます。
通常この手の処理はバイナリデータを先頭から読んでいってマーカーの値が出てきたらそれを判別して……みたいな感じになりますが、AppleScriptでバイナリデータを扱うのはちょっと面倒そうなので、Unix系のOSで使える出来合いのライブラリに処理を投げてしまったほうが手取り早く、確実だと思います。
で、今回使用してみたのは『libjpeg』ライブラリに含まれる『rdjpgcom』コマンドで、シェルを使ってJPEG画像に関する情報を取り出す事ができます。このコマンドをAppleScriptの『do shell script』で呼び出してやります。
そのためにはMacに『libjpeg』をインストールしてやる必要がありますが、下のサイトでコンパイル済みのインストーラ形式のものが公開されています。
http://ethan.tira-thompson.org/Mac_OS_X_Ports.html
(@ITで紹介されていたものですが、インストーラの素性は保証できないので、利用は自身の判断で…今回必要なのは『rdjpgcom』コマンドだけなので、『libjpeg』本体は無くても良いようですが。)
上記インストーラでは『rdjpgcom』コマンドは『/usr/local/bin』にインストールされます。
このコマンドの使い方は、例えばデスクトップにある画像、ファイル名『baseline.jpg』の情報を見る場合、ターミナルで、
『rdjpgcom』コマンドは、JPEG画像以外のファイルを処理した場合、標準エラー出力に『Not a JPEG file』の文字列を返してくるので、メッセージを『try~on error』で拾えます。
AppleScriptから使う場合はこんな感じでしょうか。
結局AppleScriptでは出来てないじゃん!とか言われそうですが、Finderなどの処理を自動化しつつ、手に負えない処理はシェルや他の言語に丸投げするのがグルー(糊)な言語としてのAppleScriptの正しい使い方だと思っているので。
『ApplescriptでプログレッシブJPEGはわかりますか?』
(Adobe Forums: フォーラム: Photoshop (Japan))
PhotoshopのAppleScriptリファレンスを眺めてみたり、保存した画像のXMPメタデータにそれらしい情報が含まれていないか見てみたんですが、Photoshopを使った解決法が見つからなかったので、Photoshopを使わない別の方法でやってみます。
通常この手の処理はバイナリデータを先頭から読んでいってマーカーの値が出てきたらそれを判別して……みたいな感じになりますが、AppleScriptでバイナリデータを扱うのはちょっと面倒そうなので、Unix系のOSで使える出来合いのライブラリに処理を投げてしまったほうが手取り早く、確実だと思います。
で、今回使用してみたのは『libjpeg』ライブラリに含まれる『rdjpgcom』コマンドで、シェルを使ってJPEG画像に関する情報を取り出す事ができます。このコマンドをAppleScriptの『do shell script』で呼び出してやります。
そのためにはMacに『libjpeg』をインストールしてやる必要がありますが、下のサイトでコンパイル済みのインストーラ形式のものが公開されています。
http://ethan.tira-thompson.org/Mac_OS_X_Ports.html
(@ITで紹介されていたものですが、インストーラの素性は保証できないので、利用は自身の判断で…今回必要なのは『rdjpgcom』コマンドだけなので、『libjpeg』本体は無くても良いようですが。)
上記インストーラでは『rdjpgcom』コマンドは『/usr/local/bin』にインストールされます。
このコマンドの使い方は、例えばデスクトップにある画像、ファイル名『baseline.jpg』の情報を見る場合、ターミナルで、
rdjpgcom -verbose /User/hogehoge/Desktop/baseline.jpgのように -verbose オプションを付けてファイルのパスを渡してやれば、
JPEG image is 1280w * 1024h, 3 color components, 8 bits per sample JPEG process: Baselineのような形で返ってきます。
『rdjpgcom』コマンドは、JPEG画像以外のファイルを処理した場合、標準エラー出力に『Not a JPEG file』の文字列を返してくるので、メッセージを『try~on error』で拾えます。
AppleScriptから使う場合はこんな感じでしょうか。
on open drop repeat with aFile in drop tell application "Finder" set fPath to POSIX path of aFile as string set scpt to "/usr/local/bin/rdjpgcom -verbose " & quoted form of fPath try set rslt to do shell script scpt as string if rslt is not "" then display dialog name of aFile & return & word 3 of paragraph 2 of rslt else display dialog "不明" end if on error errStr display dialog errStr end try end tell end repeat end open上記のスクリプトではAppleScirpt側で、シェルから返ってきた文字列が入る変数rsltから『Progressive』『Baseline』を取り出していますが、
rdjpgcom -verbose /User/hogehoge/Desktop/baseline.jpg | grep process | awk '{ print $3 }'のようにgrepとawkを通してやれば、シェル側で
Baselineの文字列だけを取り出せます。(この場合、JPEG以外のファイルを処理すると何も返ってきません。)
結局AppleScriptでは出来てないじゃん!とか言われそうですが、Finderなどの処理を自動化しつつ、手に負えない処理はシェルや他の言語に丸投げするのがグルー(糊)な言語としてのAppleScriptの正しい使い方だと思っているので。
AppleScript & Photoshopで2つの画像の差異がある部分を着色表示する
久しぶりの更新になります。
AppleScriptを使って、Photoshopで表示している2つの画像の差異がある部分(値が同じでないピクセル)を、着色表示してみます。印刷会社などで導入されている『デジタル検版』の様な感じで表示します。
やっている事は、
・下準備として画像がレイヤを持っている場合はそれを統合して一枚モノの画像にしておき
・2つの画像をレイヤで重ね
・画像モードを『16bit/チャンネルのRGB』に変換
・上のレイヤの描画モードを『差の絶対値』にして下のレイヤと統合
・差を目立たせる為にトーンカーブでライト側を一杯まで引っ張る(入力4、出力255)
・画像を2値化してから反転
・赤く着色して元の画像に重ねて表示
という一連の動作をAppleScriptで実行しています。
例えば、オリジナル画像(Image1)と、オレンジの種を消した画像(Image2)をPhotoshopで表示しておき、AppleScriptを実行すると、差異のあるピクセルを色付けした状態で表示します。(下の画像は比較し易いように並べたものです)

こちらはオリジナル画像(Image1)に対してトーンカーブで中間域の濃度をCMYK値で5%上げた画像(Image2)の場合。

こんな感じで色付け表示します。画像の色調をトーンカーブ等で調整した際、どの辺りまで影響が出るのかを確認する事ができます。
『DIFF_THRESHOLD』の値は、どれくらいの色の差があれば色付けするのかを決めるしきい値で、スクリプト1行目の値を上の画像のように220にしておくとCMYKの値でおよそ5%以上の差があれば色付けするようになり、値が小さい程わずかな色の差で反応するようになります。
スクリプト中でRGBに変換する前に『16bit/チャンネル』にしていますが、これは2つのレイヤーの画像のCMYK値が同じだったとしても、『8bit/チャンネル』のままだとRGBの変換後に僅かな数値の違いが出てしまうためです。
で、今回色んな画像で試してみて、ちょっと意外だった事が。

上の例は、左のオリジナル画像を『JPEGフォーマット(画質は最高の12)』で保存したものと、『EPS JPEGエンコーディング(最高画質)』で保存して、それぞれオリジナルと比べてどれだけ変化しているのかを見てみたんですが、どうもEPS JPEGエンコーディングの方が色が変化したピクセルが多い(=劣化が大きい)ようで、色々な画像で試してみたんですがどれも同じ傾向でした。まあ目で見た限りでは見分けは付かないんですが、てっきり同等のものだと勝手に思い込んでいたので自分にとっては『プチ驚愕の事実』でした。
以下が今回のAppleScript。スクリプトを実行するときは『比較したい2つの画像のみ』を表示しておきます。
■動作確認
MacOSX 10.5.8
Photoshop CS4
AppleScriptを使って、Photoshopで表示している2つの画像の差異がある部分(値が同じでないピクセル)を、着色表示してみます。印刷会社などで導入されている『デジタル検版』の様な感じで表示します。
やっている事は、
・下準備として画像がレイヤを持っている場合はそれを統合して一枚モノの画像にしておき
・2つの画像をレイヤで重ね
・画像モードを『16bit/チャンネルのRGB』に変換
・上のレイヤの描画モードを『差の絶対値』にして下のレイヤと統合
・差を目立たせる為にトーンカーブでライト側を一杯まで引っ張る(入力4、出力255)
・画像を2値化してから反転
・赤く着色して元の画像に重ねて表示
という一連の動作をAppleScriptで実行しています。
例えば、オリジナル画像(Image1)と、オレンジの種を消した画像(Image2)をPhotoshopで表示しておき、AppleScriptを実行すると、差異のあるピクセルを色付けした状態で表示します。(下の画像は比較し易いように並べたものです)

こちらはオリジナル画像(Image1)に対してトーンカーブで中間域の濃度をCMYK値で5%上げた画像(Image2)の場合。

こんな感じで色付け表示します。画像の色調をトーンカーブ等で調整した際、どの辺りまで影響が出るのかを確認する事ができます。
『DIFF_THRESHOLD』の値は、どれくらいの色の差があれば色付けするのかを決めるしきい値で、スクリプト1行目の値を上の画像のように220にしておくとCMYKの値でおよそ5%以上の差があれば色付けするようになり、値が小さい程わずかな色の差で反応するようになります。
スクリプト中でRGBに変換する前に『16bit/チャンネル』にしていますが、これは2つのレイヤーの画像のCMYK値が同じだったとしても、『8bit/チャンネル』のままだとRGBの変換後に僅かな数値の違いが出てしまうためです。
で、今回色んな画像で試してみて、ちょっと意外だった事が。

上の例は、左のオリジナル画像を『JPEGフォーマット(画質は最高の12)』で保存したものと、『EPS JPEGエンコーディング(最高画質)』で保存して、それぞれオリジナルと比べてどれだけ変化しているのかを見てみたんですが、どうもEPS JPEGエンコーディングの方が色が変化したピクセルが多い(=劣化が大きい)ようで、色々な画像で試してみたんですがどれも同じ傾向でした。まあ目で見た限りでは見分けは付かないんですが、てっきり同等のものだと勝手に思い込んでいたので自分にとっては『プチ驚愕の事実』でした。
以下が今回のAppleScript。スクリプトを実行するときは『比較したい2つの画像のみ』を表示しておきます。
■動作確認
MacOSX 10.5.8
Photoshop CS4
property DIFF_THRESHOLD : 50 tell application "Adobe Photoshop CS4" activate set doc1 to document 1 set doc2 to document 2 set current document to doc1 tell doc1 flatten select all copy end tell set current document to doc2 tell doc2 flatten paste set bits per channel to sixteen change mode to RGB set imgLay1 to background layer set name of imgLay1 to "Image 1" set imgLay2 to layer 1 set name of imgLay2 to "Image 2" set blend mode of imgLay2 to difference duplicate imgLay1 duplicate imgLay2 move 2nd layer to after 3rd layer tell layer 1 merge select all adjust using curves with options {class:curves, curve points:{{0, 0}, {4, 255}}} adjust using threshold adjustment with options {class:threshold adjustment, level:DIFF_THRESHOLD} adjust using inversion end tell make new art layer with properties {blend mode:lighten} fill selection with contents {class:RGB color, red:255, green:64, blue:64} merge layer 1 set name of layer 1 to "Diff" set opacity of layer 1 to 70 set blend mode of layer 2 to normal end tell end tell
MacOSXの源流『NEXTSTEP』とWebブラウザの起源『WorldWideWeb』に触れる
自分は趣味としての観賞用というか、盆栽用に古いコンピュータを何台か持っているんですが、その中にかつてApple Computerを追われたSteve Jobsが作った『NeXT社』のワークステーション、『NeXTstation』があります。今の住居に引っ越す際に梱包して以来、そのままクローゼットに放置したままになっていたので動作確認も兼ねてちょっと引っ張り出してみました。別に自分は現役で使ってた訳ではなく後になって入手したクチで良く知らない部分も多いので、ちょっと調べながら画像を交えて軽く紹介したいと思います。
所有しているのは『スラブ』と呼ばれる平べったい形状の『NeXTstation TurboColor』の方で、残念ながら立方体のデザインが特徴の『NeXTcube』ではないんですが、CPUにQuadora以前のMacにも採用されていた『68k』のMC68040/33MHzを搭載したシリーズ中では最速のモデルです。

下は1990年、Steve Jobs氏によるNeXTのプレゼンテーションの動画。
本体のフタを開けると中はこんな感じになっていて、電源とロジックボードに隠れてしまってあまり見えませんが、シャシーはNeXTcubeの筐体と同じくマグネシウム合金製で、右側に見えるフタの内側も同じ部材で覆ってシールドされています。昔のMac(IIciとか)も筐体の内側が銀色ですが、あのようなメッキとは違って数mmの分厚い材質でできています。底部にはファンからの熱を逃がす開口部があり、フィンの形状に加工されるなど凝った作りになっています。


ディスプレイやキーボードは、本体に接続した『SoundBox』と呼ばれるスピーカーを内蔵したインターフェースを介して接続します。キーボードから電源のON/OFF、音量やディスプレイの輝度を調節出来る様になっていました。後期のTurboモデルではG3以前のMacに採用されていたADB仕様のキーボードとマウスが用意されていて(画像の下のもの)、これらのキーボードやマウスは『秋葉館』等のショップで扱っていたのでMac用に購入して使っていた人もおられるのではないでしょうか。

それでは、MacOSXのベースとなったOS、『NEXTSTEP』(バージョンは3.3J)を起動してみます。下の画像はログイン画面で、ログインに失敗するとダイアログが左右にブルブル振動する動作はMacOSXになっても変わっていません。

ファイルやフォルダの管理はMacOSXのFinderに相当する『Workspace Manager』と呼ばれるアプリケーション上で行います。ウインドウの上部にフォルダやファイルへのショートカットを登録する『シェルフ』を持つ等、MacOSX10.2 JaguarまではFinderのウインドウはこれと良く似たレイアウトになっていました。画面の右側にあるのがランチャーとして機能する『Dock』で、ドラック&ドロップでアプリケーションを登録します。ベースになっているので当然なんですが、ディレクトリの構成や命名規則等、MacOSXとの共通点が数多くあります。

アプリケーションがインストールされている『NeXTApps』フォルダの中にはMacOSXでおなじみの『Preview.app』や『Terminal.app』、スクリーンショットを撮る『Grab.app』もあります。拡張子が『.app』のアプリーケションはMacOSXのものと同様、実態は複数のファイルがバンドルされたパッケージになっています。
『Mail.app』を起動したところ。受信箱にはSteve Jobsからのメッセージが入っています。

メールの文章中に画像が表示されていますが、このメールは独自の『NeXTMail』形式で、画像や音声を直接挿入出来、送信するメールを作成する際にドラッグ&ドロップで配置出来る様になっています。
今回スクリーンショットを撮るのにGrab.appが大活躍しましたが、スクリーンショットとして保存されたTIFF画像をMacにコピーするためにNeXTstation側でNFSサーバを起動しておき、Mac側でマウントしてファイル共有しました。またインターネットへの接続もブロードバンドルータを使った環境ならネームサーバやルータのIPアドレスを設定をしてやるだけで行えます。ただ、伝統的なUNIXの設定ファイルではなく、GUIの設定ツールを使わないと設定が反映されない等、若干ハマる部分がありました。(このあたりはMacOSXでも時々起こる事ですね)
では次に、インターネットに接続してみます。
『世界初のWebサーバはNeXTで動作していた』というのは有名な話ですが、その辺の蘊蓄は他に任せるとして、初期の『HTTPを使ったブラウザ環境』がどんなものだったのか見て行きます。
Webサーバと共にTim Berners-Leeによって書かれた最初のWebブラウザ、『WorldWideWeb』を起動してみます。(画像は若干バージョンが進んだ『WorldWideWeb1.0』のもの)

『Navigation』パネルに『<Previous』『Next>』ボタンがありますが、これは現在のブラウザの様に閲覧したページを行き来するのではなく、HTML上に出てくるリンクタグの順に辿って行くような動作をします。

デフォルトでは起動直後に『default.html』というファイル名の、Webについての概要が記述されたページが表示されるようになっているんですが、これが本来の意味での『ホームページ』ですね。『Home』ボタンで表示されます。
下はMacで言うところのAbout画面。

初期のバージョンのWorldWideWebは、単一のファイルしか読み込まず、HTML中に画像などの外部ファイルへのリンクがあってもそれらを取得して行く動作はしませんでした。当然バーチャルホストやリダイレクトにも対応出来ず、現在のWebページをマトモに表示(というか取得)する事さえ出来ません。ただ、HTTPの仕様が固まり、NEXTSTEPの開発環境と共にWorldWideWebのバージョンが新しくなるにつれ、同じウィンドウ内でテキストと画像をインラインで表示出来る様になる等、徐々に現在のものに近づいて行きます。(下の画像は『Nexus』と改名された後のバージョン2の画面)

試しに、自前のWebサーバにアクセスしてどのようなHTTPリクエストを出しているか見てました。

初めのバージョンではGETメソッドとファイルのパスのみでHTTPのバージョン表記さえありませんが、

また、WorldWideWebは表示しているページを直接編集出来るエディタとしても機能する等、現代のブラウザからは消えてしまった機能も持っていました。選択されているテキストのタグを表示してスタイルを変更する事も可能です。

以上、ざっと駆け足で見てみました。当時のネットワーク環境も良くわからないのでもっとじっくり見てみないと不明な部分も多く、間違った解釈をしている点もあるかも知れません。MacOSXが語られる時にそのベースとなった『NEXTSTEP』の文字は良く見かけますが、その割に露出は少ない様な気がするので、少しでも参考になればと思います。
■参考リンク
『NeXT Computer Historical Site』
『Web Browser History - First, Early』
『World Wide Web@20』
『evolt.org - Browser Archive』
『日本最初のホームページ』
所有しているのは『スラブ』と呼ばれる平べったい形状の『NeXTstation TurboColor』の方で、残念ながら立方体のデザインが特徴の『NeXTcube』ではないんですが、CPUにQuadora以前のMacにも採用されていた『68k』のMC68040/33MHzを搭載したシリーズ中では最速のモデルです。

下は1990年、Steve Jobs氏によるNeXTのプレゼンテーションの動画。
本体のフタを開けると中はこんな感じになっていて、電源とロジックボードに隠れてしまってあまり見えませんが、シャシーはNeXTcubeの筐体と同じくマグネシウム合金製で、右側に見えるフタの内側も同じ部材で覆ってシールドされています。昔のMac(IIciとか)も筐体の内側が銀色ですが、あのようなメッキとは違って数mmの分厚い材質でできています。底部にはファンからの熱を逃がす開口部があり、フィンの形状に加工されるなど凝った作りになっています。


ディスプレイやキーボードは、本体に接続した『SoundBox』と呼ばれるスピーカーを内蔵したインターフェースを介して接続します。キーボードから電源のON/OFF、音量やディスプレイの輝度を調節出来る様になっていました。後期のTurboモデルではG3以前のMacに採用されていたADB仕様のキーボードとマウスが用意されていて(画像の下のもの)、これらのキーボードやマウスは『秋葉館』等のショップで扱っていたのでMac用に購入して使っていた人もおられるのではないでしょうか。

それでは、MacOSXのベースとなったOS、『NEXTSTEP』(バージョンは3.3J)を起動してみます。下の画像はログイン画面で、ログインに失敗するとダイアログが左右にブルブル振動する動作はMacOSXになっても変わっていません。

ファイルやフォルダの管理はMacOSXのFinderに相当する『Workspace Manager』と呼ばれるアプリケーション上で行います。ウインドウの上部にフォルダやファイルへのショートカットを登録する『シェルフ』を持つ等、MacOSX10.2 JaguarまではFinderのウインドウはこれと良く似たレイアウトになっていました。画面の右側にあるのがランチャーとして機能する『Dock』で、ドラック&ドロップでアプリケーションを登録します。ベースになっているので当然なんですが、ディレクトリの構成や命名規則等、MacOSXとの共通点が数多くあります。

アプリケーションがインストールされている『NeXTApps』フォルダの中にはMacOSXでおなじみの『Preview.app』や『Terminal.app』、スクリーンショットを撮る『Grab.app』もあります。拡張子が『.app』のアプリーケションはMacOSXのものと同様、実態は複数のファイルがバンドルされたパッケージになっています。
『Mail.app』を起動したところ。受信箱にはSteve Jobsからのメッセージが入っています。

メールの文章中に画像が表示されていますが、このメールは独自の『NeXTMail』形式で、画像や音声を直接挿入出来、送信するメールを作成する際にドラッグ&ドロップで配置出来る様になっています。
今回スクリーンショットを撮るのにGrab.appが大活躍しましたが、スクリーンショットとして保存されたTIFF画像をMacにコピーするためにNeXTstation側でNFSサーバを起動しておき、Mac側でマウントしてファイル共有しました。またインターネットへの接続もブロードバンドルータを使った環境ならネームサーバやルータのIPアドレスを設定をしてやるだけで行えます。ただ、伝統的なUNIXの設定ファイルではなく、GUIの設定ツールを使わないと設定が反映されない等、若干ハマる部分がありました。(このあたりはMacOSXでも時々起こる事ですね)
では次に、インターネットに接続してみます。
『世界初のWebサーバはNeXTで動作していた』というのは有名な話ですが、その辺の蘊蓄は他に任せるとして、初期の『HTTPを使ったブラウザ環境』がどんなものだったのか見て行きます。
Webサーバと共にTim Berners-Leeによって書かれた最初のWebブラウザ、『WorldWideWeb』を起動してみます。(画像は若干バージョンが進んだ『WorldWideWeb1.0』のもの)

『Navigation』パネルに『<Previous』『Next>』ボタンがありますが、これは現在のブラウザの様に閲覧したページを行き来するのではなく、HTML上に出てくるリンクタグの順に辿って行くような動作をします。

デフォルトでは起動直後に『default.html』というファイル名の、Webについての概要が記述されたページが表示されるようになっているんですが、これが本来の意味での『ホームページ』ですね。『Home』ボタンで表示されます。
下はMacで言うところのAbout画面。

初期のバージョンのWorldWideWebは、単一のファイルしか読み込まず、HTML中に画像などの外部ファイルへのリンクがあってもそれらを取得して行く動作はしませんでした。当然バーチャルホストやリダイレクトにも対応出来ず、現在のWebページをマトモに表示(というか取得)する事さえ出来ません。ただ、HTTPの仕様が固まり、NEXTSTEPの開発環境と共にWorldWideWebのバージョンが新しくなるにつれ、同じウィンドウ内でテキストと画像をインラインで表示出来る様になる等、徐々に現在のものに近づいて行きます。(下の画像は『Nexus』と改名された後のバージョン2の画面)

試しに、自前のWebサーバにアクセスしてどのようなHTTPリクエストを出しているか見てました。

初めのバージョンではGETメソッドとファイルのパスのみでHTTPのバージョン表記さえありませんが、

GET /manual/index.html.en HTTP/1.0\r\n比較的新しいバージョンでは上記の様に見慣れたHTTPヘッダを持つリクエストを出す様になっています。Acceptヘッダに記述されている、ブラウザが受け入れ可能なファイルのタイプとして、『Postscript』が指定されているのは、主に研究機関で利用されていた事に由来しているんでしょうか。
Accept: */*; q=0.300\r\n
Accept: application/octet-stream; q=0.100\r\n
Accept: text/plain\r\n
Accept: text/html\r\n
Accept: */*; q=0.050\r\n
Accept: audio/basic\r\n
Accept: image/x-tiff\r\n
Accept: image/gif; q=0.300\r\n
Accept: application/postscript\r\n
User-Agent: CERN-NextStep-WorldWideWeb.app/1.1 libwww/2.16pre1\r\n
\r\n
また、WorldWideWebは表示しているページを直接編集出来るエディタとしても機能する等、現代のブラウザからは消えてしまった機能も持っていました。選択されているテキストのタグを表示してスタイルを変更する事も可能です。

以上、ざっと駆け足で見てみました。当時のネットワーク環境も良くわからないのでもっとじっくり見てみないと不明な部分も多く、間違った解釈をしている点もあるかも知れません。MacOSXが語られる時にそのベースとなった『NEXTSTEP』の文字は良く見かけますが、その割に露出は少ない様な気がするので、少しでも参考になればと思います。
■参考リンク
『NeXT Computer Historical Site』
『Web Browser History - First, Early』
『World Wide Web@20』
『evolt.org - Browser Archive』
『日本最初のホームページ』
画像のクリッピングパスをもう一方の同じファイル名の画像にコピーするAppleScript
地味な実用系スクリプト。
時々、入稿されてきたRGB画像が数百点にのぼり、しかもその画像を結構な短納期でキリヌキと色調補正&CMYK変換をしなければならない事があって、そんな場合はキリヌキを(海外の協力会社などに)外注し、同時進行で色調補正の作業をするんですが、後で仕上がってきたキリヌキ画像のクリッピングパスを、手元で色調補正していた画像に反映させてやる必要が出てきます。その作業を自動化するためのAppleScriptです。
実は、たけうちとおるさんのサイトにそのまんまの機能のAppleScriptがあったんですが、自分の作業環境だと意図しない動作をするようだったので、少しチェックをきつめにするようにして書きました。
■使い方
あらかじめ『キリヌキ済み(クリッピングパスがある)画像』と『キリヌキ前の画像』のフォルダを作り、その中に(対になる様)画像を整理して入れておきます。(必ずしも数が合っている必要はありませんが、後でチェックする事になるので始めのうちに揃えておいた方が良いでしょう。)
スクリプトを実行し、『キリヌキ済み(コピー元)』と『キリヌキ前』のフォルダの場所を聞いて来るので、それぞれを選択してやるとPhotoshopでの処理が始まり、キリヌキ済み画像のクリッピングパスをキリヌキ前の同名の画像に適用して行きます。
下記の様な、正しく処理出来なかったファイルは『赤ラベル』が付いて確認作業がしやすいようになっています。
・双方のフォルダで一致するファイル名のものが無かった。
・コピー元の画像にクリッピングパスが無かった。
・コピー先の画像には既にクリッピングパスがあった。
・Photoshopで開けなかった。
・…etc.
■動作確認
MacOSX 10.5.8
Photoshop CS4
時々、入稿されてきたRGB画像が数百点にのぼり、しかもその画像を結構な短納期でキリヌキと色調補正&CMYK変換をしなければならない事があって、そんな場合はキリヌキを(海外の協力会社などに)外注し、同時進行で色調補正の作業をするんですが、後で仕上がってきたキリヌキ画像のクリッピングパスを、手元で色調補正していた画像に反映させてやる必要が出てきます。その作業を自動化するためのAppleScriptです。
実は、たけうちとおるさんのサイトにそのまんまの機能のAppleScriptがあったんですが、自分の作業環境だと意図しない動作をするようだったので、少しチェックをきつめにするようにして書きました。
■使い方
あらかじめ『キリヌキ済み(クリッピングパスがある)画像』と『キリヌキ前の画像』のフォルダを作り、その中に(対になる様)画像を整理して入れておきます。(必ずしも数が合っている必要はありませんが、後でチェックする事になるので始めのうちに揃えておいた方が良いでしょう。)
スクリプトを実行し、『キリヌキ済み(コピー元)』と『キリヌキ前』のフォルダの場所を聞いて来るので、それぞれを選択してやるとPhotoshopでの処理が始まり、キリヌキ済み画像のクリッピングパスをキリヌキ前の同名の画像に適用して行きます。
下記の様な、正しく処理出来なかったファイルは『赤ラベル』が付いて確認作業がしやすいようになっています。
・双方のフォルダで一致するファイル名のものが無かった。
・コピー元の画像にクリッピングパスが無かった。
・コピー先の画像には既にクリッピングパスがあった。
・Photoshopで開けなかった。
・…etc.
■動作確認
MacOSX 10.5.8
Photoshop CS4
tell application "Adobe Photoshop CS4" set ru to ruler units of settings set ruler units of settings to cm units end tell tell application "Finder" set srcFold to (choose folder with prompt "クリッピングあり画像(コピー元)のフォルダを選択") as string set srcFold to srcFold as string set destFold to (choose folder with prompt "クリッピングなし画像(適用先)のフォルダを選択") as string repeat with theFile in list folder destFold without invisibles set theFile to (destFold & theFile) as alias if not class of ((properties of theFile) as record) is folder then my setLabel(theFile, 2) end repeat set destFold to destFold as string repeat with theFile in list folder srcFold without invisibles set srcFile to (srcFold & theFile) as alias if not class of ((properties of srcFile) as record) is folder then try set destFile to (destFold & theFile) as alias my mergePath(srcFile, destFile) on error --コピー先のファイルを開けない(存在しない)場合もコピー元に赤ラベルを付ける my setLabel(srcFile, 2) end try end if end repeat end tell tell application "Adobe Photoshop CS4" set ruler units of settings to ru end tell activate me beep if my chkLabel(srcFold) or my chkLabel(destFold) then display dialog "処理に問題のある画像があります。" & return & "双方のフォルダの『赤いラベル』のファイルをチェックして下さい。" with icon 0 else display dialog "終了しました。" end if on mergePath(srcFile, destFile) tell application "Adobe Photoshop CS4" activate open srcFile showing dialogs never set srcDoc to current document set pathItem to path items in srcDoc whose kind is clipping if (count pathItem) is 0 then my setLabel(srcFile, 2) close srcDoc return end if --クリッピングパスが存在せず下の行の処理に失敗すると以降の記述が実行されない場合がある?(エラーは出ず再現条件不明) set cp to entire path of path items in srcDoc whose kind is clipping close srcDoc my setLabel(srcFile, 4) open destFile showing dialogs never set destDoc to current document if (count (path items in destDoc whose kind is clipping)) is 0 then make new path item in destDoc with properties {entire path:cp, name:"Clipping", kind:clipping} my setLabel(destFile, 4) close destDoc saving yes else close destDoc end if end tell end mergePath on setLabel(theFile, col) tell application "Finder" set label index of theFile to col end tell end setLabel on chkLabel(theFolder) tell application "Finder" repeat with theFile in list folder theFolder without invisibles set theFile to (theFolder & theFile) as alias if label index of theFile is 2 then return true end repeat return false end tell end chkLabel