Inside Linux Software
先日makeについてエントリを書いのですが、書きたかったこと(以上のこと)が本書に載っていました。タイトルからはなんとなく、カーネルだとか、ディストリビューションの構成について書かれた本のように想像してしまいますが、そうではなく、筆者がはじめにに書いている通り、オープンソースの世界に貢献するための、技術的な一般教養について語った本です。ただ、gccがコンパイルとリンクでどのようなことをするのか、makeはどのように実行されるのか、パッチの作り方や当て方はどうするのか、などについて背景や仕組みから詳細に述べられており、オープンソースに限らず、Linux上で開発を行っているプログラマ全般にとって、ステップアップのために有用だと思いました。特にgccがコンパイルとリンクで何を行うのかについては恐ろしく詳しく書いており、大変ためになりました(プリプロセス後のソースの出力の仕方、コンパイル後のアセンブリコードの出力の仕方、静的/動的ライブラリの作り方、両者のメリット/デメリット、動的ライブラリの検索パスの決まり方、などなど)。gccって、いろんなツールを呼び出してコンパイルやリンクをしてたんですね。知りませんでした。
さて、本書は以下の6章からなっています。
- プログラムのコンパイルとリンク
- ビルドの自動化とautotools
- ソフトウェアの国際化
- パッチの作成と適用
- ドキュメントの記述
- RPMによるソフトウェア管理
このうちの、2.ビルドの自動化とautotoolsのうちのautotoolsの話や、3.ソフトウェアの国際化、5.ドキュメントの記述、6.RPMによるソフトウェア管理、の部分はおそらくオープンソース以外ではほとんど関係しませんが、1.プログラムのコンパイルとリンク(gcc)、2.ビルドの自動化(make)、4.パッチの作成と適用については、上で述べたとおりLinux上での開発一般に通用するため、開発者な方は読んでおいて損はない、というか、大変有益だと思います。それ以外の部分は、正直オープンソースな人でなければあまり関係がないかなぁ。configureスクリプトって作ったりします?逆にconfigureスクリプトを作りたい人、configureって何やってるの?を知りたいという人はぜひ読みましょう。
本書はその内容の濃さもさることながら、論理的な分りやすさ、読みやすさでも優れています。こんなに分りやすくmakeの動きを説明してもらったのは初めてです。自分が書こうとしていたことがより分りやすく書かれていました。著者の佐藤竜一という人は今まで知りませんでしたが、恐るべしです。もうひとつ特筆すべきはブックデザインです。佐藤雅彦的なハシラのデザインも特徴的ですし、表やサンプルコードがページをまたがる時には、下にNEXTの印がついたり、表の罫線が下まで突き抜けていたりと、読みやすさにも配慮されています。(巻末を見るとブックデザインは佐藤有という人ですね。佐藤つながりで何かあるのか?と思いましたが、佐藤さんって日本で一番多いんでしたっけ。おそらく単なる偶然ですね。。。)
あえて言うと欠点が二つ。ひとつは、誤字が脱字が多少あること。尤も、僕の気づいた範囲では、内容を誤解したり、分りにくくなっているわけではないので、本質的な問題ではないと思います。もうひとつは、文中の注が、各節の末尾にまとめてあり、しかも章毎の通番になっている(節をまたがった番号が振られている)ため、アクセスし難い事。おそらく脚注としたかったところが、デザインの関係上、節の末尾に置かざるを得なかったのではないかと思いました。
というわけで、オープンソースの世界に本格的に足を踏み入れたい人は、本書を買っておくときっと時間の節約になるでしょう。オープンソースでなくても、Linux上で開発をしている人はコンパイルにまつわる色々なことについて深い知識を得ることができ、やっぱり時間の節約になるでしょう。
ソフトウェア(ソースコード)とハードウェアとの間の隙間を埋めてくれる本のうちの一冊です。おススメ。
| 固定リンク
この記事へのコメントは終了しました。


コメント