この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
こんにちは、SHIMADAです。
今回は、いつもと少し違った趣向ですが、推薦図書の紹介をしたいと思います。
コードコンプリート CODE COMPLETE 第二版(上巻・下巻)
日経BPソフトプレス刊
Steve McConnell(スティーブ・マコネル)著
この本にはかなり思い入れがあります。
というのも、IT業界で飯を食おうと決心したときに、最初に大枚をはたいて買った本だったからです。そのときはまだ初版でした。
情報系の専門教育を受けていない自分が、これまでまがりなりにもやってこれたのは、この本のおかげだと思います。
このエントリで言いたいこと
上下巻に分かれていて、それぞれ六千円超という値段なので、買うとしたらかなり躊躇してしまうかも知れません。
でも、買え!
それだけの価値があります。
もしかしたら既に職場にある、あるいは申請したら買ってくれる、といった恵まれた環境にいらっしゃる方もおられるかも知れません。
どんなことが書いてあるのか、事前に確かめられる幸運に感謝しましょう。
でも、買え!
図書館で本を借りたときよく体験するのですが、娯楽のための小説や雑誌とちがって、こういう歯ごたえのある本は自分の懐を痛めて買わないと、人間なかなか読まないものです。
大丈夫。一万三千円、充分モトが取れる本です。自分に投資しましょう。
どんな本なのか?
三行でおk、という声が聞こえてきたので三行でまとめると、
- ソフトウェアコンストラクションに関する
- 特定の言語や方法論に限定されない
- 普遍的なベストプラクティス
を広い範囲で収集し、体系的にまとめた本です
プログラマ、エンジニアとして、最低限知っておかなければいけない、でも入門書や教科書にはあまり載っていない現場寄りの知識を具体的に教えてくれます。
知っていればしなくていい苦労、というものがあります。システムの開発に携わるにあたって、しなくていい苦労を避けたい人に読んで欲しい本です。
またそういう種類の苦労は、えてして他の人を巻き込みます。いらぬ苦労に巻き込まれたくない人にもおすすめです。
「ソフトウェアコンストラクション」ってなに?
「ソフトウェアコンストラクション」というのは耳慣れない言葉かもしれません。
システム開発における各種アクティビティの一部で、下図のグレーで塗られた楕円の部分になります。(文字の大きさが、本書における取扱いのウェイトを示しています。)
「コーディングとデバッグ」が最も大きなウェイトを占めていて、「課題定義」「要求開発」「システムテスト」などは範囲外となっています。
本書 p.6 図1-2 を引用
ただし、この本で触れていないアクティビティが、システム開発にとって重要でないということはないです。
そういった方面については他に有用な書籍が充実しているので、あえて焦点を当てていないという側面があります。
内容についてもっと詳しく知りたい
@ITさんのサイトで上下巻の完全な目次と、一部の章の本文が公開されています。
@IT: BOOK Preview:Code Complete 第2版
- 第6章 クラスの作成(前半)
- 第6章 クラスの作成(後半)
- 第24章 リファクタリング
- 第34章 ソフトウェア職人気質とは
本書を買うつもりがない人も、上記ページは無料で公開されてますので、是非読んでみて下さい。
最後に本文からの引用を
第一部「基礎を固める」から、本書の姿勢をよく表している一節を引用してみます。
言語の「中で」のプログラミングと言語の「中へ」のプログラミングの違いを理解することは、本書の内容を理解する上で重要である。
重要なプログラミング原理のほとんどは、言語の種類ではなく、言語を使用する方法に依存する。使用したい構造が言語に含まれていない、あるいは何らかの問題が起きやすいという場合は、それらを補正できないかどうか試してみよう。コーディング規約、標準、クラスライブラリなどの補強を独自に考案してみよう。(上巻 p.83 4.3.1 「言語の『中へ』のプログラミングの例」より)
追記:弊社社員へ
本書を使った読書会/勉強会について検討しています。(どういう形で進めるのがいいか、頭を痛めています)
興味のある人は是非SHIMADAまで一声掛けて下さい!