Linuxを搭載した機器の組込みソフトウェアの開発を生業としています.
その仕事場に常に置いて参考にしている手放せない技術書15冊を紹介します.
かなり昔から使っている本も含まれますので現在新しい版、あるいは絶版となっているものもあるかと思います. あらかじめご承知おきください.
Table of Contents
Linux 関連書籍
Linuxカーネル2.6解読室

かなり古い本ではありますが、Linux カーネルのふるまい、kernel のソースコードを読むときに参考としています.
ここまで詳細に網羅的に解説されていて、日本語で読める本も貴重な存在です.
Inside Linux Software オープンソースソフトウェアのからくり

この本は以前にも紹介したもので, Linux kernel というよりはその周辺に関する情報が整理されて書かれた貴重な本です.
以前の記事にも書きましたが、Makefile に始まりautotools, Libtoolの解説が書かれたありがたい一冊です.
Linux Kernel Networking: Implementation and Theory

Netlink やら netfilter などの Linux kernel のネットワークまわりについて書かれた本で、幾度となく助けられてる一冊.
ソースコードと合わせて解説されているので理解しやすいです.
プログラム設計に関して
みんなのデータ構造

こちらも以前紹介したものです.
データ構造、アルゴリズムを検討するときに参考にしています.
UML モデリングのエッセンス 第3版

ドキュメントはUMLを使って表現することが多いのですが, その際に参考にしているのがこの本です.
UMLを十分理解しているとは言えないワイにとっては大変ありがたい一冊です.
プログラミング関連
UNIX Cプログラミング

今回紹介する中で一番古い本ではないかと. 1991年出版.
これも過去に紹介しています.
古さを感じさせる箇所もありますが、基本的な Unix のCプログラミングが分かり易く解説されており, ファイル、プロセス、ソケット操作等、おさらいという意味で参考にすること少なくありません.
江添亮のC++入門

C++を使って開発しており、基本的なC++の文法を調べるときに参考にしています.
ちょっと見、怖い本に見えますが、意外なほど(失礼)親切な内容.
C++以外にもMakefileの書き方, コンパイルエラーの読み方,標準入力について,Cプリプロセッサーなど一般常識の説明があって新人さんの教育にも嬉しい内容です.
サンプルコードもC++11, C++14 が普通に使われていて、C++の勉強を始めるならこれから入るのも良いかと思います.
C++11やC++14の便利さを一度体験してしまうと、それらが使えないC++99コンパイラで開発するのは苦痛以外の何物でもないです.
Effective Modern C++ ―C++11/14プログラムを進化させる42項目

ワイのC++の知識は C++03 で止まっているため、最近のC++11, C++14 を先の参考書の補足という意味でこの本も参考にしています.
特に右辺値参照について先の本と合わせて理解したときは、
なるほど!
と膝を打ってしまいました.
ちょっとこの本だけでは理解が難しいところが多いので先に紹介したような本やWeb記事と合わせて読むことが必要でした. (ワイにとっては)
ただモダンなC++によってよりコードの記述量を減らすネタはこの本から提供してもらってます.
Optimized C++ ―最適化、高速化のためのプログラミングテクニック

未だ出番は少なく、ワイの本棚の新人くんです.
無意識に利用しているコンテナライブラリ等、資源を無駄に消費した書き方を避けるために最近読み始めたもの.
これからの出番が増えそうな一冊です.
ネットワーク周辺
Linuxネットワークプログラミング

この本も以前紹介したもの.
この本は今のプロジェクトで大人気です.
先に紹介した記事にも書きましたが Netlink について日本語で読める情報が記載されているのはこの本以外にちょっと見たことがないです…
それだけ貴重な本です. 残念ながら現在絶版ですので中古市場で見かけたら買っておいた方が良いかもしれません.
DNSがよくわかる教科書

たいていネットワークがらみのトラブルを解析してみるとDNSが関連していることが多く, ときにこの本が参考となることが多いです.
JPRS が書いたこの本、分かりにくはずがありません. 業界でも出版された当時は大変分かり易いと評判となりました.
プロフェッショナルIPv6

IPv6について調査するとき、この本が無いとホントこまります.
これだけIPv6についてまとまった書籍は(洋書も含め)他に無いんじゃないか?と.
それもありがたいことに日本語で読めるのです…助かります.
最近は第2版が出ましたので機会があればそちらにバージョンアップしたいと思います.
その他
Gitによるバージョン管理

プロジェクトではソースコード管理に git を使っており、ちょっと込み入った使い方をするときにこの本が重宝してます.
git コマンドを調べる際、あるいはこういうことをしたいときにどんなコマンドを使えば良いか、という逆引きにも便利な一冊です.
入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

何かまとまった処理を自動化するのにシェルスクリプトを書くこと多いんですが、未だに for 文などの構文を永らくUnix系OSを使っているくせに覚えられません…
そのときにこの本はたいそう役に立ちます、というか無いと困ります…
Binary Hacks ―ハッカー秘伝のテクニック100選

この本、ちょっと仕事場の本棚に埋もれてて最近見てなかったんですが、この記事書くために読み直したんですが.
めっちゃいい本じゃないですか
先日、共有ライブラリについての記事書きましたが、こちらの本にさらに分かり易くかかれていて愕然としました.
ldd, readelf, objdump の説明もしっかりされてます.
そしてセキュアプログラミングの章では実戦で使える gcc の細かなオプションの解説があって、これは多くの C 言語プログラマは読むべきかなぁ、と.
番外編
Think GNU ―プロジェクトGNU日記とソフトウェアの憂鬱 単行本

今からおおよそ30年前の1993年出版.
外見もだいぶくたびれてますが、仕事のモチベーションが下がってきたときにこの本をパラパラっと眺めたりすると不思議と復活することが多い、です
GNU ソフトウェアに関する記事が多くかかれていて、まだネットが無かった時代には貴重な情報源でした.
この中に出てくるようなソフトウェアを開発出来たら、あるいは、そのようなプロジェクトに関われたらなぁ、なんて当時思ってましたが、その気持ちは今でも変わりないです.
そいういった昔の気持ちを思い出す一冊です.
以上つらつらと紹介していきましたが、何かの参考になれば幸いです
では.
“ワイの仕事場に欠かせない技術書15冊” への1件の返信
コメントは受け付けていません。