2010年度・お勧め書籍10冊

個人的にお勧めする10冊の書籍を紹介します。 同一シリーズのものは、1つにまとめてあります。

当たり前ですが、出版されているすべての本を読んだ訳ではないですし、一般的に言われている名著・必読書すらも読めていませんから、 たまたま所持している本の中から選択していることはご理解下さい。

なお紹介するのは、ある程度、本サイト(旧サイトも含む)との関連性があるジャンルだけです。 具体的に言えば、

といった具合です。 これらの各ジャンルから、1冊ずつは必ず選考するようにしました。

なお、内容のレベルを問題とはしていません。 選考基準として最も重視したのは、「買って損をしたと思わない本」です。

@ プログラミング言語C

書名 プログラミング言語C 第2版 ANSI規格準拠
レベル 中級者〜上級者向け
ジャンル C言語
出版日 1989年6月
ISBN 978-4320026926

C言語の生みの親によって書かれたバイブル。通称「K&R」

位置付けとしては入門書ですが、最近の入門書からすれば高い難易度の部類に入ります。 ですから、最初に選ぶ本としてはお勧めしません。 他の易しい本を読みながら参照するぐらいがちょうどいいかも知れません。

しかしながら、最高レベルのプログラマであり、 言語の生みの親である著者の書くプログラムや解説、練習問題には、確実な価値があります。 C言語を正しく深く理解したいと望む人は、必ず読んでおかなければならない本でしょう。

古くなっても価値のある名著ですが、 一方で、現代的な「読みやすいプログラム」という視点からは少々外れ気味でもあります。 これは、当時の「効率的なプログラム」という視点で書かれているためでしょう。
本書に限った話ではありませんが、当時の価値観というものは意識しておかないといけません。 「K&R」に書かれていたから「良いコード」というものではありません。 「良いコード」の定義は、時代や状況によって変わるものだと思います。

A EffectiveC++ / MoreEffective C++ / Effective STL

書名 Effective C++ 原著第3版
レベル 中級者〜
ジャンル C++
出版日 2006年4月
ISBN 978-4894714519
書名 新訂版 More Effective C++
レベル 中級者〜
ジャンル C++
出版日 2007年6月
ISBN 978-4894714762
書名 Effective STL
レベル 中級者〜
ジャンル C++
出版日 2002年1月
ISBN 978-4894714106

C++プログラマ必携のガイドライン。

「More Effective C++」は、ややテクニックの方に重みが向いている感がありますが、 「Effective C++」は、C++プログラマが確実に理解しておかなければならない内容になっており、 こちらは間違いなく必読と言えます。

「Effective STL」は、C++ の標準ライブラリである STL だけに焦点を絞ったものです。 STL は、リファレンスを眺めるだけではなかなかうまく使えないと思います。 知らず知らずのうちに効率を落としていたり、バグを作り込んでしまっていたりするかも知れません。 これでは何のためにライブラリを使っているのか分かりません。
STL の正しい使い方を知る上で、本書も一読をお勧めしたいと思います。

「More Effective C++」は、初版の日本語版は、新訂版の前書きで訳者も認めるほど、翻訳の悪さが目立っていましたが、 新訂版の方は随分良くなっています。
「Effective C++」で満腹感を感じるようなら、無理に勧めはしませんが、やはり良書です。 ただし、原著の出版時期から言うと、実はこちらの方が「Effective C++」より古いので、 その点は理解しておいた方がいいかも知れません。

B C++ の設計と進化

書名 C++ の設計と進化
レベル 中級者〜
ジャンル C++
出版日 2005年1月
ISBN 978-4797328547

C++ の言語設計者本人が、C++ の設計思想、歴史を書き下ろした本。

原著は 1994年出版ということなので少々古いですが、価値ある内容です。 (ちなみに、C++ の標準規格は 1998年に制定されています) 読んでいても、古臭さを感じることは無いと思います。

C++ の仕様が気に入らない、好きになれない人は多いかと思いますが、 決して思いつきや、適当な考えで作られた訳ではなく、一貫した考えの下で熟慮された結果であることが分かります。

この本は、C++ のリファレンスマニュアルや、テクニック集、ガイドラインという類のものではありません。 言語設計や歴史といったものに興味の無い人には、むしろ読むことが苦痛なタイプの内容でしょう。

C Perlベストプラクティス

書名 Perlベストプラクティス
レベル 中級者〜
ジャンル Perl
出版日 2006年8月
ISBN 978-4873113005

Perl で良いコードを書くためのガイドライン。

本書の内容は、C++プログラマであれば、 Effective C++C++ Coding Standards の Perl版といえば分かりやすいでしょう。 ( Effective Perl は別にありますが、ちょっと古いです。 洋書 なら新しいものがありますが)
Perl において、バグを生みにくく、効率的で、保守性の高いコードを書くためのガイドラインです。

Perl で、ある程度の規模のコードを書く人にお勧めします。 数行のちょっとした間に合わせのスクリプトを書く程度では、本書の価値は少ないかも知れません。

この手の本はどれでもそうですが、それぞれのプラクティスに対して、「なぜそうすると良いのか」を理解することが重要です。 この本には、それもしっかり書かれていますから、自分の状況に合わないものを無理に受け入れる必要はありません。

D APIで学ぶ Windows徹底理解

書名 APIで学ぶ Windows徹底理解
レベル 初級〜中級
ジャンル Windowsプログラミング
出版日 2004年4月
ISBN 978-4822228262

Windows の動作の仕組みを理解するための本。

元々、雑誌の連載記事だったものを再編集してあるため、1つ1つが適度な分量で構成されています。 1つ1つ丁寧で詳細であり、その印象から入門レベル程度の記事に見えますが、実際には結構深いところまで扱われています。 図表も豊富で分かりやすいです。

なお、Windows の API を通して、動作の仕組みを理解することが目的であって、 API の使い方を学ぶことが目的ではありません。

描画周りについて扱っていない点が気になるかも知れませんが、そこまで必要であれば、バイブルである プログラミングWindows第5版 (上) と、 プログラミングWindows第5版 (下) を当たった方がいいでしょう。 丁度、描画周りのところで上下巻が分断されているのが嫌な感じですが。

E 定本 Cプログラマのためのアルゴリズムとデータ構造

書名 定本 Cプログラマのためのアルゴリズムとデータ構造
レベル 初級
ジャンル アルゴリズムとデータ構造
出版日 1998年3月
ISBN 978-4797304954

アルゴリズムとデータ構造の基礎固め。

ソートやサーチ、スタックやリスト構造、木構造といった、アルゴリズムとデータ構造の基礎をC言語を使って解説しています。
サンプルプログラムでは、ポインタを頻繁に使っているので、C言語の基礎は理解できていたほうがいいでしょう。 C言語でプログラムが書けるようになった後、本書に進むのが順当な流れだと思います。

説明は詳細で、図解も多くなっており、初心者の導入としてお勧めできます。 扱う内容ごとに、解説の詳細さにムラがあるような気もしますが、 基礎アルゴリズムの部分の説明はしっかりしています。

なお、同著者による Java版 もありますが、こちらは 2011年1月に 新版 が出版予定になっています。

F オブジェクト指向における再利用のためのデザインパターン

書名 オブジェクト指向における再利用のためのデザインパターン 改訂版
レベル 中級〜上級
ジャンル デザインパターン
出版日 1999年10月
ISBN 978-4797311129

GoF によるデザインパターンのバイブル。

オブジェクト指向プログラミングにおける設計手法をまとめたカタログである、デザインパターンの原典です。 説明には C++ が使われ、部分的に Smalltalk が登場します。
また、付属の CD-ROM に、Java によるサンプルコードが収録されていますが、これは GoF によるものではありません。

記述は決して易しくありません。むしろ難解と言ってもいいでしょう。
分かりやすく噛み砕いた本が、後に幾つも出版されていますが、 各パターンが必要となる動機、パターンが適用できる箇所やできない箇所、適用する場合の問題点など、 しっかりと網羅されているものは少ないと言えます。
そういった点で、本書はバイブルとしての本領を発揮してくれます。

しかし、バイブルと言えども、既に 10年以上前の本であり、発展を続けるこの分野においては、多少古さも感じられるのも事実でしょうか。 現代視点による新版が望まれます。

G プログラミング作法

書名 プログラミング作法
レベル 入門レベルを終えた後〜
ジャンル プログラミング全般
出版日 2000年11月
ISBN 978-4756136497

良いコードを書く指針となる本。

本書には、高度で難解なテクニックは登場しません。 登場するのはむしろ、簡潔でスタンダードなコードばかりです。
言ってみれば、当たり前でどこかしこで見かけるような内容が多く含まれているのですが、 ここまで網羅的で分かりやすくまとめられているものは少ないでしょう。 各章ごとに、それほど多くはありませんが、厳選された参考文献が挙げられている点も有益でしょう。

C言語、Java、Perl など、幾つかの言語が登場しますが、特定のプログラミング言語に固有の知識はほとんど必要としません。 実例を示すために特定の言語が使われているという程度であり、本質はどの言語でも同一です。 何か1つの言語に関して、入門レベルを卒業している程度の素養があれば理解可能なはずです。

新人プログラマに特にお勧めします。 良いコードを書く癖を、早いうちに身につけておきましょう。

H コンピュータの構成と設計

書名 コンピュータの構成と設計 第3版 (上)
レベル 中級〜
ジャンル コンピュータ知識
出版日 2006年3月
ISBN 978-4822282660
書名 コンピュータの構成と設計 第3版 (下)
レベル 中級〜
ジャンル コンピュータ知識
出版日 2006年3月
ISBN 978-4822282677

タイトル通り、コンピュータの構成と設計に関するバイブル。

2人の著者の名前を取って、「パタヘネ」の愛称で呼ばれている本です(「ヘネパタ」だと違う本になります) この分野における最高の良書です。

知識ゼロからではさすがに難しいですが、意外なほどに読みやすくなっており、 それほど多くの前提知識を必要とはしません。
ハードウェア寄りの内容ではあるものの、 命令実行の仕組み、キャッシュメモリや、CPU の並列処理などは、ソフトウェア開発者にとっても非常に有用な内容です。

上下巻構成になっており、さらに付属の CD-ROM にも記事が入っています。 やはり要望が多かったのか、CD-ROM内の記事が後に 書籍化 されています。

I 文字コード超研究

書名 文字コード超研究
レベル 初級
ジャンル コンピュータ知識
出版日 2003年7月
ISBN 978-4899770510

コンピュータがデータを扱う仕組みの理解に。

文字コードに関する入門書ですが、序盤は脱線気味に、2進数や 16進数の計算であったり、 画像、音声、動画といったデータの表現形式を説明したりしています。 具体的な各文字コードの解説までに 200ページ以上も使ってしまうほど、導入部分が詳細です。 おかげでかなり分厚い本になっています。

あまり深入りはしていないので、入門レベルを超えることはありませんが、解説は非常に丁寧で、入門書としては良書だと思います。 また、Perl を使って簡単なスクリプトを書き、実際にコンピュータ上で確かめてみる(実験する)という方法を採っており、 この辺りの丁寧さも良い点です。

文字コード絡みで、非常に苦労している現場の方々には物足りない内容だとは思いますが、 今ひとつ、文字データの表現の仕組みが分かっていない人は、基礎知識を得るためにお勧めします。

更新履歴

'2010/12/29 新規作成。



書籍紹介のトップページへ

Programming Place Plus のトップページへ