マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

ドライバやドライバはなぜドライバか

えー、また「ドライバ」の話である。

前回の記事では、TeX 用語の「ドライバ」という語に少し異なる 2 つの意味があるという話をした。すなわち、「dvipdfmx 等の DVI ウェア(dvi ドライバ)」という意味と、「dvipdfmx.def などのファイル(に書かれたコード)」という意味である。前回にひき続いて、後者の概念を特に示すときは「ドライバ☃」と呼ぶことにする。

ところで、この「dvi ドライバ」の方だが、なぜ「ドライバ」と呼ばれているのだろうか。実はこれは「ハードウェアを制御するためのプログラム」を意味する「デバイスドライバ」(Wikipedia 記事)と同類の用法である。といっても、dvipdfmx しか使ったことがない人にとっては、「文書のフォーマット変換をするもの」と「ハードウェアを制御するもの」の共通点は把握しにくいと思う。この辺りの話について説明する。

「dvi ドライバ」はなぜ「ドライバ」か

この点については、dvipdfmx ではなく dvips について考えてみると解りやすいだろう。といっても「文書のフォーマット変換をするもの」という見方だけではやはり解らない。dvips が出力するものは「PostScript 文書」、つまり「PostScript 言語のコード」である。ところが、(今は知らない人が多いだろうが)PostScript(Wikipedia 記事)はもともとはプリンタなどの機械が解釈するための言語だったのである。だから dvips の出力は「PostScript プリンタの制御コード」そのものである。このように考えれば、dvips が DVI 文書に対する「PostScript プリンタ用のデバイスドライバ」であると自然に解釈できるであろう。

ちなみに、dvips が登場する前の太古の昔は、人々は“TeX の出力を見る”ために、DVI 文書を各プリンタの固有の制御コードに変換するソフトウェアを利用していた。それはまさしく「デバイスドライバ」である。実際にこの時代の dvi ドライバ(DVI ウェア)は「デバイスドライバ」と呼ばれていたらしい。

「ドライバ☃」はなぜ「ドライバ」か

一方で、“ドライバ☃”(dvipdfmx.def など)が「ドライバ」と呼ばれるようになった理由は別の所にあると、私は想像している。先掲の Wikipedia の記事で

そして、抽象化されたAPIとハードウェアとの間の対応を、各ハードウェア用のデバイスドライバが受け持つ。

とあるように、「デバイスドライバ」の存在の意義は「上位レイヤの処理を下位レイヤの処理に変換する」こと、そしてそれがあることにより「上位レイヤの仕様を共通化できる」ことにある。graphicx パッケージの“ドライバ☃”はまさにそのような役割を果たしている(この場合、上位レイヤは graphicx パッケージで下位レイヤは dvipdfmx である)。下位レイヤがハードウェアでないので“デバイス”ドライバとはいえないのだが、この点において自分は大いに「ドライバらしさ」を感じるのである。

てきとうに妄想してみる

前回の記事では「LaTeX の中の人(たち)の中で、いつのまにか『ドライバ(driver)』の意味が変わってしまっている」という話をしたが、もしかしたら次のような事情があるのかも知れない……。

昔は数多くの種類の dvi ドライバが存在していたが、時が経って(海外では dvipdfm(x) がほとんど知られていないので)dvips 一択になってしまい、そのため「dvi ドライバ」という言葉も廃れてしまった。代わりに「ドライバ依存」の対象になったのは pdftex や xetex とかのエンジンである。「ドライバ依存」や「ドライバオプション」という単語だけが残って、「ドライバ」の元々の意味が何だか判らなくなってしまい、やがて、もっと“ドライバらしい”感じがする“ドライバ☃”の方が「ドライバ」と認識されるに至った。

……もちろん、実際のところは知る術もない。まあ、たまにはドライバについて思いを巡らせるのもオツなものである……。

……なわけない! これじゃあ「ドライバ依存」についての説明が書きにくくて仕方がない! 何とかしてくれ!