ひなた先生が教えるデバッグが256倍速くなるテクニック


今日が発売日です。2,3日前から書店に並んでいるようですが。
お値段は1980円+税です。たくさんの人に読んでもらいたいので、お求めやすくしてます。


ひなた先生が教えるデバッグが256倍速くなるテクニック
毎月の連載がこれほど辛いとは思わなかった。私は、あまりコツコツと仕事をするタイプでもないし、公私とも多忙を極めているころだったので、締め切りの一日前に徹夜して書くことがほとんどだった。


ストーリーも事前に練っていたものではなく、成り行き任せで、原稿提出後、編集の人から「ページが左半分余っているので1ページ加筆してもらえますか」なんてしょっちゅうで、ストーリーは継ぎ接ぎつぎはぎだらけ、ある意味破綻していた。


それでも本連載の類を見ないテーマ、独特の切り口は読者にも伝わり、広く読者の支持を得られた。SoftwareDesign誌の人気投票では1位を獲得したとかしてないとか聞いた。(何がどう一位なのかは詳しく聞くのを忘れた。ごめん。)


長年プログラムをしている人なら自然と(無意識のうちに)身につけているデバッグの方法論を、初心者から中級者までにわかりやすく系統立てて解説することが当初の目的だった。その当初の目的が達成できているかどうかはいま読み返してみても自信はないが、デバッグについての考え方を強烈にインスパイアさせる連載であったのだろう。初心者から上級者の人まで幅広く支持していただけたようで嬉しく思う。


読者からの感想(SoftwareDesign誌の末尾付近にある)にはずいぶんと励まされた。
この連載には、比較的多くの感想が寄せられていたと思う。ざっと紹介しよう。






連載開始直後にいただいたコメント。これでやる気が俄然up!!

ライバルは、ふしぎ先輩かと(勝手に)思った。






長年プログラムをしている人なら自然と身についていることを
明文化してみると自分でも気づかなかった新しい発見がいろいろあった。

もっと小説風に描写をいろいろ入れたかったのだけど、
私にそこまで余力はなくて…






デバッグの考え方やアイデアみたなものをキャッチ
してもらえているようで嬉しかった。

連載数回目にして読者の感想がいくつも寄せられている。
意見を参考にさせてもらいながら連載の方向性を探って行った。






早井先輩の結末はそれほど不幸なものではないと思います。

著者としても、連載中、そして連載後も、ケンイチと
早井先輩が末永く幸せになる形を模索していたので
書籍化するにあたって少し書き足しています。


連載からいろいろ学んでいただけているようで
著者冥利に尽きます。






連載がお休みだとそれだけで抗議(?)が来るような人気連載に。

私にとって、早井先輩の原型は、江川達也氏の漫画の『Be Free』の
主人公なんですよね。


学歴も経歴も年齢も名前も全部、嘘。


「あんた一体誰?」って当然読者は思うんですが、
その解答はちゃんと用意してあります。







連載後に寄せられた感想。
最後までおつきあいいただき、本当にありがとうございます。

ひなた先生は、「多くの人に多くのものを遺して行った」
と(著者としては)思いたい。

■ ひなた先生に関するトラックバック ひなた先生に関するトラックバックはこのエントリに対していただけると幸いです。 ■ 反響 『ShortCoding』本のOzyさんが取り上げてくれました。 ひなた先生本! http://d.hatena.ne.jp/Ozy/20081115/p1 いい意味で裏切られた、やねうらお著『ひなた先生が教えるデバッグが256倍速くなるテクニック』 http://d.hatena.ne.jp/gikan/20081107 ひげぽんさんのレビュー。 http://d.hatena.ne.jp/higepon/20081118/1227003369 ■ 裏話 ・早井先輩の本名は、実はこのblogで名前募集をした。→「教えて、ひなた先生!」(http://d.hatena.ne.jp/yaneurao/20050319) あとで追記するかも ■ 訂正および解説 内容の間違いやコメント欄で受けた質問の回答などはここに掲載します。 【解説】 コメント欄での質問) bool型の配列よりもstd::vectorの方が配列に使用されるメモリは少なくなる、というのは何故なのでしょうか? 私の回答) std::vectorは、STLの実験作かつ失敗作です。templateの特殊化を使えば特殊化されていないstd::vectorと同じ使い勝手で、省メモリ(1バイトを8つのboolとみなすから8倍の効率化)が実現できるかと思ったら、実際はC++が言語的にしょぼくてそんなものにはほど遠く、C++の限界が露呈したという…趣旨のことがEffective STL(→Effective STL―STLを効果的に使いこなす50の鉄則)に書かれていたと思います。 【修正】 p.92本文と脚注の「lap around」は「wrap around」の誤りです。 p.241の3行目。「this.Count = Count」とありますが、p.232のリスト3にはこの行はないです。リスト3を修正して、こっちを修正し忘れていました。リスト3のほうは、どうやっても警告は出ません。この部分はリスト3に「this.Count = Count」と追加したとすれば、コンパイル時に警告が出ると、読み替えてください。 ※ ところで、この警告は、VC++EE(Express Edition)2005/2008では出ないと本文に書いていますが、VC#2008EEで確認したら警告が出ますね。ちなみに、VC++2008はStandardでも出ないようです。Standardだめぽ…。 P.119のリスト5(SparseMatrixの実装)の5行目にあるtypedef std::pair<P,int> CP;は、必要ないです。書き残してたのを消し忘れてみたいです。 【修正】 P.17の注4 : 「原子の位置」→「電子の位置」 ■ 関連記事 実践デバッグ技法 http://d.hatena.ne.jp/yaneurao/20090604