PC 教室ソフトウエア ⇒ マルチウインドウ

ソフトウエア~マルチウインドウという概念

マルチタスク OS によって、 利用者は、1 つの計算機上で、 複数のアプリケーションを同時に実行させることが出来る環境を手に入れました。 しかし、 もともとは、 1 つの計算機を多くの利用者が共有して使うために、 マルチタスク OS は、開発されたのです。 以前の計算機は、運用していくために、莫大な費用がかかったのです。 この様な計算機を 1 人の利用者だけで利用していては、 対費用効果の面で問題になってしまいます。

そこで、 多くの人が同時に利用する形態を採用しました。 このため、 OS には、マルチタスク機能の実装が、必修条件だったのです。 ここで初めて、 OSで述べた、 以下の言葉が実感できると思います。

入出力装置、 CPU、 メモリなどの資源(Resource、 リソース)を無駄無く利用し、 処理時間を短縮し、 計算機のコストパフォーマンスを向上させることを目的とする、 制御ソフトウエアのこと。

OS によっては、 複数の仕事を同時に処理したり、 仕事と仕事の間の空き時間を有効利用するようにしたり、 物理的に搭載しているメモリ以上の容量を利用するようにしたりといった、 利用形態を可能にする。

この頃のマルチタスク OS は、 1 人の利用者が、 複数のアプリケーションを同時に実行させることが目的ではなく、 多数の利用者が、 各人 1 つのアプリケーションを使う上での、 複数アプリケーションの同時実行が目的でした。

つまり、 1 人の利用者が、 複数のアプリケーションを同時に実行させるには、 マルチタスク OS という概念だけでは足らないのです。 そのためには、 マルチウインドウという概念が必要になります。

今では、マルチウインドウという概念をさらに洗練した、 ウインドウシステムという概念上に成り立っている、 GUIGraphical User Interface)が、 当たり前の様に使われているので、 マルチウインドウという概念をスムーズには理解出来ないかもしれません。 GUI が一般的になる前のユーザインターフェース、 CUICharacter based User Interface)とは何か? を知る必要が在ります。

CUI では、 マウスを必要としません。ボタンとか、アイコンとかという、グラフィカルな表示要素も必要としません。 必要なのは、キーボートからの文字の入力と、プログラムが示してくれる文字表示による情報です。

CUI について、 Unixbash というシェルを使った場合を例にして説明します。 CUI では、起動したいプログラム(コマンド)をキーボードから入力し、 「Enter」キーを入力することで実行させます。 例では、「ls」というコマンドを実行させたところです。 「ls」の左側にある文字列は、 コマンドプロンプトと呼ばれるもので、これを表示させて、 「次のコマンド入力を待っていますよ」ということを bash シェルが伝えてくれます。

ls コマンドは、 HDD 等の二次記憶媒体に記録されている、 ファイルとディレクトリの一覧を表示してくれます。 例では、 Application Data ... Templates までが、 ls コマンドが出力してくれた、 ファイル、 および、 ディレクトリの一覧です。

ls コマンドには、 ディレクトリとファイルの一覧の表示方法について、 様々なオプションが設けられています。

ls コマンドを -F オプション付きで実行してみました。 ls コマンドが出力した内容に変化があるのが解るでしょうか? -F オプションをつけると、 ファイルなのか、 ディレクトリなのかが解るようになります。 名前の後ろに / が付いているものと、 そうでないものが在りますよね。 名前の後ろに / が付いているものは、 ディレクトリであることを示しています。

さらに...

-F および -l オプションをつけて ls コマンドを実行して見ました。 各ディレクトリと、 ファイルの詳細な情報まで表示されるようになりました。 CUI は、この様な使い心地のユーザインタフェースです。 大体の概要を理解していただけたでしょうか?

さて、 この様な CUI の環境で、 複数のアプリケーションを同時に実行させることを考えてみてください。 アプリケーション #1 と、 アプリケーション #2 を同時に起動して、 それぞれのアプリケーションにキーボードからの入力を与え、 それぞれのアプリケーションの文字表示を、 一つのキーボードと、一つの画面でどうやって切り替えて使いますか? このままでは無理があることに気が付くでしょうか?

ここで、 マルチウインドウという概念が必要になってきます。 アプリケーション #1 へのキーボードの入力や、 画面表示を行うためのスクリーンと、 アプリケーション #2 へのキーボードの入力や、 画面表示を行うためのスクリーンを、 切り替えて使うことが出来たのなら、同時に使えますね。 例えば、 Alt+F1 で、 アプリケーション #1 用のスクリーンに切り替わり、 Alt+F2 で、 アプリケーション #2 用のスクリーンに切り替わる。 アプリケーション #1 用のスクリーンが表示されているときは、 キーボードからの入力をアプリケーション #1 へ渡すようにして、 アプリケーション #2 用のスクリーンが表示されているときは、 キーボードからの入力をアプリケーション #2 へ渡す。 これでどうでしょう?

また、 アプリケーション #1 用のスクリーンに表示されている内容全部と、 アプリケーション #2 用のスクリーンが表示されている内容全部を、 それぞれのスクリーン用の記憶領域に憶えておき、 スクリーンの切り替えが起こったときに、 記憶しておいた、 それぞれのアプリケーション用のスクリーンの表示内容でもう一度画面表示を行えば、 画面が乱れてしまうことも在りません。

この様に、 同時実行されるアプリケーション毎に用意される、 仮想的なスクリーンのことを窓(ウインドウ、 Window)と考え、 その窓が同時実行されるアプリケーション毎に複数在るので、 この様な概念をマルチウインドウと呼びます。