SG

1年間で読んだ本のうち5本の指に入る良書

 プログラミングの勉強をするようになって1年が経ちました(勉強をする前もプログラマーではあった)。勉強会に参加したり、Ust配信を見たりしましたが、個人的に最も効率良く理解を深められたのは技術書を読むことでした。勉強会に参加するためには電車に乗らないといけないこと、Ustは配信が安定しないことがあること、長時間、液晶を見続けることの出来ない目であることも理由です。
 今年は現時点で50冊読んでいて、恐らく52冊は読みきる予定です。週刊少年ジャンプと同じ数なので、1週間に1冊は読んだということになるのかな。勉強を始めたばかりで、初心者向けの本が多かったとは思いますが、その中で他の人にも薦められる良書を紹介したいと思います。


リファクタリング―プログラムの体質改善テクニック (Object Technology Series)
マーチン ファウラー Martin Fowler 児玉 公信 平澤 章 友野 晶夫 梅沢 真史
ピアソンエデュケーション
売り上げランキング: 44264
 ご存知マーチン・ファウラー先生によるリファクタリングの実践方法が書かれた良書。全てのプログラマが読むべき本 まとめでも2位にランクインしていますね。「動いているから直さなくてもいい」と思っていた自分に喝を入れてくれた本で、リファクタリングの技術を知ることによりオブジェクト指向をより良く理解できるようになりました。

 こちらも読みましたが、「リファクタリング」で十分だと思います。


レガシーコード改善ガイド (Object Oriented SELECTION)
マイケル・C・フェザーズ
翔泳社
売り上げランキング: 36660
 「バグの無い美しいコード」を書くことが一番の目標であり楽しみである自分ですが、どうもそれが上手くできないので、どうやればいいんだろう……と悩み手に取った本。カバーの「テストがないコードはレガシーコードだ!」というキャッチコピーに釣られたのですが、釣られてよかったです。テストコードの書き方すら知らなかった自分のコードが如何にテスタビリティの低いレガシーコードだったのかを思い知らさせると共に、どうやってレガシーコードにテストコードを組み込んでいくのかを知ることができました。サンプルコードは C++Java で書かれていますが、C++ の機能を使用したテストコードの追加部分は、自分が C++ をまともにやったことがないため飛ばしてしまっています。来年ひょっとしたら C++ をやるかもしれない*1ので、そのときに読み返そうかと思っています。


デザインパターンとともに学ぶオブジェクト指向のこころ (Software patterns series)
アラン・シャロウェイ ジェームズ・R・トロット
ピアソン・エデュケーション
売り上げランキング: 77028
 オブジェクト指向をなんとなく理解できてきたけれど、上手く言語化は出来ないと思っていた頃に読んだ本。翻訳も非常に良く、自分が言いたかったことを代弁してくれていました。Bridge パターンも非常にわかりやすく説明されていて、調子に乗って買ったはいいがあまり理解できなかった GoF 本が理解できるようになりました。そういえばあれも C++ でした。C++ やれよ


 「オブジェクト指向のこころ」では GoFデザインパターンはすべて網羅されていません。この本を読んで全パターンを見ると良いと思います。結城先生の本は、どの本もわかりやすく丁寧な日本語で書かれています。「オブジェクト指向のこころ」→「Java 言語で学ぶデザインパターン入門」の順で読むのがお薦めです。
 ただし、パターン魔に陥ってしまうことには注意が必要です。「オブジェクト指向のこころ」「Java 言語で学ぶデザインパターン入門」はデザインパターンのデメリットには然程触れていないので、その点は GoF を読んでおくのがよいでしょう。

パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法
ジョシュア・ケリーエブスキー 小黒 直樹 村上 歴 高橋 一成 越智 典子
日経BP
売り上げランキング: 73092
 パターンから遠ざかるリファクタリングには、この本を読むのがいいそうです。持っていますがまだ読んでいません。あとどうも絶版のようす?


 ぶれてんてーとみずぴーさん(!!)にお薦めしてもらった OCaml の本。初心者向けの本でありながら、テストコードを記述してからプロダクトコードを書くという「デザインレシピ」に基づいたプログラミングの方法、参照透明が当然であるかのように進められるテキストの素晴らしさ。もし本当にこの本を最初に読んでいたら、もっと違ったプログラマーになっていたのではないかと悔やまれるくらいによい本。関数型言語の入門にもお薦めします。僕ももう一度読み直してコードを書こう。


 個人的 5本の指には惜しくも入りませんでしたが、アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技Clean Code アジャイルソフトウェア達人の技実践 F# 関数型プログラミング入門実装パターンも良い本でした。特に実装パターンは薄く簡潔で読みやすい本だと思います。The Clean Coder の邦訳にも期待。


 来年は一歩踏み込んだ内容の本を読もうと思います。また、洋書にも挑戦してみたいですね。その前に積本消化ですが……!

*1:Scala をやるかもしれない。Scala ちゃんを描きたいだけかもしれない