2009年04月21日

『DEBUG HACKS』



/

takesakoさんがすでにレビューを書かれているけど、私のところにも献本いただいたので(ありがとうございます!)、ひととおり読んでみた。

オライリーのHACKSシリーズは、「単発だとブログのネタかWeb記事くらいにしか商業的にできないよねぇ」というちょっとニッチな小ネタ話題をある大まかなテーマで網羅的に収集している。「基礎知識から徐々にステップアップして…」といった構成のがっちりした書籍に比べると情報が散在してわかりにくいという欠点はあるけれども、「〜をしたい」という目的ドリブンな読み方・調べ方には便利だし、著者が身軽かつ楽しく自分が好きなものを書けるという利点があると思う(ただ、本書については発行スピードが最優先だったのか、日本語の品質にちょっと首をかしげるところも散見されるが)。

本書はその名のとおりコードの「デバッグ」がテーマだ。本書の「はじめに」でも述べられているように、プログラミングの入門書はあっても、デバッグの入門書というのはこれまで存在しなかったジャンルだ(テスト手法やコードレビュー手法などは人気だが)。本書ではフリーソフトウェアにおけるデバッグツールの代表格のgdbの使用方法を詳細に説明するほか、x86/x86-64のアーキテクチャおよびアセンブリの知識、valgrind等のツールの使用方法などを紹介する。gdbについて実践的に記述された書物というのはそれだけでも貴重だ。

ページの多くを割いて説明しているのが、LinuxカーネルおよびGNU/Linuxユーザランドアプリケーションのデバッグだ。吉岡氏を始めとする著者陣はすべてMiracleLinuxの社員で構成され、特にカーネルのデバッグについては序文を寄稿されているMatz(まつもとゆきひろ)氏が言うように「歴戦のプログラマが経験から獲得したバグの見つけ方・直し方が満載」である。Oopsの解析、クラッシュダンプ、ロックやセマフォの解決、OOM Killer、プロファイリングなど、著者陣の血から得られたLinuxカーネルのデバッグハックが数多く盛り込まれており、価値が高い。「Linus gitリポジトリを追いかけたらもう直ってました!」というオチが多いのは涙を禁じ得ない(古いカーネルを保守し続けるという業)。

GNU/Linuxについて深く記述されているということは、逆に言えば、MacOS XやWindowsといったほかのOSのプログラマにとっては、本書をデバッグの参考書として使うにはだいぶ物足りないものに感じるだろうということだ。本書が『BINARY HACKS』に「インスパイヤ」されて生み出されたように、『DEBUG HACKS MacOS X編』『DEBUG HACKS Windows編』といった書籍が登場することを期待しよう。

GNU/Linuxにかかわっている職業プログラマおよび趣味プログラマには、持っておいて損はない1冊だ。

ビーフシチュー

18日の補完。ジム帰りで汁気のあるものが食べたいね、ということで。ごろごろとでかい肉を入れてみた。コスモのフレークだけだとちょっと甘くて一本調子なので、少々の赤ワインビネガー、コショウ、タイム、ナツメグ、オールスパイスと加えて調整。

牛肉の春ごぼう巻き、豆腐とワカメの味噌汁

17日の補完。形が悪くて写真映えもしないのになっちゃったけど、軽く茹でて牛肉で巻いたごぼうは、泥臭さがなく、食べると味が染み出てきてとても美味。これはまた作ろう。

タイとトビウオの刺身、さつまいもの煮物

16日の補完。旬ということで安く売られていた刺身を購入。トビウオの刺身は初めてかも?アジとイワシの味に似てる。骨かウロコかがついていてちょっと固いところがあった。

鶏肉とナスのバルサミコ酢パスタ

14日の補完。定番だけど、諸所の事情で鶏肉多めになってしまった…。

鶏肉と野菜の煮物

13日の補完。鳥手羽元、筍、こんにゃく、じゃがいも、人参、玉葱、ごぼうを醤油味で圧力鍋を使って煮込む。鳥がほろほろしておいしい。

蒸し鳥のタイ風ごはん

11日の補完。だいぶ間が空いてしまった。カオマンカイは鶏肉入れて炊き込むんだけど、こちらは蒸し鳥にナンプラーなどの味をつけてごはんに載せるだけ。ちょっと塩気を強くしすぎた。