/ «2003-12-03 (Wed) ^ 2003-12-30 (Tue)» ?
   西田 亙の本:GNU 開発ツール -- hello.c から a.out が誕生するまで --

Categories Books | Hard | Hardware | Linux | MCU | Misc | Publish | Radio | Repository | Thoughts | Time | UNIX | Writing | プロフィール


2003-12-04 (Thu)

[UNIX] man pages の正体を求めて・その2

The roff typesetting system

roff の全体像は、roff (7) にまとめられているが、同ファイルにはいくつかの亜型が存在しており、die.net のものよりは、groff-1.16 のバージョンの方がポイントが抑えられている。情報探索では、たとえ同じテーマであっても必ず複数のソースを見比べることが大切だ。後者の解説中から、重要なポイントをいくつか抜き出してみよう。

roff is the general name for a set of type-setting programs, known under
names like troff, nroff, groff, etc. The roff type-setting system consists of
a formatting language, macro packages, preprocessors, postprocessors
for output devices, user front-end programs, and conversion tools.

roff という名称は、troff, nroff, groff などタイプセットプログラムの総称であること。そして、roff システムは以下のサブシステムから構成されていることが分かる。

  • プリプロセッサ
  • マクロパッケージ
  • 書式化言語
  • ポストプロセッサ

このあたりはさりげなく書かれているのだけれど、実は極めて重要なポイント。この中で最も重要な役者は「マクロパッケージ」である。

マクロパッケージ

ということで、MACRO PACKAGES にも目を通しておく。

MACRO PACKAGES

Macro packages are collections of macros that are suitable to format a special
kind of documents in a convenient way. This greatly eases the usage of roff.
...
Famous classical macro packages are man, mandoc, and  mdoc for manual pages
and me, ms, and mm for books, articles, and letters.

roff では入力ファイルを処理する前に、マクロ定義を行うことで、より簡単に roff 言語のパワーを引き出せる設計になっていることが分かる。様々なマクロパッケージの中で、当面私達が注目すべきは man と mandoc のふたつだ。

葉を見て幹を見ず

なぜこのふたつが大事なのか?両者の重要性は、彷徨の果てに分かったのだが、残念ながら roff (7) を読んでいる限りでは、情報の取捨選択は難しい。このように、roff (7) に限らず、世の中に溢れている文書というのは、全体を通じて一本調子であり、抑揚にかけるものが多い。これは、著者自身が情報の軽重を意識して書いていないことが原因だ。「情報のごった煮」になっているのである。

論文や技術文書を読む上で、最も大切なことは「その本質を抽出する」ことにある。枝葉末節はどうでもよい。「木を見て森を見ず」という戒めがあるけれど、研究者や技術者にとっては「葉を見て幹を見ず」の方が、致命的な状態だと言えるだろう。

枝葉に隠された幹を見抜くことができるようになるためには、日頃から目の前の論文や技術資料から、「自分にとって」最も重要な一行を抽出する訓練を行う必要がある。「著者にとって重要」ではない点に注意してほしい。主体はあくまでも読者である私達にある。ゆめゆめ、著者に読まされてしまうことのないように。

History of roff

話を roff に戻そう。roff ファミリーには、ウルトラの兄弟のごとく、roff, nroff, troff, ditroff, groff など数多くの亜型が存在する。roff (7) には、一応その概略が書いてあるのだけれど、分かったようで分からない。何度読み直してもスッキリ納得できない。こんな時は、自分のオツムに問題があるのではなく、原典そのものに問題があることがほとんどである。

ということで roff (7) にはさっさとサイナラをして、次の伴侶を求めて旅に出よう。私が検索した中で、もっとも良くまとまった roff の歴史解説はこちら。短いけれど、実に分かりやすく、かつ正確に roff の歴史が書き下ろされている。「なるほど、そうやったんか!」と感嘆することしきり。歴史を知ることの重要性と、著者の力量一つで同じテーマがここまで様変わりすることに、空恐ろしささえ感じる。