ミラクル・リナックス株式会社の精鋭エンジニアたちが、長年のLinuxカーネル開発の経験で培ったデバッグテクニックを詳解。
こころがまえから、準備、必要な知識、バグの原因をすばやく特定し修正するために便利なテクニックとツール、高度なデバッグ技まで惜しみなく披露します。
多くの事例に基づいた実際的実用的な技が満載です。
効率良くかつクオリティーの高い開発のために必須の一冊です。
ミラクル・リナックス株式会社の精鋭エンジニアたちが、長年のLinuxカーネル開発の経験で培ったデバッグテクニックを詳解。
こころがまえから、準備、必要な知識、バグの原因をすばやく特定し修正するために必要なテクニックとツール、高度なデバッグ技まで惜しみなく披露します。
多くの事例に基づいた実際的実用的な技が満載です。
Debug Hacks推薦の言葉
プログラムにはバグが付き物です。
バグは人間の予想を超えたところからやってきます。
世界最初のバグは、リレー式計算機の中にまぎれこんだ蛾だったそうです。
あわれリレーの間に挟まれた蛾によってコンピュータの誤動作が引き起こされました。
このエピソードがきっかけとなり、プログラムの間違いのことがバグと呼ばれるようになったのだそうです。
この蛾は後にCOBOLの開発者となるグレース・ホッパー女史の日記に記念として張りつけられていたと聞きます。
それから半世紀以上が過ぎ、あいかわらずバグは生み出され続けています。
「プログラムは思った通りではなく、書いた通りに動く」というのはプログラマの中に伝わる「ことわざ」のひとつです。
そして人間は間違えるものなので、プログラムの中にはバグが入り込みます。
ある意味、バグとは人間の限界を見せつけてくれるものなのかもしれません。
ほとんどのバグはちょっとプログラマを悩ませるくらいのかわいいものですが、最近はバグによって引き起こされた「事件」によって新聞をにぎわすようなこともたびたび起きています。
プログラマの仕事はプログラムを作ることですが、コンピュータが社会に浸透し、プログラムが複雑化するに従って、完全なプログラムを書くことは非常に困難になってきています。
その結果、すべてのプログラマは必然的にバグに対処する必要があります。
個人的にはプログラマの時間の大半が、バグを見つけることと、それらを直すことに費やされているのではないかと感じます。
しかし、ただやみくもにバグを探してもうまくいくわけはありません。
バグにはバグの見つけ方があり、直し方があるのです。
特にバグを見つけだし、特定するにはさまざまなテクニックが存在します。
「デバッグ」という言葉は「バグを直すこと」のような印象がありますが、実際にはどこにあるのか特定されたバグはまったく恐ろしいものではなく、たいていはすぐに直すことができるものです。
デバッグの神髄はバグの発見と特定にあるのです。
本書は歴戦のプログラマが経験から獲得したバグの見つけ方・直し方が満載されています。
特に普段はお目にかからないようなLinuxそのもののバグについてのHackは、貴重な情報ではないかと思います。
いくつかのHackは多くのプログラマが日常的に使うものではないかもしれませんが、それでもなおその発想は参考になります。
特にgdbやvalgrindやoprofileのような便利なツールについてきちんと解説してあるのがありがたいところです。
また、2つほど Rubyの「バグ」についても扱っていただいてます。
ありがたいことです。
本書がプログラマの皆さんのバグへの戦いの日々が少しでも楽になるための「道標」となることを期待しています。
2009年3月 羽田空港にて
まつもとゆきひろ --『Debug Hacks』刊行に寄せて
吉岡弘隆(Hiro Yoshioka):
ミラクル・リナックス所属のプログラマ。
カーネル読書会というLinuxの技術系勉強会を1999年から主宰している。
慶応義塾大学大学院修了。
日本ディジタルイクイップメント(DEC)研究開発センタ、日本オラクルを経てミラクル・リナックスを創業。
大学を卒業以来、数々のソフトウェア製品(日本語COBOL、DEC Rdb、Oracle 8、MIRACLE LINUX、Asianux等)の開発を行ってきた。
JIS X0208:1990/X0212:1990の標準化。
U-20プログラミングコンテスト審査委員、セキュリティ&プログラミングキャンプ、プログラミング部門主査。
大和一洋(Kazuhiro Yamato):
ミラクル・リナックスで働くソフトウェアエンジニア。
これまでは、LinuxカーネルやGLIBCまわりの仕事が中心であったが、最近では、gstreamerなどのメディア関連のハックにも精を出す。
GUIツールは苦手で、開発環境はもっぱら、vim + gcc + gdb。
大岩尚宏(Naohiro Ooiwa):
ミラクル・リナックス株式会社勤務のソフトウェアエンジニア。
携わった業務は開発よりもカーネルの調査・解析が多く、ドライバ・ネットワーク・ファイルシステムなど数多くの幅広いバグを担当。
バグであればのなんでも引き受ける。
最近ではLinuxにおける省電力を検証している。
絵は得意だが、日本語・英語が苦手。
上司にはコミュニティにパッチを出すよう急かされる。
日本を代表するLinux開発者に会う機会が多い。
安部東洋(Toyo Abe):
ミラクル・リナックス所属のソフトウェアエンジニア。
Hello Worldプログラムもロクに書けない状態からLinuxカーネルの世界に入ってしまい、泣きそうになった経験を持つ。
今までx86アーキテクチャだけだったので、執筆が一段落したらARMに挑戦しようと企てている。
吉田俊輔(Shunsuke Yoshida):
ミラクル・リナックス所属のシステムエンジニア。
どこにでもいる自称、一般人。
地方ソフトウェア企業からメーカー系SI企業を経てミラクル・リナックスに入社。
OS/DataBase/Network/仮想化等のインフラ系SE。
小江戸らぐ/YLUG(横浜LinuxUsersGroup)/USAGI補完計画等、関東近郊のOSSコミュニティに参加。
イベント参加/出展や原稿執筆を行っている。
吉岡/弘隆
ミラクル・リナックス所属のプログラマ。
カーネル読書会というLinuxの技術系勉強会を1999年から主宰している。
慶應義塾大学大学院修了。
日本ディジタルイクイップメント(DEC)研究開発センタ、日本オラクルを経てミラクル・リナックスを創業。
大学を卒業以来、数々のソフトウェア製品(日本語COBOL、DECRdb、Oracle 8、MIRACLE LINUX、Asianux等)の開発を行ってきた。
JIS X0208:1990/X0212:1990の標準化、U‐20プログラミングコンテスト審査委員、セキュリティ&プログラミングキャンプ、プログラミング部門主査。
2008年、経済産業省商務情報政策局長感謝状、楽天テクノロジーアワード2008金賞受賞
大和/一洋
ミラクル・リナックスで働くソフトウェアエンジニア
大岩/尚宏
ミラクル・リナックス株式会社勤務のソフトウェアエンジニア。
携わった業務は開発よりもカーネルの調査・解析が多く、ドライバ・ネットワーク・ファイルシステムなど数多くの幅広いバグを担当
安部/東洋
ミラクル・リナックス所属のソフトウェアエンジニア
吉田/俊輔
ミラクル・リナックス所属のシステムエンジニア。
地方ソフトウェア企業からメーカー系SI企業を経てミラクル・リナックスに入社。
OS/DataBase/Network/仮想化等のインフラ系SE。
小江戸らぐ/YLUG(横浜LinuxUsersGroup)/USAGI補完計画等、関東近郊のOSSコミュニティに参加(本データはこの書籍が刊行された当時に掲載されていたものです)
まだレビューがありません