このページの本文へ

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

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

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

文● 塩田紳二

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

マウスを例に見る
OSによるハードウェアの抽象化

 マウスを例に挙げよう。世の中には非常に多くの種類のマウスがある。最近はほとんどがUSBに接続するものばかりだが、Bluetooth経由で接続するものもあれば、今ではほとんど見かけないPS/2ポートやシリアルポートに接続するもの、さらには専用のインターフェースカードを持つマウスさえ過去にはあった。

 マウス自体もボタンが多数あったり、ホイールの有無など、さまざまなバリエーションがある。しかしそのマウスが「Windows用」と謳っていれば、対応するWindowsでどれも同じように利用できる。これは、OSがマウスというデバイスを「抽象化」して、どれも同じようなやり方で扱えるようにしているからである(図3)。

図3 OSはデバイスを抽象化して、その機種や構成などに関わらず、一定の手順でプログラム側からデバイスの機能を利用できるようにする

 だからアプリケーションを作る際に、そのパソコンにつながっているマウスのボタンがいくつあるのかを基本的には考える必要はないし、動作するときにどんなマウスがつながっていても、それがマウスであるかぎり問題なく利用できる。さらに言えば、アプリケーションは必要がなければ、マウスの存在自体を考慮することなく作れるが、それでもマウスを使って操作できる。

 マウスの役割のひとつは、ユーザーの操作に従って画面上の位置を指定することだが、マウス自体はディスプレーとは無関係に動き、元あった位置からの相対的な動きしか報告しない。OSはこうしたマウスの特性を考慮しながら、「マウスポインター」(マウスカーソル)を画面上に表示して、ユーザーの操作に従いこれを動かす。

 マウスは「ポインティングデバイス」と呼ばれる種類のデバイスとして管理されていて、絶対的な座標を扱う「タブレット」や、「トラックボール」などの他のポインティングデバイスも同じように利用できる。OSはデバイスがどのようなやり方でユーザーの操作をパソコンに伝えるかに関わらず、どれもがポインティングデバイスとして使えるように、個々の違いを「隠蔽」しているのである。

 では、どうやってアプリケーションはマウスを使うのか? Windowsの場合、ポインターの位置やボタンを押したことを、OSから「報告」してもらうという仕組みになっている(図4)。Windowsでは、これをAPI(Application Program Interface)という、OSがアプリケーションに対して提供している「機能」の中に持っている。

図4 Windowsにはマウス以外にも、タブレットやトラックボール、タッチパッドなど、さまざまなポインティングデバイスが利用できる。デバイスの操作をマウスポインターの動きとして表現し、アプリケーションはその位置を調べることで、マウスを間接的に利用する

 どのようなポインティングデバイスがパソコンに接続されていても、また接続方法がどのようなものであろうと、アプリケーションがAPIを使うことで、カーソルの位置を取得したり、ボタンが押されたという報告を待てばいい。細かくマウスの動きに追従したければ、そのためのAPIも用意されているので、これを使って位置やマウスボタンの状態を取得できる。

 また、ポインティングデバイスで操作する画面上の「ボタン」を扱うには、マウス自体をアプリケーションが意識する必要はない。ユーザーがボタンを押せば、アプリケーションには、「ボタンが押された」ことが報告される。

 ユーザーは実際にはタブレットを使っているかもしれないし、実はタブレットPCを使い、ペンで画面上のボタンをタップしたのかもしれない。あるいはカーソルキーでボタンを選択してスペースキーを押したのかもしれないし、ボタンに定義してあるショートカットをキーボードから入力したのかもしれない。

 画面上の「ボタンを押す」にはさまざまな手段があるが、OSはどれも同じように、「ボタンが押された」ことをアプリケーション報告するだけだ。アプリケーションはポインティングデバイスの存在自体を意識する必要すらない。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

最新記事

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

ピックアップ

ASCII.jp RSS2.0 配信中

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