はじめに
IT業界というと,3Kだとか,帰れないとか,泥のようにだとか,昔からいろいろ言われてきています。しかも,Mっ気のある人が多いせいか,言われても反論したり怒ったりせずに,そのままネタにして楽しんでいたりするから余計にたちが悪かったりします。とは言ってもその実,業務外でも頼まれてもいないのに積極的に勉強会に行って同業他社の人と交流したり,土日までつぶしてイベントを開催したり,大量の本を買って家の中がいっぱいになったり…家も会社も関係なく,全力でIT技術者という職業を楽しんでいる人が数多くいます。中には,海外のカンファレンスまで出かけてしまう人もいるぐらいです。まだ,勉強会という場を知らないために,出てこない人もいますが,一度楽しさを知ってしまった人は定期的に色々な勉強会に顔を出して新しい情報を取り入れたり,人に教えて感謝されたり,自信が付いたり,多くの恩恵に授かっています。
さて,そんな感じでIT業界をエンジョイしている先輩の方々も,最初の最初から高いスキルがあったわけではありません。コンピュータと出会ったきっかけは様々です。親が好きだったから家にあったという人もいれば,会社で初めて触ったという人もいるでしょう。なんとなく古くから触っている(初めて触れたコンピュータのビット数やメモリが少ない)人ほど重鎮という印象はありますが,それとは関係なく,なんらかの「自分が飛躍した瞬間」を味わった人が数多くいます。仕事だったり,勉強会だったり,すごい人に会ったり。今回は,「今まで読んできた中で影響が大きかったオススメ書籍」ということで,アンケートを採った結果からピックアップしてお届けしたいと思います。
ちょっとご注意いただきたいのは,人によって取り組んでいる方向性は様々ですし,「ここで挙げている本を上から下まで読め」ということではありません。 iTunes年間ベスト100なんかも発表されていたりもしますが,このランキングと個人の音楽の好みが違うのと一緒です(僕の好きなCrush40はランクに入っていない)。このリストの中から興味を持ったものだけでも,ちょっと本屋で手に取ってみてもらうのでもいいでしょうし,逆に「オレ/私はこの本がいいと思うんだ!」という気持ちを,みなさんのブログなどでガンガン書いてもらえれば最高です。
プログラミング言語の本
やはり歴史のある“K&R”こと,『プログラミング言語C』を推されている方が何人かいました。C++では『プログラミング言語 C++』『ロベールのC++入門講座』などの文法の解説本もあったのですが,多くの人が役に立ったと述べていたのが,『Effective C++』『 More Effective C++』『Exceptional C++』です。自由度の高い言語になるほど「こういう書き方でも一応動くが,拡張性,メンテナンス性,エラー耐性を考えるとこちらの書き方がベスト」という,文法書ではカバーしきれないTipsが増えてきます。
Javaでも,同様に『Effective Java』が良かったとする人が多かったです。後は「初めてソースコードを自分で動かしてみて勉強して勉強になった」と『独習Java』を挙げてくれた人もいました。
Perlは「ラクダ本」という名前でも呼ばれる『プログラミングPerl』を挙げる人が多かったです。ITの本の中でも,オライリージャパンの動物が表紙のシリーズの影響はかなりあります。特にオープンソース系ですね。有名になったものはこのように表紙の動物で呼ばれることもあります。
Rubyあたりは良書が豊富にあるのか,集中することはあまりありませんでした。『プログラミング言語Ruby』が気持ち多かったぐらい。Rubyなんかは何か言語を知っている人がセカンドランゲージ,サードランゲージとして使われるケースも多いためか,実用性重視で「逆引きレシピ」を挙げている人がいたのが特徴的ですね。リストにはなかった(ひらがなだったので他書とどちらか区別が付かないのは1件),Yuguiさんの『初めてのRuby』は,そのようなRubyの環境にマッチした薄い本で,「ターゲットを絞って書いた」というお話しを聞いて,なるほど,と思いました。
Python系のコミュニティの人が数多く回答してくれたにも関わらず,Pythonはかろうじて『みんなのPython』と,洋書の『Expert Python Programming』がわずかに挙げられているぐらいでした。これもRubyと同じで最初の言語として使う人が少ないのと,シンプルで自由度が低い文法なので本の需要が少ないのかもしれません。
他の言語では『Java Script 第5版』『Scalaスケーラブルプログラミング』『ふつうのHaskell』なども挙げられてました。
言語間で共有できるスキル
言語そのものからはちょっと離れていて,単独では実装には使えないけど様々な言語と連携して使える知識系の本も数多くあります。
何人かの人が挙げてくれたのが『オブジェクト脳の作り方』です。やたら難しく語れがちなオブジェクト指向ですが,著者の牛尾さんの実際の教育経験を元に「こんなもんや」というイメージを伝えるのに注力した本です。『楽々ERDレッスン』はデータベース設計のコツを伝える本です。
後は,ソフトウェアのテストに関する書籍も何種類かありました。『基本から学ぶソフトウェアテスト』『ソフトウェアテストHAYST法入門』です。『レガシーコード改善ガイド』はタイトルにはコードはないのですが,自動テスト関連の本です。
OOPSLA系
オブジェクト指向はそれそのものは「プログラムのメンテナンス性を向上させるためのプログラミング技術」でしかないのですが,それを取り巻く人たちを中心に,設計の向上からプロセスまで多くの動きがありました。OOPSLAというアメリカのオブジェクト指向の学会のようなものがあるのですが, 1990年代あたりから,ここを中心に様々なものが発表されて,業界に影響を与えてきました。
この中でも,多くの影響を与えているのが『デザイン・パターン』(通称GoF本)と,結城浩さんの『Java言語で学ぶデザインパターン入門』の2冊です。特に結城さんはPerlからセキュリティ,小説形式の『数学ガール』シリーズまで幅広く本を出されているのですが「結城さんの各種本」と,著者の指名買いが多かったです。
そして,多くのプログラマの働き方に影響を与えたのが『アジャイルソフトウェア開発』です。その走りとなったのが“エクストリーム・プログラミング”関連の本です。2000年ごろからピアソン・エデュケーションから出版されたシリーズが有名ですが。『アジャイルプラクティス』『アジャイルレトロスペクティブズ』『アジャイルな見積りと計画づくり』などの良書もここから派生して誕生しています。また,「コードの体質改善のテクニック」というサブタイトルの付いた『リファクタリング』も多かったですね。

