久保田隆成
パーソナルコンピュータ(以下PC)の基本ソフトウェア(以下OS)の一つである「Windows」が昨年(2009年)10月22日、「Windows Vista」から「Windows 7」にアップグレードされた。「Vista」 があまりにもひどい OS だったからか、「7」の評判は今のところ上々である。
OS は「Operating System」 の略語である。原語「Operating System」には「基本システム」という意味合いはない。operating の動詞形 「 operate 」 の語源(ラテン語 operatus = 働いた、苦労した)より、「oper- (仕事)+ate(・・・させる、する)=仕事をさせる、働く」ことであり、その名詞形「operation」(手術《医f学》、演算《数学》、作戦《軍事》; 操作、運転、運用; 営業、経営、運営)からわかるように、手順やスケジュールに従って、整斉と効率よく仕事を実行することである。
ここで、コンピュータから見ると、「仕事をさせる」主体は、プログラム(application software;応用ソフト)であり、仕事をさせられる対象はコンピュータ(ハードウェア)である。ところで、個々の「応用ソフト」に直接コンピュータのハードウェアを使う機能を持たせることは、そのソフトウェアを開発するプログラマーに多大の負担となる。会社や軍隊など多くの組織体では、組織を実行部隊とスタッフに分け、実行部隊がその能力を最大限に発揮できるように、スタッフが計画し・調整し、実行の進捗を管理する。このスタッフに相当するのが「OS」である。
JIS によると、OS は『プログラムの実行を制御するプログラムであって、資源割り振り、スケジューリング、入出力制御、データ管理などのサービスを提供するもの』と定義されている。さらに、ソフトウェアの分類上、OS を「広義の OS」と「狭義の OS」に分けているが、単に「OS」といった場合は、「狭義の OS」を指している。
参考として、「ソフトウェアの体系」を示しておきます。
ソフトウェア体系 |
上の「ソフトウェア体系」図をみると、「OS」はハードウェアに一番近い場所に位置し、他のソフトウェアを支えていることから日本語で「基本ソフトウェア」と呼ぶことは当を得ている。しかし、この図は、各種のソフトウェアが出揃った後に体系化され命名されたものである。現代のコンピュータと同じようなアーキテクチャを持ったコンピュータが誕生した当初(1946年)は「OS」という概念はなく、その後、コンピュータの発達に伴って「応用ソフトウェア」から分化して成長してきた。最初の「OS」といわれているシステムは、1958年に出荷されたIBM704FORTRAN U用モニタシステムである。これにより、自動かつ連続的にコンピュータに仕事をさせることができるようになった。1960年代に入りソフトウェアの重要性が高まり、大型機では、「OS」が不可欠なものなった。1964年にIBMが開発した商用コンピュータ・システム IBM System/360は、本格的なOS (OS/360)を搭載した 最初の機種である。
ソフトウェアの発達に伴う機能の分化の視点から考えると、「Operating System」⇒「オペレーティング・システム」なのであり、「基本ソフトウェア」ではないのである。 なお、先に述べたJISによる「OS」の定義や「ソフトウェアの体系」は、大型計算機(汎用計算機)を想定したものであるが、基本的にはPCにも適用できよう。
コンピュータは、ユーザから見れば、仕事をする上での「道具」(Tool)に過ぎないが、他の道具が単機能であるのに対して多機能な道具である。金槌、ペンチ、ハサミ、・・・等々、その形から機能は規定され、道具として機能が単一な完成品である。勿論、「バカとハサミは使いよう」いうように、本当に使いこなすのには年季とコツがいる。
一方、コンピュータは多機能な道具である故に、「半製品」である。そして、この「半製品」である部分を「プログラム」という「ソフトウェア」で補って所要の機能を持たせている。コンピュータが誕生した初期の時代は「OS」はなかったが、ユーザは、ハードウェアの働きをを理解できる専門家であり、いまでいう「OS」の部分を補って「プログラム」を作っていた。ただし、「プログラム」を表現する「プログラム言語」は、直接ハードウェアに働きかけることができる「機械語」あるいは、それに1対1で対応している「アセンブラ言語」だった。
コンピュータの生産性を上げるためには、ハードウェアの性能の向上のみならず、ソフトウェアの生産性を上げる必要ある。このためには、プログラムを作る人(プログラマ)からみてハードウェアを抽象的に扱うことができるなければならない。この役目を果たしているのが「OS」である。すなわち、ハードウェアを「OS」というソフトウェアで包んで提供することによって、抽象的なプログラム(私たちが日常使う言語に近いプログラム言語、高級 (高水準)プログラム言語)の作動 することを保証している。
たとえば、「C」というプログラム言語で、長方形の縦、横の長さを a, b 、面積を c として、縦及び横の長さが、それぞれ、20 cm 及び 30 cm の長方形の面積を求めるプログラムは、次のように書ける。
int a, b, c; //整数変数の宣言、「int」は整数(integer)の宣言子
a = 20, b = 30; //データの格納
c = a * b;
//計算(変数 a, b に格納されている値の乗算)とその結果の格納
//「*」は乗算記号
上のプログラムには、ハードウェアは全く顔を表さないが、「OS」によって、ハードウェアである記憶領域に変数の領域が割り当てられて変数名 a, b, c が指定され、式に従って計算されて、結果が格納される。なお、上のプログラムは、プログラマが書いたままのプログラムであるので「ソースプログラム」(原始プログラム)と呼ばれ、ハードウェアからは理解できない言語である。このプログラムは、基本ソフトウェアの「言語プロセッサ」によって「機械語」に翻訳(「コンパイル」)されて初めて実行されるが、このプロセスは、プログラマの 与り知らないこと、あるいは与り知らなくてもよいことである。
道具としてのコンピュータの多様性は、プログラム(ソフトウェア)によってもたらされるのであるから、先の「ソフトウェアの体系」図に示したように、基本ソフトウェア(広義)とし、言語プロセッサ(言語処理プログラム)が最初からコンピュータに組み込まれていなくて はならない。
1970年代の初期、私は防衛庁の技術研究部門で仕事をしていたが、計算機室に設置されていたメインフレーム(大型コンピュータ、東芝製 TOSBAC5600)には 当然のことながら「FORTRAN」 が組み込まれていた。当時、計算機を管理・操作するのは、計算機室のスタッフ(室員)であった。私たち研究員(コンピュータのユーザ)は、FORTRAN プログラムが印字された IBM80欄パンチカードを計算機室の前の専用ラックに入れておくだけでよかった。後は、スタッフがこのカードを計算機に読み込ませて、ラインプリンタで打ち出された計算結果を元のラックに戻しておいてくれる。私たちは、まさしくコンピュータのユーザ(使用者)なのであるが、コンピュータには指一本も触れていない。これが、コンピュータと他の道具との違いである。
コンピュータ素子のダウンサイジングの流れなお中で、1980年代に入ると本格的なパーソナルコンピュータ(PC)の時代を迎えた。この時代のPCは正統なコンピュータの流れを汲んで、曲がりなりにも言語処理プログラムが組み込まれていた。例えば、NEC(日本電気)社製の「PC-9801」(初代機、1982年発売)には「N88-BASIC」(プログラム言語)が組み込まれていた。
現在であれば、たいていワープロソフト(例えば「Microsoft Office Word」)が最初から組み込まれているが、当時、日本では、日本語ワープロ専用機(たとえば、富士通の「OASIS」、東芝の「Rupo」など)がPCに先行して使われだしていたから、敢えてPC用のワープロソフトの必要はなっかた。ところが、1985年に、 PC-9800 用に Just System 社がワープロソフト「一太郎」を発売すると、相乗効果で、「PC-9801 VM2」はパソコン業界で独走態勢を築き、「一太郎」はワープロソフトで王座を固めた。
ワープロ専用機とPCワープロはしばらくの間、住み分けて使われてきた。私的には、PC にプログラム言語が組み込まれている限り、PC はプログラムを自分で組んで使用すべきという基本的な考えあった。どうしても、PCでワープロソフトを使わなくてはならないときは、PCに向かって「ごめんなさい」と謝ってから使ったものである。
ところが、現在は、PC といえば、ワード(「Word」)、エクセル(「Excel)が代表的なソフトウェアになり、これらのソフトウェアは最初からインストールされている場合が多い。プログラム言語などは、まったく無視されて、そのかけらもない。PCが大衆化されて、プログラミングを必要とする人口は相対的に減少してしまい、そういう層を相手にしていては商売にならないのかもしれないが、せめて「C言語」でも、そっとインストールしておいてもらいたい。
OS の目的は、毎年2回(春季・秋季)行われる情報処理技術者試験のうち、「基本情報技術者試験」と「応用情報技術者試験」の出題範囲でもあるが、その根本的な目的はシステム全体の「生産性の向上」である。さらに、ブレークダウンして示すと次のようになろう。
OSの目的:「生産性の向上」 ・・・コンピュータを取り巻く各種の資源(ハードウェア・情報・人的資源)の有効活用
「システム性能の向上」
「スループットの向上」・・・コンピュータから見た処理効率(処理量/時間)の向上
「ターンアラウンドタイムの短縮」・・・ユーザから見た処理効率(ジョブ処理所要時間)の向上
「RASIS の向上」:
Reliability(信頼性),
Availability(可用性),
Serviceability(保守性), Integrity(保全性),
Security(安全性)
「応用ソフトウェアの負荷の軽減」・・・抽象化、仮想化、ライブラリ管理など
「使いやすさの向上」
「レスポンスタイムの短縮」・・・応答時間(立ち上がり時間)の短縮
「操作性の向上」:
・ 操作の自動化
・ 入出力指示の簡素化
・ 容易なソフトウェア開発支援
・ 運用管理情報等の提供
コンピュータとその関連技術は、科学技術、特に半導体技術の成果をいち早く取り入れて時代のニーズに応えてきたが、そのインパクトは、社会や文化に変容をもたらしてきた。この意味で、特に市民権を得た PC の OS を開発する当たっては、技術面のみならず、社会的側面(例えば、日常生活における位置づけ)と文化的側面(例えば、倫理観、価値観など)を十分考慮する必要がある。