OSと周辺機器の間を仲介し、機器を制御するためのソフトウェア
デバイスドライバとは、OS(=Windowsやスマホの基本ソフトのこと)と周辺機器の間に立ち、機器を制御するためのソフトウェアです。単に「ドライバ」とも呼びます。プリンタ、マウス、USBメモリ、グラフィックボードなど、コンピュータにつなぐ機器にはそれぞれ専用のドライバが必要になります。
ドライバの役割は「翻訳者」に例えると分かりやすいです。OSは「印刷して」という共通の言葉(命令)を出すだけ。それを受け取ったドライバが、つながっている機器が理解できる固有の信号に翻訳して伝えます。逆に機器からの「インクが切れた」といった信号も、ドライバがOSに分かる形にして返します。
海外の取引先と話すときに通訳を間に立てる場面を想像してください。あなた(OS)は日本語で話すだけでよく、通訳(ドライバ)が相手(機器)の言語に訳してくれます。相手が変われば通訳も変える必要がある──これがデバイスドライバが機器ごとに必要な理由です。
コンピュータは上から下へ「アプリケーション → OS → デバイスドライバ → ハードウェア」という階層で動いています。命令はこの順に下りていき、結果は逆向きに上がってきます。ドライバはこの階層のOSとハードウェアのちょうど真ん中に位置します。
印刷を例に流れを追うと、次のように仲介が働きます。
・アプリ:ワープロソフトが「この文書を印刷したい」とOSに依頼する
・OS:機種を問わない共通命令「印刷して」をドライバに渡す
・デバイスドライバ:その命令を、つながっているプリンタ専用の信号へ翻訳する
・ハードウェア:受け取った信号どおりにプリンタが実際に紙へ印刷する
ここで大切なのは、OSは機器ごとの細かい違いを一切知らなくてよいという点です。プリンタがA社製でもB社製でも、OSは同じ「印刷して」を出すだけ。機器ごとの違いを吸収する役目はすべてドライバが引き受けます。これにより、OS本体を作り変えなくても、ドライバを差し替えるだけで新しい機器に対応できるのです。
世の中には無数のメーカー・無数の機種の周辺機器があり、それぞれ内部の作りや制御方法(信号の送り方)が異なります。もしOSがこれらすべての機器の違いを直接知ろうとすると、OS本体が膨大で複雑になり、新製品が出るたびにOSを作り直すことになってしまいます。
そこで機器の違いを吸収する部分だけをドライバとして切り出し、OS本体から分離しています。これには次のような利点があります。
・OSを単純に保てる:OSは共通命令を出すだけでよく、機器の詳細を知らなくてよい
・新しい機器に対応しやすい:新製品が出ても、その機器用のドライバを追加するだけで使える
・メーカーが自由に開発できる:機器を作った会社が、自社製品に最適なドライバを用意できる
身近な例で考えると、家電のリモコンに似ています。テレビもエアコンも「電源を入れる」という操作は同じですが、実際に送られる赤外線信号は機器ごとに違います。あなた(OS)は「電源オン」を押すだけでよく、機器ごとの信号の違いはリモコン(ドライバ)が引き受けてくれる──このおかげで、私たちは機器の中身を知らなくても自由に新しい周辺機器を追加して使えるのです。