DATE : 2008/03/29 (Sat)
「The Art of UNIX Programming」(Eric S.Raymond 著、長尾高弘 訳、アスキー、2007)を読みました。UNIX の設計やそれをとりまくコミュニティの伝統から、「UNIX では、なぜそうなっているのか」を解説する本です。
こういった、これまでにあるものを例として、その本質を抜き出して解説するという本は珍しかったので、面白かったです。特に、テキスト形式のデータの重要性を説いた部分では、実際に使われているデータファイルや、POP3 などの通信プロトコルを例として具体的に説明しています。さすがに、長年使われてきただけあって、説得力がありました。
また、マルチスレッドプログラミングに関しても面白い記述がありました。マルチスレッドプログラミングのやっかいな問題として、スレッド間で共有されているデータが挙げられます。書き換えられるタイミングを調整するのがとても難しいため、本書ではマルチプロセスへの分割を推奨しています。例えば、サーバとクライアントに分けられる場合は、サーバプロセスとクライアントプロセスに分割してプロセス間通信を行うことで、データの保護を行います(例として、PostgreSQL や X サーバなどが挙げられています)。
本書によると、そもそも UNIX の世界にはマルチスレッドの考え方がなかったようです。そのため、普段 Windows を使っている身としてはこの部分は非常に驚きました。確かに、マルチスレッドとは異なり、マルチプロセスの場合は、データへのアクセス方法がプロセス間通信に限られます。まさに、情報隠蔽の考え方だと思いました。
また、オープンソースに関わる方法についても触れられています。例えば、SourceForge などからダウンロードしたパッケージを展開すると、だいたい似通ったディレクトリ構成になっていることに気づきます。この構成は長年培われてきたもので、その意味やその理由について詳しく述べられています。また、パッチの送り方などにも触れられており、オープンソースに関わる際には貴重な指針となりそうです。
実際に使われているアプリケーションや言語などを基に解説されているため、例に用いられている中には、すでに古いものもあります。しかし、そこから抽出された本質はなかなか変わるものではありません。そのため、記述されているアプリケーションがこれから使われなくなったとしても、当分は役に立つ本と言えそうです。