お勧めの書・バックナンバー Vol.1 by
にしだ わたる
|
Last updated
2002-08-25
|
Advanced
Programming in the UNIX Environment by W. Richard Stevens、Addison
Wesley (初版1993) 2002/02/19
![]() |
本書は故 Richard Stevens の代表作のひとつであり(氏の著作集の中では APUE と略称)、UNIX プログラミングに関するリファレンス書として世界的に有名です。「login: UNIX C システムプログラミング入門」は、タイトルの通りあくまでも入門書に過ぎません。全体像を俯瞰するには良いのですが、各論が貧弱なため深い知識は得られません。 ここで数ある UNIX 入門書には何が欠落しているのか、具体的に考えてみましょう。「デーモン」は UNIX に関わるものであれば当然知っているべき技術用語のひとつです。しかし、「その正確な定義を述べよ」との問いに答えられる人は、意外と少ないのではないでしょうか?「分かっているようで、実は分かっていない」、今のコンピューター教育が孕んでいる問題の本質はここにあると私は考えています。 しかし、さすがは Stevens 氏。本書はデーモンにまる1章を割いて、詳細な解説を行っています。この章を読めば、デーモンの技術背景が理解でき、結果として正しいコーディング方法が身に付くでしょう。これだけの解説は他書ではお目にかかれないと思います。 |
デーモン以外についても、本書の情報の正確さ、解釈の奥深さは群を抜いています。よって、UNIX プログラミングを学ぶのであれば本書以外を購入する必要はありません(ネットワークに関しては同氏の別作を)。英文の質も最高クラスですから、是非とも原書を読みましょう。おそらく多くの方が「英文ってこんなに簡単だったの?」と驚かれるのではないかと思います。日本語もそうですが、真に優れた著作は中学生でも読める明快な文章で記述されているのです。ピアソンエデュケーションから日本語版が「詳解 UNIX プログラミング」として出版されていますが、残念ながら翻訳は不完全です。同じお金を払うのであれば、原書を買いましょう。
ただし本書を読むにあたり、ふたつほど注意点を。
・本書の内容は極めて高度、かつ詳細です(百科辞典的)。情報の「重い軽い」を判断できるだけの実力を持ったプログラマーには最高のテキストですが、初学者にはお勧めできません。初めて UNIX に触れるのであれば、まずは下記の「login: UNIX C システムプログラミング入門」を参照しましょう。
・本書と言えども完全ではありません。私自身、昔この本を読みましたが、途中で消化不良を起こし何度も挫折した苦い経験があります。というのは下記で述べた通り、UNIX を学習するにはカーネルソースツリーも含めた探索が必要不可欠だからです。本書では具体的なカーネルソースまでは言及しておらず、せいぜいシェーマでカーネル内データ構造を示しているだけです。このため、どうしても「ここ一番」という大事なところで読者の疑問に答えることができません。Linux もしくは *BSD ソースツリーのダンプリストを横に置いて参照しながら読破するのが、理想的なスタイルと言えるでしょう。
本書は輪読会の教材としても、「一押し」です!
login:UNIX
C システムプログラミング入門 by 河野 清尊、オーム社(初版1992) 2002/01/30
現在、UNIX プログラミングの教科書を探している人達は日本にも多いでしょうが、残念ながら決定版と言える本を私は知りません。UNIX ネットワークプログラミングの神様、Richard Stevens 氏も "Advanced Programming in the UNIX Environment" というテキストを書いていますが、これすら私には今ひとつ・・。UNIX プログラミング教科書はおしなべてシステムコールを順を追いながら解説するスタイルをとっていますが、私は何冊読んでも「fork/exec」の意義が全く理解できませんでした。「なんでこんなもって回ったシステムコールがふたつもいるんじゃ?」という訳です。結局、カーネルソースを探索し、仮想メモリ機構まで理解が及んだ時、初めて「なんだ、そういう事だったのね!」と納得がいったことを覚えています。
つまり巷に溢れているCプログラミング教科書と同じく、表層的なプログラミングインターフェースを述べるばかりで、システムコールの技術背景まで言及している書籍がないのですね。残念ですが、これが現実です。
Linux
Device Drivers 2nd Ed. by A.Rubini andJ.Corbet、O'REILLY (2nd
Ed. 2001) 2002/01/30
![]() |
本書はこのページで紹介するまでもなく、世界的に有名な Linux デバイスドライバーに関するリファレンス書です。1998年に初版が出版されましたが、Linux
カーネルの成長に追随できなかったため、昨年夏2.4系列に対応した第二版が登場しました。オライリー・ジャパンから日本語版も出版されていますが、これは初版の翻訳です。第二版は全体的にかなりブラッシュアップされており、初版とは別物と考えた方が良いでしょう。さて、このコーナーを始めた際にバッシングはやめておこうと誓ったのですが、早速禁を犯してしまうことをお許しください。 |
原作は数あるコンピューター書籍の中でも、トップクラスの良質な英語(comfortable English)で記述されていました。文章のリズムが軽快なため、流れるように読み進めることができます。また、なにげなく書かれている説明も意味しているところが深く、感心させられました。ひとつひとつのテーマが、実に丹念な調査に基づいて解説されており、頭が下がります。ふと、このスタイルは私がただ一人敬愛するプログラミング作家、故 Richard Stevens 氏に似ていると感じたほどです。もっと早くに原著を読むべきだったと、反省することしきり。英語版は間違いなく良書、自信を持ってお勧め致します。
しかし、残念なことに日本語版はお勧めできません。日本語版には途中で首をかしげてしまうような表現が、多々見受けられます。自分の読解力に問題があるのかと、前に戻り先に進みしながら重ね読みしても、まだ内容が理解できないのです。カーネル2.4が全盛の今にあっては内容が古すぎることと相まって、読者にはかなりの混乱が起きていることでしょう。初版の英文が手元にないので厳密な比較はできないのですが、第二版の英文を読む限り内容に不明瞭な点はほとんどありません。おそらく翻訳による影響と思われます。
これだけの名著を uncomfortable Japanese にしてしまった、訳者と出版社の責任は甚大だと私は考えます。二度と同じ悲劇が起こらないよう、早急に「厳正な Reviewing system」を確立すべきでしょう。また日本語版の書評は雑誌でもかなり紹介されたはずですが、私が知る限り「翻訳に問題がある」という指摘は見たことがありません。今後雑誌出版社には、書評を依頼する際に「原著と和訳本の2冊を渡す」ぐらいの姿勢が、求められると思います。
本書に対して文句を付ける点はさしてありませんが、モジュールをデバイスドライバー実装の手段としてのみ捉えるのは少々寂しい気がします(本書に限りませんが)。モジュールはただ単にデバイスドライバーの動的インストールを目的として開発されたものではありません。ファイルシステムや実行ファイルフォーマットなど、あらゆるカーネルの機能拡張が含まれています。さらに、私が考えるモジュール最大のメリットは、その教育的価値にあります。UNIX を理解するためには、ユーザープロセス空間とカーネル固有空間のふたつを明確に区別することが重要ですが、いくらユーザーモード・プログラミングを経験したところで、カーネルの深部には到達できません。このバリアをモジュールはいとも容易に解決してくれます。
ということで、先日「モジュールプログラミングを通した Linux カーネルの理解」を念頭におきながら原稿を書いてみました。この記事はGCCプログラミング工房 第5回(UNIX USER 4月号)で掲載される予定です。
追記(2002/8/25) その後、第二版の日本語版が出版されました。購入はしたのですが、まだ中身はチェックしておりません。訳者が交代していましたので、日本語訳が適切に修正されていると良いのですが。
はじめて読む486
by 蒲地輝尚、アスキー出版 (初版1994) 2002/01/16
なお、本書では「動くコード」の提示に重点が置かれているためか、各論の説明が少々もの足りません。各論については次のバイブルを参照しましょう。
80386プログラミング
by Crawford JH and Gelsinger PP (翻訳 岩谷宏)、工学社(初版1988) 2002/01/16
本書は”はじめて読む486”と併せ、プロテクトモード・プログラマー必読の書ですが、極めて残念なことに原書・邦訳書ともに絶版となってしまいました。ここで一句、「悪書は良書を駆逐する」。
Linux
Firewalls (1st Ed.) by Robert
L. Ziegler (1st ed. 1999) 2001/12/15
![]() |
私が最近購入した原著の中で、最も手あかがついているのがこの書籍。第一版では Linux ipchains を用いて、パケットフィルタリング式ファイアーウォールの構築方法を紹介しています。昨年第二版が出たようですが、最新の Linux 2.4 iptables にも対応したようです(1/30 注文しましたので、近日中に紹介できるでしょう)。 第一章で TCP/IP 通信の基本事項をわかりやすく紹介、第二章でパケットフィルタリングとはなにかを説明した後に、第三章でブロードキャストパケット、ICMP、UDP、TCP、SMTP/HTTP などについて具体的なルール設定例を紹介しています。 雑誌や書籍で紹介されているファイアーウォール設定ルールは1ページにも満たないものがほとんどですが、Linux Firewalls を読めばこれらがいかにいい加減なルールであるか、わかるでしょう。著者が運営しているサイトは必見です。 |
Linux Firewalls は、私が自信をもってお勧めできる数少ない原著のひとつです。内容は良く練られており、掲載内容も十二分に吟味されています。この手の書籍は、しばしば本質とは関係のないところにページを割いてしまうものですが、本書籍には「冗長、無駄」と思われる点がほとんど見あたりません。
また英文は明快で、曖昧な文章がほとんど目につきません。これは私たち日本人にとって、大変ありがたいことです。以前、著者に「あなたの文章は実に明快でわかりやすい」と感想メールを送ったことがあります。この時何度かやりとりをしたのですが、彼が言うには「実は私自身はあの文章はドライすぎて好きじゃない。でも、一人のレビューアー(査読者)が厳しく文体を指導してきたものだから、あのようなスタイルになったんだ。」とのこと。なるほど、米国で書籍を発刊する際には、学術論文並み、いやそれ以上の厳しい査読が待ち受けているようです。この本を出版している New Riders という会社は、Linux Firewalls の他にも魅力的なタイトルの書籍を揃えています。装丁スタイルもセンスが良いですし、厳しい査読者を課するあたり、今後大いに注目すべき出版社と言えるでしょう。日本の出版社も見習うべし。
なお、残念ながら第一版ではそれまでテンポの良かった第3章までとは打って変わって、第4章からは同じ内容が繰り返され眠たい内容になっています。これは後半執筆中に彼を悲しい事件が襲ったことが原因のようですが、第二版では改善されていることを望みましょう。
本書は、サーバーの設定は出来るようになったが、次はセキュリティーについて勉強してみたいという人達に、最適の教科書です。なおつい最近、ピアソンエデュケーションズから和訳本が出ました。どちらの版に対応しているのでしょう?訳者は大丈夫でしょうか?いずれにせよ、英語力を磨きたいなら迷わず原書を購入しましょう。自分一人で読み進む自信がなければ、仲間を集めて週1回輪読会を開くのも良いでしょう。継続は力なり。