7. これまでに得たもの

この時点までで、どういう仕組みで X がクライアント - サーバーの アーキテクチャになっているのかがわかっただろう。ただしここで クライアントって言ってるのは自分たちのアプリケーションプログラムの ことだよ。このクライアント - サーバーのグラフィックシステムでは、 利用可能なウィンドウマネージャがいくつかあって、これが画面上の場所を 管理している。自分たちのクライアントアプリケーションもあって、そこで 自分たちは実際に作業をする。さらにクライアントは、可能なだけの いろんな種類のツールキットを使ってプログラムできるんだ。

さあ、ここからが混乱するところだ。各ウィンドウマネージャがクライアントを 管理する方法はそれぞれ異なっている。動作や飾り付けはあれとそれでは 違っている。また各クライアントがどのツールキットを使うかは決まってるから、 クライアントは互いにその外見も動作も違ってくる。アプリケーションの 作者は同じツールキットを使って、すべてのアプリケーションを作らなきゃ いけないなんてことは何も言っていないんだから、例えばそれぞれ別々の ツールキットを使って書いた、6個の異なるアプリケーションをユーザーが 走らせることだって、まったく可能なことなんだ。そしてそのアプリケーションは 全部外見と動作が別々になる。これが混乱を生み出すんだ。だって アプリ同士の動作が首尾一貫してないんだから。アテナウィジェットで書いた プログラムを使ったことがあれば、 Gtk を使って書いたものとそっくりだ とは言えないのに気づくだろう。それに外見も使い勝手もこんなに違う、 これらのアプリケーションを全部使うのがめちゃくちゃだってことも 思い出すだろう。これはそもそも基本的に GUI 環境を使う上での利点を否定する ことになるんだ。

もっと技術的な視点に立てば、多くの異なるツールキットを使うってことは、 資源の使用量が増加するってことだ。最新のオペレーティングシステムでは、 動的共有ライブラリっていう概念をサポートしている。つまり、 Gtk を使っている アプリケーションが2、3あって、しかも動的共有ライブラリ版の Gtk があれば、 ディスク上とメモリ上の両方で、この二つか三つのアプリケーションは同じ Gtk の コピーを共有するっていう意味だ。これが資源を節約するんだ。他方、 Gtk の アプリケーションがあり、 Qt のアプリケーションもあり、アテナをベースにした ものもあり、ネットスケープといったMotifベースのプログラムもあり、 FLTK を 使っているプログラムもあり、別に XForms を使ったのもあるっていうことになると、 今度は、六つの異なったライブラリをメモリにロードしていることになる。 ツールキットが違ってくれば、ライブラリも違うんだ。心に留めておいて欲しいんだ。 すべてのツールキットは基本的に同じ機能性を提供しているんだってことをね。

そこには他にも問題がある。プログラムを起動する方法がウィンドウマネージャに よっていろいろなんだ。アプリを起動する素敵なメニューがあるのもあれば、そうで ないものある。そういったものはコマンド起動ボックスをオープンするか、 あるいはあるキーの組合せを使うか、ないしは xterm を開いてコマンドを実行して アプリを起動させるといったことさえ、ユーザーに期待しているんだ。もう一度 言うけど、そこには標準化されたものがない。だから混乱するんだ。

最後に、細かい点がある。まだこの分類では扱っていなかったんだけど、GUI 環境に 期待するものなんだ。コンフィギュレーションユーティリティーとか「コントロール パネル」といったものだ。あるいはグラフィックなファイルマネージャもそうだ。 もちろんこれらもクライアントのアプリとして書くこともできる。そして典型的な フリーソフトウェアのやり方でいけば、何百ものファイルマネージャがあり、同様に 何百ものコンフィギュレーションプログラムがある。これらはたぶん、まったく 共通点がないソフトウェア要素を数多く扱わなきゃならないから、混乱を助長 するんだ。