Linux Book Review

やっぱりC言語でLinuxプログラミング

中澤勇
@IT編集局
2002/2/1

 
この4冊
Linuxプログラミングガイド
Linuxプログラミング
GNOMEプログラミング

詳解 Linuxカーネル

 Webを中心にしたシステム構築が盛んになるにつれ、C言語を使う必然性は低下したといえるかもしれない。しかし、Linuxネイティブアプリケーションやカーネル/ドライバ開発となると、やはりC言語ということになる(アプリならObject Pascalもあるが)。それに、多くのソフトウェアはC言語で書かれているから、単にソースを入手してコンパイルするだけという人でもC言語の知識があった方が何かと都合がいい。

 ただし、WindowsとLinuxでは開発スタイルは大きく異なる。そこで、今回はWindowsプログラマーがLinuxでもプログラミングできるようになる書籍を選んでみた。これらの書籍を読めば、Linuxにおけるプログラミングが理解できるだろう。

 なお、以下の書籍はいずれもC言語が使えることを前提としている。C言語自体を知らない人は、これとは別にC言語を学ぶ必要がある。

  Linuxプログラミングの入り口に
Linuxプログラミングガイド

奥脇 学 著
秀和システム 2000年10月
ISBN4-7980-0021-3
2600円

 Kylixの登場で多少は変わったとはいえ、やはりWindowsとLinuxではプログラミング・スタイル(方法)が大きく異なる。WindowsではIDE(統合開発環境)を使い、プロジェクトの管理などはIDEに任せてしまうことが多いのではないだろうか。IDEなら、細かいことを考えなくても[ビルド]ボタンを押せばコンパイルからリンクまでやってくれる。一方のLinux(UNIX)は、ソースやMakefileをエディタで書いてmakeコマンドを実行するといった伝統的なスタイルが好まれるようだ。

 両者の方法に優劣はないが、「慣れ」の問題は無視できない。IDEに慣れ切ってしまうと、すべてをコマンドで処理する方法は敷居が高く感じられる。本書は、ここでつまずいてしまった人にオススメだ。必要なツール(エディタ、GCC、gdb、CVSなど)やライブラリの概要、GCCの使い方やMakefileの書き方など、Linuxプログラミングに必要な知識を平易な言葉で解説している。本書を読めば、呪文にしか見えなかったMakefileも自分で書けるようになるだろう。ただし、プログラミングそのものについてはほとんど触れられていないので、Linuxプログラミングに必要なシステムコールやプロセス管理といった話は以下で紹介する書籍を参照してほしい。

 viやEmacsの解説にややページを割き過ぎている感はあるが、入門者とプログラミング書との間に横たわる溝を埋める役割を十分に果たしてくれる。Linuxプログラミング本を見て途方に暮れた人は、まず本書を一読してみるといいだろう。

  Linuxプログラミングの全体像を知ろう
Linuxプログラミング
例題で学ぶUNIXプログラミング環境のすべて

Neil Matthew & Richard Stones 著
ソフトバンク パブリッシング 1999年3月
ISBN4-7973-0819-2
4200円

 本書は、『Beginning Linux Programming』の翻訳書で、ファイル操作からプロセスやシグナル、プロセス間通信、ソケット、Xまで、Linux(あるいはUNIX)プログラミング全般を要領よく網羅している。各分野に満遍なく目配りされており、Linuxプログラミングを学ぶには最適といえる。

 ただし、原題の「Beginning」から連想されるほどには入門者向けとはいえない。他プラットフォーム上で、C言語をバリバリ使っている人がUNIXプログラミングを始めるという場合の「入門書」である。C言語を使いこなせない人はもちろん、Visual C++の各種ウィザードの助けがなければ開発できない人にとっては、かなり難しいだろう。

 とはいえ、LinuxやUNIXでプログラミングしたいというなら、一度は本書を手にすることをお勧めする。純粋なプログラム解説だけでなく、makeコマンドやMakefileをはじめとするプログラミングツール類やデバッグ方法、manページの書き方など、周辺知識も詳しく解説しているので、この1冊で非常に多くを学べるからだ。

 本書が物足りなくなったら、よりテーマに特化したプログラミング本をあらためて探せばいいだろう。

  GNOMEやGUIプログラムの開発を完全網羅
GNOMEプログラミング
GNOMEアプリケーション開発の基礎

山本厳淳、木本芳男、志賀誠、田中克範、岡田充 著
セレンディップ 2001年7月
ISBN4-7978-2020-9
4200円

 プログラミングの本質に違いはないとはいえ、GUIプログラミングではCUIプログラミングとは別の要素についても学ぶ必要がある。GUIのデザインやツールキットの使い方、そしてプログラムのプラットフォームとしてのデスクトップ環境などだ。

 本書は、KDEと人気を二分するデスクトップ環境「GNOME」()のプログラミング解説書である。GNOMEプログラミングの前提となる情報から丁寧に解説されており、GNOMEについて一通り学んでからソースツリーの管理方法、基本的なプログラミング方法の順番でGNOMEプログラミングの全体像を知ることができる。以降はメッセージの国際化やダイアログボックス、セッション管理、アプレットなどの各説となる。さらに、CORBAオブジェクトをアクティブにする「OAF」(Object Activation Framework)や、コンポーネントアーキテクチャ「Bonobo」など、GNOMEの基盤となる技術の使い方(プログラミング方法)についても詳述している。ついでに紹介しておくと、AppendixのGLIB/GTK+ API概要もシンプルにまとまっていて便利だ。

 GNOMEプログラミングに挑戦するなら、本書は必須といえるだろう。

注:2002年1月現在の最新版であるGNOME 1.4が対象

  カーネルハッカーを目指す人必携
詳解 Linuxカーネル

Daniel P. Bovet、Marco Cesati 著
オライリー・ジャパン
2001年7月
ISBN4-87311-048-3
5800円

 Linuxをとことん理解するのに最適なドキュメントとは? それはカーネルのソースコードだ。ここにはLinuxのすべてが記述されている。しかし、コードは膨大で、これからハッカーを目指す人はどこから手を付ければよいのか途方に暮れることだろう。

 本書は、カーネルソースをひもとこうとする人にとって、格好のガイドとなる。メモリアドレッシングやプロセス、システムコール、VFS、I/Oデバイス管理といった機能について、Linuxではどのように実装され、どのように振る舞うのか。時にはほかのUNIXと比較しながらコードも交えて解説している。Linuxカーネルの動作を理解することで、コードの解読は大幅に楽になるだろう。

 また、ほかの多くのカーネル解説書がハードウェア非依存な方針を取るのに対し、本書はx86依存部分にも踏み込んでいるという特徴がある。そのため、x86アーキテクチャに依存した部分についても詳しく知ることができる。当然ながら、本書を100%活用するにはC言語のみならずアセンブラやx86アーキテクチャの知識が必要になる。ハッカーを目指すならぜひ身に付けておきたい。

 本書は、実にオライリーらしい良書である。ボロボロになるまで何度でも読み込んでほしい1冊だ。

各書評にあるボタンをクリックすると、オンライン書店で、その書籍を注文することができます。詳しくはクリックして表示されるページをご覧ください。

Linux Square Book Review


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間