これは、1991年に書いたものです。
はじめに
われわれの回りには大小さまざまなコンピュータがつかわれている。大学の研 究室のみならずオフィスでもパソコン、オフコン、ワープロといったいろいろ な種類のコンピュータが導入されている。
数年前までは、コンピュータはたいへん高価であり、なんとかしてこの高価な 機器を有効に利用しようと考えられてきた。ところが、現在ではコンピュータ は数年前の性能をしのぐようなものが廉価になりデスクトップに置かれるよう になってきた。このような変化の中で、共有すべき対象が機器から、その上で 取り扱われる情報へと変化してきた。
コンピュータの利用と、ネットワークはいろいろな形で関わっている。ネット ワークの開発の歴史は高価な機器の共有に端を発しているが、それが現在では 情報を共有することがもっとも重要な目標に変わった。
大小さまざまなコンピュータは、性能、用途もさまざまである。またコンピュー タ側の得手不得手がある。人間がディスプレイに向かって操作するコンピュー タと、大量の数値計算を伴う大規模なシュミレーションを行なうスーパコンピュー タとでは要求される能力には違いがある。つまり特殊な数値計算能力を有する スーパコンピュータにテキストエディタの面倒をみさせるのは無駄が多いとい うことである。現在の技術では対照的な能力を1つのコンピュータが満たすこ とを要求するよりは、別々のコンピュータで実現したほうがコスト的にもパフォー マンス的にも有利であることが多い。
スーパーコンピュータの例をあげるまでもなくわれわれのまわりにあるさまざ まなコンピュータ、ワードプロセッサ、パーソナルコンピュータ (PC)、ワー クステーションにも得手不得手があることがわかるだろう。ユーザの好みも反 映され、PC の好きなユーザもいれば、Macintosh が大好きな人もいる。はた また UNIX でなければ許せない人もいる。
それぞれコンピュータの特徴を生かし、ユーザの好みを受け入れることをコン ピュータに望み、もっとも重要なものはそこで共有される情報であるという立 場に立ったとき、これを統合する技術がコンピュータネットワークである。
コンピュータネットワークの形態
現在コンピュータを使った”ネットワーク”と呼ばれるものには、2種類ある。 一つはパソコン通信に代表される分散端末ネットワークであり、もう一つは計 算機同士を対等に相互接続をしたネットワークである。
分散端末ネットワークは、中央集権型のネットワークである。パソコン通信に 代表されるこの形態は1つの組織によるサービス提供のためのネットワークで ある。基本的な処理は中央のコンピュータで行ない、そのサービスをネットワー クを介してユーザが利用する。ユーザ側の端末装置は、単なる端末としての機 能を果たせばよくコンピュータらしい高度な機能を要求されることはまれであ る。
これに対して、コンピュータ同士を対等に相互接続したネットワークは、主に UNIXワークステーションを中心としたネットワークで発展している。標準的に は Ethernet などのさまざまな媒体上にサービスを提供するコンピュータが散 在していて、それそれのコンピュータから互いにサービスを利用できる。ネッ トワークは電話と同じようなコミュニケーション媒体を提供している。このよ うに構築された大規模なネットワークがアメリカの Internet であり、日本で も WIDE Internet を中心とするいくつかのプロジェクトによって構築されて いる。
サーバとクライアント
ネットワーク上に散在するコンピュータを連携させ、全体として大きなシステ ムを構築するとき、個々のアプリケーションやサービスを実現する考え方のもっ とも基本的なものの1つがサーバ、クライアント型のソフトウエアである。
現在もっとも普及しているディスクファイルの共有の形態では、大きなハード ディスクが接続されているマシンがファイルサーバとなる。NFS などの分散ファ イルシステムでは、クライアントのソフトウエアによって自分のマシンに直接 接続されているディスクと、ネットワーク経由で共有しているディスクとを ユーザから見かけ上は全く同じようにアクセス可能である。
ネットワークで結合されたマシンがサーバのファイルをアクセスする場合は、 クライアントとなるマシンで、ディスクアクセスのリクエストが生じる。リク エスト先がネットワークで接続されたサーバ上のファイルであるとわかると、 クライアントはサーバに対してファイルをアクセスする要求を出す。サーバは これを受けとると実際にディスク上にあるファイルの実体にアクセスして、そ の結果をクライアントに返す。クライアントのソフトウエアがこの差異を吸収 して、普通のディスクファイルと同じように見せかける。
サーバとクライアントの間の通信はある決まったプロトコルによって行なわれ る。そのためネットワークを介して見た場合、サーバとなるマシンのハードウ エア、OSはどんなものであるかはクライアントにとって問題ではないし、また クライアント側でユーザに対してファイルを見せるときには、例えばサーバが UNIX であっても、クライアントが MS-DOS であったら、あたかも MS-DOS の ファイルであるかのように見せかけることができる。
この例からもわかるようにサーバもクライアントもそれぞれのコンピュータの 上のソフトウエアであり、別々のコンピュータで動く独立したものである。そ こで共通なのは取り交わすサービスのみである。 分散端末ネットワーク、つまり端末をホストコンピュータにつないで利用する パソコン通信などの場合も広い意味でのサーバ、クライアントと見なすことが できるが、クライアントに要求される能力が非常に低い。ネットワークアプリ ケーションとしての、サーバ、クライアントの場合、それぞれの特性を生かし、 役割分担をして負荷を分散することを目的にしている。そういった意味では分 散端末ネットワークでは負荷のほとんどすべてがホストコンピュータにあり負 荷分散は行なわれていない。
インタラクティブなユーザインターフェースを提供することはかなりの負荷を コンピュータに与える。最近の Window システムがどの程度にハードウエア資 源を必要とするかを見るとそれがよくわかるだろう。
UNIX の標準的なウインドウシステム X-window もサーバ、クライアントの考 え方に基づいている。ユーザ側のコンソールでは、Xserver が動作している。 Xserver はクライアントプログラムからの命令を受けとって、それをビットマッ プディスプレイに展開して表示したり、クライアントプログラムに対してユー ザからの入力を渡したりする。それぞれのビットマップディスプレイ上の作画 はXserver が処理し、クライアントプログラムはビットマップの操作は一切考 えず、線を引いたり、色をつけたり、文字を書いたりする命令を送るだけであ る。
Xserver とクライアントプログラムとの間はネットワークを経由した通信でも 可能で、Xserver の動いているマシンと、クライアントとは別のマシンで動か せる。たとえばスーパコンピュータでクライアントプログラムを動作 させて、ネットワークでつながっている手元のカラーディスプレイに表示する ことも可能である。このXserver の機能だけを実装したものが、X端末(X terminal) である。逆に X-window のクライアントプログラムは Xserver が 動いているマシンと通信ができるなら、どんなコンピュータでも動作させる ことができる。
X-window は、Xserver というウインドウベースの一連の描画命令を解釈し表 示するサーバがユーザ側に存在して、リモート側のコンピュータで実行される プロセスのウインドウを表示するものである。この場合、ユーザの手元にある のはビットマップディスプレイという資源を取り扱うサーバということになる。
サーバ、クライアント型のアプリケーションとして、NFS と X-window という 2つの例を上げたが実は同じであるといってもその中身はかなり違う。NFS は クライアントとなるマシンにとっては、通常のディスクアクセスと全く同じよ うに見えるというサービスを提供するが、これはオペレーティングシステムが 提供しているディスクファイルへのアクセスと同じ最も低いレベルでのインター フェイスである。通常の UNIX システムにおいては NFS クライアントと しての機能はカーネルに組み込まれている。
低レベルでのサービスはユーザには便利に映る。ユーザはローカルシステムの ディスクとリモートシステムのディスクの差を意識する必要がないので、アプ リケーションに一切変更を加えずに済む。しかし、これをファイルの読み出し だけに使っている分には全く問題が生じないが、書き込みを行なおうとすると さまざまな問題が生じる。これはマルチユーザシステムにおいて複数のユーザ が1つのファイルにアクセスする場合と同じであるが、これをそのまま分散シ ステムでも引き継いでしまう。またネットワーク上のトラフィックにも不利が ある。現在のコンピュータ環境では、CPU は十分早くそれにくらべてネットワー クは遅い。ローカルディスクに対するアクセスに比べると、NFS はやはり遅い。 このような状況で、大量のデータの中から欲しい情報を検索することを考えて みよう。
NFS を使う場合、ユーザ側からはすべてのデータがあたかも自分の手元にある ように見える。通常のファイルアクセス手順をつかってこれにアクセスをする と、実際にはファイルのすべてがネットワーク上をながれることになる。ただ でさえディスクアクセスの多い仕事は CPU にとって遊びの多い仕事であるの にこれがネットワークによってさらに遅くなる。また、ネットワークという有 限の資源を考えた時にも無駄が多すぎる。
そこで、よりアプリケーションに近いサーバを考えることになる。JUNET に代 表される分散ネットワーク上では分散電子掲示版ともいえるネットワークニュー スが運用されているが、ここで使われている nntp (Network News Transfer Protocol)が単純でわかりやすい一例として挙げられるだろう。
nntp は分散システム間でニュース記事を転送するサービスを備えているが、 今はニュースサーバとしての働きだけに注目する。ネットワークニュースは一 つのコンピュータシステムの上ではいわゆる電子掲示版であると思ってよい。 UNIX の階層ディレクトリ構造を利用した階層的なニュースクループ構造をもっ ていて、個々の投稿記事が1つのファイルになっている。このニュースにユー ザがアクセスするときにはユーザ各自に各グループについて何番の記事まで読 んだかの記録が保存されていて、アクセスするごとにそれと新着記事の番号と を比較しながら読み進む。この記事をネットワークにつながった複数のコンピュー タで読もうとするときに最も簡単な方法は NFS により掲示版の実体を共有す る方法である。しかし、この方法では、たとえばタイトル一覧を作るような場 合には、すべてのニュースの記事を NFS 経由でアクセスすることになり、本 当に欲しいのはタイトルだけであっても、検索するために余分な部分も見なけ ればならない。これがすべてネットワークトラフィックとして発生する。そこ でnntp server (nntpd) を使い、何番から何番までの記事のタイトルだけ欲しい とコマンドを送ると、その検索処理はすべてサーバ側で行なわれて必要な情報 だけがネットワーク上を送られてくる。
データベースサーバもアプリケーションに近いサーバとして実現されている。 SQL サーバというのが最近実装されているデータベースサーバであるが、これ もクライアントから、SQL というデータベース問い合わせ言語により記述され た検索手順を送るとサーバが検索を行ないその結果だけをクライアントに返す というものである。
この nntp, SQL server に共通して言えることは、ネットワークは遅く、有限 の資源であり、その間をながれるトラフィックは少ない方がいい。CPU と、そ れに直結されたディスクを含めた1つのコンピュータシステムはこれに比べて 十分早くより適切な機能をサーバに分散させるほうが効率的という考え方であ る。
nntp の場合では、サーバは単純な命令に対して答えるだけで、コンピュータ 同士の通信に都合のいいように作られているので、これに対して既存のニュー スリーダプログラムを nntp 対応にしたり、新たな nntp ベースのニュースリー ダを作ったりして、人間のオペレーションする部分での高度なユーザインター フェースはクライアント側に用意される。SQL の場合でも基本的に同じであ り、クライアント側にウインドウベースのグラフィカルなインターフェースが 実現されている実例もあるようだ。
異機種間接続のアプローチ
以上のようにネットワークを利用して、あるサーバからサービスを受ける場合 にはサーバとクライアントが同じマシンでも、同じ OS である必 要もない。しかし、ここまでの話では、サーバとクライアントが少なくとも同 じネットワークプロトコルで通信していることを前提としている。ところが現 実にあるマシンではそうはなっていない。UNIX は TCP/IP をほとんどサポー トしているし、Macintosh では AppleTalk が標準的に備わっている。パソコ ンの主力 OS である MS-DOS にはネイティブなプロトコルは存在しない。最近 では NetWare がかなり有力であるが、MS-DOS ユーザにとっては新たに付加し なければならないことにかわりない。
このような状況での相互接続にはさまざまな問題が山積している。最も簡単な 方法は、サーバと同じプロトコルをクライアントが用意することである。パソ コンに Ethernet インターフェイスを入れて、TCP/IP ソフトを載せることは そのアプローチである。このケースが UNIX と MS-DOS の組み合わせとしては 最も入手しやすい方法であり、かなりアプリケーションが整ってきている。従 来 UNIX のユーザにしか使えなかったメールやニュースを UNIX をサーバとし て、クライアントを MS-DOS マシンで実現しているソフトも存在する。このソ フトを使うと、MS-DOS ユーザは、UNIX 上のエディタやファイルの操作などを 新たに覚える必要はなく、MS-DOS の操作の延長でサービスを受けることがで きる。
NetWare はまだ未知数の部分が多いが、NetWare のサーバが TCP/IP をサ ポートする方向で進んでいるようであるし、クライアントのパソコン用のイン ターフェイスボードでは、TCP/IP, NetWare 両用のものがあり、この場合では ユーザはソフトウエアを選択するだけで、両方のサービスを受けられる。 TCP/IP と AppleTalk の間の相互接続は異機種間の接続では比較的整備されて いるものといえるだろう。
まとめ
分散している情報を有効に活用するためにはネットワークはほとんど唯一の方 法である。近年のコンピュータの急激な発達により、計算機資源よりもネット ワークのほうが高価になっている。ユーザのさまざまな要求を満たすためには、 効率的なコンピュータの選択と利用が要求される。ユーザには常に、1ヶ所か らすべての情報を利用したいという要望や、使いなれたユーザインターフェイ スで、快適なレスポンスのあるソフトウエアを使いたいという要求がある。こ のような要求に応えていくのが異機種を統合した分散コンピュータ環境である。 数少ない実現例を見るだけでも、大変好ましいプロダクトになっている。今後 の発展が期待される分野である。