このページの本文へ

基礎から覚える 最新OSのアーキテクチャー 第3回

OSの仕事はハードウェアをアプリから「隠す」こと?

2011年08月26日 12時00分更新

文● 塩田紳二

  • この記事をはてなブックマークに追加
  • 本文印刷

 このように、OSがデバイスを抽象化することで、アプリケーションとデバイスの関係はどんどん“薄く”なっていく。例えばフォトレタッチソフトのように、マウスカーソルの位置を常に把握する必要のあるアプリケーションでも、デバイスの状態を見るのではなくポインターの位置を取得すれば事足りるので、マウス自体は気にせずにアプリケーションを作ることが可能になるわけだ。

 画面をタッチして操作する「Windowsタッチ」機能は、Windows 7から標準で組み込まれたが、Windows 7以前に作られたプログラムであってもタッチで操作できるのは、アプリケーションはポインターの位置を見て動作するのであって、マウスの状態を見て動作するようになっていないからだ。

 抽象化と言うと少し理解しにくいかもしれない。要は「エプソンのPX-201」というハードウェアを、印刷機能を持つ「プリンター」という本質的な部分だけにしてしまうことが抽象化である。OSは抽象化によって、アプリケーションに印刷の機能を提供しているわけだ。

Windowsが登場した理由のひとつは
デバイスの多様化に対応するため

 そもそも初期のWindowsは、当時のMS-DOSでアプリケーションを作るときに、さまざまなデバイス、特に多数のグラフィックスカード(ディスプレーアダプター)やプリンターなどに対応しなければならないことを、解決するために開発された。

 例えば「IBM PC」の表示機能はディスプレーアダプターとして、マザーボードに装着する拡張カードとして実現されていた。現在まで続くパソコンの基本的なスタイルを作った「Apple II」では、表示機能はマザーボードに組み込まれていたが、IBMはこれを拡張カードとして分離することで、用途に応じた表示機能への切替や、あとから高性能なカードへと変更することを可能にした。

 これはこれですばらしい発想なのだが、多数のサードパーティーからさまざまなディスプレーアダプターが登場すると、今度は、アプリケーションがそれぞれに対応するのが大変になってきた。IBMが用意したディスプレーアダプターには、「CGA」や「MDA」、「EGA」などがあった。

 さらにサードパーティーからは、CGAを高解像度化したものや、IBMの仕様とは関係ない独自製品などが登場した。これらは高性能化したため、IBMのCGAなどと互換性があっても、ビデオメモリーのアクセスタイミングを変える必要があるなど、個別対応が必要なこともあった。そのためアプリケーション開発の多くの部分が、画面の制御や表示に関わるものになってしまっていた。

 マイクロソフト自身も、表計算ソフト(当時はMultiplan)やワープロソフト(Word)を開発していたから、この問題には気づいていた。そこで開発に取りかかったのが「Interface Manager」と呼ばれる新しいOSだった。のちにWindowsと呼ばれることになるこのシステムは、グラフィックス用のAPIを装備しており、アプリケーションは画面の解像度やディスプレーアダプターの種類に応じて処理を切り替えることなく開発できた。

 しかしWindowsが実現しようとしたのは、単純なグラフックスの抽象化ではなく、ユーザーインターフェースの抽象化とでも言うべきものだ。ウインドウやダイアログ、ボタンやテキスト欄といったユーザーインターフェースの部品を作り、これを使ってアプリケーションを作るといったものだった。

 その他のデバイス、例えば、シリアルポートやプリンター(パラレルポート)、キーボードなどといったデバイスは抽象化され、複数のアプリケーションから利用できるようになった。また、複数のアプリケーションを同時に起動して、動かすことができるようにもなった。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン