はじめに
僕がプログラミングを始めてから、もうすぐ12年になろうとしています。
この12年間、いろんな技術書を読んだり、仕事やプライベートでたくさんコードを書いたりしてきました。
最初に入ったSIerでは主にJavaを、前職の社内SE時代はC#をメインのプログラミング言語として使ってきました。
現在はRubyをメインで使っていますが、言語が変わっても、また何年経っても「これはあのとき学んだ知識が役に立ってるよなあ」と思う瞬間がときどきあります。
そこで今回はこれまでに読んだ技術書を一通り振り返り、「この本で学んだことは今でも役に立ってる」と思うものを17冊ピックアップしていきます。
おことわり
- (2014.09.29 20:00追記) このエントリのタイトルは「10年経った今でも役に立っている」という意味で付けています。「今から10年後まで役立つ」という意味ではありません。(紛らわしくてごめんなさい)
- 僕がプログラマとして従事してきたのは主に業務系の情報システムやインターネット向けのWebアプリケーションです。分野が異なると意見も異なるかもしれません。
- 「10年経っても役立つ知識」というテーマなので、大半がかなり昔に読んだ技術書です。現在ではすでに絶版になっている本もいくつかあります。その場合は似たようなジャンルの技術書を見つけて読んでください。
- 改訂版や新装版が発売されている場合はそちらのリンクを載せています。
- 今回はあくまで「コードを書いたり、デバッグしたりするのに役立つ本」に絞りこみました。組織文化やプログラマとしての心構え等に関する本は載せていません。
きれいなコードを書くための知識
CODE COMPLETE 第2版 上 完全なプログラミングを目指して
- 作者: スティーブマコネル,Steve McConnell,クイープ
- 出版社/メーカー: 日経BP社
- 発売日: 2005/03/26
- メディア: 単行本
- 購入: 44人 クリック: 1,166回
- この商品を含むブログ (288件) を見る
CODE COMPLETE 第2版 下 完全なプログラミングを目指して
- 作者: スティーブマコネル,Steve McConnell,クイープ
- 出版社/メーカー: 日経BP社
- 発売日: 2005/03/26
- メディア: 単行本
- 購入: 16人 クリック: 193回
- この商品を含むブログ (164件) を見る
CODE COMPLETEはどういうコードが良くて、どういうコードが悪いのかを明快な言葉で説明してくれる技術書です。
この本を読むと自分のコードが良くなるだけでなく、偉そうにしている先輩が書いたコードも「なんだ、意外と大したことないな」と思えるようになります(苦笑)。
巻末の参考文献も豊富で、ここからさらに別の面白そうな技術書を見つけることもできます。
ただし、最新のプログラミング言語やフレームワークから見ると、ところどころ内容が古く思えるところがあるかもしれません。
2015.11.24 追記
「CODE COMPLETE、高くて買えません!(><)」っていう人は、代わりに「リーダブルコード」を読むのも良いと思います。
たしかCODE COMPLETEとよく似た内容が書かれていたと思うので。
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
- 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/06/23
- メディア: 単行本(ソフトカバー)
- 購入: 68人 クリック: 1,802回
- この商品を含むブログ (140件) を見る
(追記終わり)
新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)
- 作者: Martin Fowler,児玉公信,友野晶夫,平澤章,梅澤真史
- 出版社/メーカー: オーム社
- 発売日: 2014/07/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (11件) を見る
外から見た振る舞いは変わらなくても、中身のコードが違えば将来の保守性や可読性がずいぶん変わってきます。
元祖「リファクタリング」はJavaで書かれていますが、「リファクタリング:Rubyエディション」のように、言語によってはその言語向けの「リファクタリング」が発売されていることもあります。
Java以外の言語をよく使う人は別言語バージョンを探してみるのもいいかもしれません。
- 作者: アンドリューハント,デビッドトーマス,Andrew Hunt,David Thomas,村上雅章
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/11
- メディア: 単行本
- 購入: 42人 クリック: 1,099回
- この商品を含むブログ (347件) を見る
他にもコードの書き方やプロジェクトの進め方において、とても役立つ考え方が満載です。
テストに関する知識
- 作者: ボーリスバイザー,Boris Beizer,小野間彰,石原成夫,山浦恒央
- 出版社/メーカー: 日経BP社
- 発売日: 1997/08/26
- メディア: 単行本
- 購入: 3人 クリック: 59回
- この商品を含むブログ (13件) を見る
- 作者: ボーリスバイザー,Boris Beizer,小野間彰,山浦恒央
- 出版社/メーカー: 日経BP社
- 発売日: 1994/02/26
- メディア: 単行本
- 購入: 6人 クリック: 85回
- この商品を含むブログ (19件) を見る
確かに動作確認なのですが、ソフトウェアのテスト方法には体系化された様々な「テスト技法」が存在します。
「テスト技法」と言われてピンと来ない人は、こういったテスト専門の技術書を読んで一度勉強しておくことをお薦めします。
ただしこの本はどちらもかなり難しい部類に入るので、最初は「はじめて学ぶソフトウェアのテスト技法」のような入門者向けの本で学習する方が良いかもしれません。
オブジェクト指向設計、オブジェクト指向プログラミングに関する知識
- 作者: 結城浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2004/06/19
- メディア: 大型本
- 購入: 51人 クリック: 762回
- この商品を含むブログ (397件) を見る
オープンソースライブラリの「XxxFactory」みたいなクラス名を見て、「Xxx工場って何や?」って思ったことがある人はデザインパターンの勉強をしましょう。
元祖「デザインパターン」は いわゆるGoF本 なのですが、結城浩さんの書かれたJava版の方がわかりやすいと思います。
実践UML 第3版 オブジェクト指向分析設計と反復型開発入門
- 作者: クレーグ・ラーマン,依田智夫,今野睦,依田光江
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2007/11/12
- メディア: 単行本(ソフトカバー)
- 購入: 8人 クリック: 179回
- この商品を含むブログ (29件) を見る
すでに用意されているクラスを使うことは簡単でも、「自分でクラスを定義しろ」と言われたらどうすれば良いのかわからない、という人は結構多いのではないでしょうか?
この本では仮想的な開発プロジェクトを題材にして、オブジェクト指向分析やオブジェクト指向設計の具体的な方法を学ぶことができます。
こういった技術書を読んで、どんなクラスが良いクラスなのか、また、どんなクラスが悪いクラスなのかを評価できるようになりましょう。
アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技
- 作者: ロバート・C・マーチン,Robert C. Martin,瀬谷啓介
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2008/07/01
- メディア: 単行本
- 購入: 18人 クリック: 586回
- この商品を含むブログ (72件) を見る
「オレオレ分析」や「オレオレ設計」で拡張性や再利用性の低いクラスを作ってしまう前に、単一責任の原則やオープン・クローズドの原則などを適用してイケてるクラス設計ができるようになりましょう。
データベースに関する知識
データベース実践講義 ―エンジニアのためのリレーショナル理論 (THEORY/IN/PRACTICE)
- 作者: C.J.Date,株式会社クイープ
- 出版社/メーカー: オライリージャパン
- 発売日: 2006/02/01
- メディア: 大型本
- 購入: 4人 クリック: 170回
- この商品を含むブログ (56件) を見る
この本ではSQLではなく、データベースシステムの土台となっている「リレーショナル理論」にフォーカスを当てており、SQLの裏に隠れているリレーショナル理論の奥深さを学ぶことができます。
ただしこの本は数学的でかなり難解な部類に入るので、読み終えるまでになかなか時間がかかるかもしれません。
ビジネス環境の変化に強いデータベース設計―仕様変更なんて恐くない!
- 作者: アシストコンサルティング事業部
- 出版社/メーカー: ソシム
- 発売日: 2006/04
- メディア: 単行本
- 購入: 1人 クリック: 20回
- この商品を含むブログ (6件) を見る
「正規化?インデックス?何それ、おいしいの??」ってなっちゃう人は、こういった本を読むまで自分でテーブルを定義しちゃいけません!
正規表現に関する知識
- 作者: Jeffrey E.F. Friedl,株式会社ロングテール,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/04/26
- メディア: 大型本
- 購入: 24人 クリック: 754回
- この商品を含むブログ (86件) を見る
電話番号、メールアドレス、生年月日など、形式はほぼ決まっているものの、値としては異なる文字列を抽出したり置換したりするケースはよくあります。
そんな場面で威力を発揮してくれるのが正規表現です。
正規表現を使いこなせれば、そうした文字列処理をほんの数行で実現することができます。
この本は一見とっつきにくそうですが、正規表現を全く知らない人でも理解できるように一から丁寧に教えてくれます。
僕もこの本を読んで正規表現を使いこなせるようになりました。
ネットワークプロトコルに関する知識
- 作者: 上野宣
- 出版社/メーカー: 翔泳社
- 発売日: 2004/12/09
- メディア: 単行本
- 購入: 4人 クリック: 123回
- この商品を含むブログ (59件) を見る
- 作者: 上野宣
- 出版社/メーカー: 翔泳社
- 発売日: 2005/06/17
- メディア: 単行本
- 購入: 7人 クリック: 60回
- この商品を含むブログ (32件) を見る
- 作者: 上野宣
- 出版社/メーカー: 翔泳社
- 発売日: 2004/12/09
- メディア: 単行本(ソフトカバー)
- クリック: 35回
- この商品を含むブログ (39件) を見る
もはや空気のごとく存在しているWebページやEメールですが、どういう理屈でサーバーとあなたのマシンがつながっているのか、ちゃんと理解できているでしょうか?
というわけで、技術者であればちゃんと裏側の仕組みも理解しておきましょう。
こういった知識を持っているかどうかで、トラブルを解決するまでのスピードも変わってきたりします。
このシリーズは真面目に解説するとややこしいネットワーク関連の知識をゆる~く解説してくれるので、僕でも飽きずに最後まで読めました。
文字コードに関する知識
- 作者: 深沢千尋
- 出版社/メーカー: ラトルズ
- 発売日: 2011/07/19
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 8回
- この商品を含むブログ (4件) を見る
しかし、そもそも文字コードって何でしょうか?
文字コードとエンコーディングの違いは説明できますか?
こういった知識が身についていると、文字化けに遭遇したときでも落ち着いて素早く解決できます。
技術者なのに近所のおばちゃんと同じレベルで慌てふためいたりしないよう、こういった地味な(?)知識も身につけておきましょう。
アルゴリズムや計算機科学に関する知識
平成26年度 イメージ&クレバー方式でよくわかる 栢木先生の基本情報技術者教室 (情報処理技術者試験)
- 作者: 栢木厚
- 出版社/メーカー: 技術評論社
- 発売日: 2013/12/13
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
しかし、「僕はアルゴリズムなんて知りません!」と胸を張って答えるのは技術者として変ですし、計算機科学を勉強しておかないと、うっかり浮動小数点誤差の罠にはまって重大なバグを生み出してしまうかもしれません。
このあたりの内容も複雑かつ、奥が深いので真面目に勉強すると大変ですが、とりあえず基本情報技術者試験に合格できれば最低ラインの知識を身につけることはずです。(あくまで最低ラインですけど)
僕の場合、この本を読んで試験に合格しました。わかりやすくてオススメです。
2015.11.5 追記
まだ読み終わっていませんが、アルゴリズムやデータ構造の勉強をもう少しちゃんとやりたいときは、この本が良さそうです。
定本 Cプログラマのためのアルゴリズムとデータ構造 (SOFTBANK BOOKS)
- 作者: 近藤嘉雪
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 1998/03
- メディア: 単行本
- 購入: 11人 クリック: 169回
- この商品を含むブログ (77件) を見る
まとめ
というわけで、今回は「10年経っても色あせない知識が学べる技術書」を17冊ピックアップしてみました。
最新のフレームワークや流行りのプログラミング言語を学習するのも楽しいですが、こういった「技術者としての基礎体力作り」もおろそかにしないようにしましょう。
また、人によって「10年経っても色あせない知識」は異なってくると思います。
あなた自身の「10年経っても色あせない知識」があれば、ぜひご自身のブログ等で紹介してみてください!
参考資料
僕がこれまでに読んだ本はブクログに登録していってます。(最近買った本はあまり登録してないけど・・・)
興味のある方はこちらも参考にしてみてください。
あわせて読みたい
技術書ではなく、僕のキャリアを振り返りながらこれまで経験したことやそのときに感じていたことなどをまとめています。
今回のエントリに限らず、技術書関連のエントリはこれまでにいくつか書いてきています。
気になる方はこちらもどうぞ。