😸

Apolloの「 //コンピュータ名/パス」という構文

に公開

//コンピュータ名/パスがもたらした革命とは

解決された問題:バラバラだったネットワーク上のファイル

この構文が登場する前、ネットワーク上の別のコンピュータにあるファイルを使うのは、とても面倒なことだったのだ。

例えば、コンピュータAから、ネットワークで繋がっているコンピュータBにある「設計図.dwg」というファイルを使いたいとする。昔のやり方では、まずFTP(File Transfer Protocol)のような専用のプログラムを使って、コンピュータBに接続し、ログインしてから、「設計図.dwg」を自分のコンピュータAに*丸ごとコピー(ダウンロード)*する必要があったのだ。

プログラムは、自分のコンピュータの中にあるファイルしか直接開けなかったからなのだ。これには大きな問題があったのだ。

  • 非効率性: ファイルを使うたびに、いちいちコピーする手間がかかるのだ
  • バージョン管理の混乱: 複数の人が同じファイルをコピーして編集すると、どれが最新版なのか分からなくなってしまうのだ
  • プログラムの制限: 他のコンピュータのファイルを直接読み書きするようなプログラムは、作ること自体が非常に困難だったのだ

//コンピュータ名/パスによる解決策:位置透過性

Apolloの//コンピュータ名/パスという構文と、それを支える Domain/OS は、この問題を根本から解決したのだ。

この構文を使うと、ネットワーク上のどのコンピュータにあるファイルでも、まるで自分のコンピュータのローカルディスク(Cドライブなど)にあるファイルと全く同じように扱えるようになったのだ。

//computer-b/designs/設計図.dwg

プログラムでこのパスを指定すれば、Domain/OS が裏側で自動的にコンピュータBと通信して、ファイルの中身を直接読み書きしてくれるのだ。ユーザーやプログラムは、ファイルがネットワークの向こう側にあることを意識する必要がなくなったのだ。

これを専門用語で「位置透過性(Location Transparency)」と呼ぶのだ。

なぜ技術者にとって魅力的だったのか

この「Location Transparency」は、当時の技術者にとって革命的だったのだ。

  • シームレスな共同作業:

    • 設計チームのメンバーが、中央のサーバー(例えば//server/project-x/)にある最新のソースコードや設計図を、いちいちコピーすることなく、直接自分の端末で開いて編集できるようになったのだ
  • リソースの共有:

    • 高価な大容量ディスクや高性能プリンターを一台のサーバーに接続し、ネットワーク上の誰もが//server/disk/や//server/printerのように利用できるようになったのだ
  • 管理の簡素化:

    • 管理者はサーバー上のソフトウェアやデータを一元管理でき、ネットワーク上の全ユーザーに即座に反映させることができたのだ
    • これにより、システムの運用や保守が大幅に効率化されたのだ

アプリケーションはファイル操作がローカルで実行されたか、リモートで実行されたかを知る必要がなかったのだ

The remote machine runs a server process, also called a daemon, named nfsd.
Nfsd receives the request and reads (or writes) the file, as requested by the application and returns a confirmation to the requesting machine. Then the requesting machine informs the application of the success of the operation. Of course, the application does not know whether the execution of the file operation was local or remote.

リモートサーバー上で待機している nfsd というデーモン(サーバープロセス)が、アプリケーションからのファイル操作リクエストを肩代わりしてくれるのだ。この仕組みのおかげで、アプリケーションは操作対象のファイルがネットワークの向こう側にあることを全く意識せず、あたかも手元にあるかのように自然にファイルを扱うことができるのだ。

ユーザーはファイルの物理的な場所を気にせずにプログラムを実行できたという点も特徴だったそうなのだ。

会社・OS・システムの関係なのだ

Apollo Computer, Inc.

まず、Apollo Computer, Inc.[1]は、1980年に設立された会社の名前なのだ。この会社が、高性能なワークステーションというコンピュータを開発・販売していたのだ。

Domain/OS

次に、Domain/OSは、そのApollo Computer社のワークステーション上で動いていた**オペレーティングシステム(OS)**の名前なのだ。

the Apollo domain system

これは、Apollo Computer, Inc.が作り上げた、Domain/OSを搭載したワークステーション群がネットワークで繋がったシステム全体を指す、いわばコンセプト仕組みそのものの呼び名なのだ。

このシステムの中では、ネットワーク上のどのコンピュータにあるファイルでも、まるで自分の手元のコンピュータにあるかのように、区別なくアクセスできたのだ。

そして Tim Berners-Lee は、この優れたアイデアを Web の URI 設計に応用したわけだったのだ

時代背景と市場のニーズ

1980年代は、コンピュータの歴史において非常に重要な時代だったのだ。それまで主流だった大型コンピュータ(メインフレーム)から、より小型で安価な「ワークステーション」へと需要が移り始めていたのだ。エンジニアや科学者が、自分専用の高性能なコンピュータを欲しがるようになったのが大きな理由なのだ。

Apollo Computer, Inc.は、この新しい市場のニーズにいち早く目をつけた会社の一つだったのだ。彼らは、単に高性能なコンピュータを作るだけじゃなくて、「ネットワークで繋がった複数のコンピュータが、まるで一台のコンピュータのように動く」という、当時としては画期的なコンセプトを打ち出したのだ。これが Domain System なのだ。

雑談

Apolloってスペルを何度かタイプしていて気付いたのだが Appleにそっくりなのだ。

社名に関しても、「Apollo Computer, Inc.」と「Apple Computer, Inc. (1977–2007)」。そっくり。

..と思ったが、両社の社名は音韻的な類似性があるのみで会社の方向性は全く違ったらしいことがわかったのだ。
→ 詳しくは別記事にまとめている最中なのだ(WIP)

NOTE

https://www.reddit.com/r/cassettefuturism/comments/166ddvd/the_long_forgotten_apollodomain_workstations/

I have fond memories of these - I used them in college for circuit design simulations, but the lasting effect was that it was how I learned Unix and vi.
あるユーザーは、大学時代に回路設計シミュレーションのためにApollo-Domainワークステーションを使用した「良い思い出」があると述べている

  • Apollo の workstations 市場での競合に Sun Microsystems[2] がいたという話がよく出てくる
    • Sun Microsystems といえば Java を開発したことで有名
    • Sun Microsystemsがどういう会社かについては、workstationsの話とは逸れるがJenkinsの生みの親である川口耕介さん記事がとても面白い

参考文献さま

脚注
  1. Apollo was acquired by Hewlett-Packard (HP) in 1989. https://en.wikipedia.org/wiki/Apollo_Computer ↩︎

  2. Sun Microsystems was founded in 1982, and Oracle acquired the company in 2010. ↩︎

Discussion