はじめに
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年ごろからピアソン・エデュケーションから出版されたシリーズが有名ですが。『アジャイルプラクティス』『アジャイルレトロスペクティブズ』『アジャイルな見積りと計画づくり』などの良書もここから派生して誕生しています。また、「コードの体質改善のテクニック」というサブタイトルの付いた『リファクタリング』も多かったですね。
心構え・文化
プログラマは文法を覚えるだけではシステムは作れません。金融系のシステムであれば金融の知識も必要となります。ただし、これだけでも不十分で、「いいプログラムを作るための心構え」を身につけることで、ユーザ要望にすばやく対応できたり、バグ修正の時に他のバグが混入するのを防いだり、作業の自動化を行ったり、仕事全体のスキルアップが行えます。また、オープンソースなど、独特の文化もあります。
そのような本の中で、圧倒的に強かったのは『達人プログラマー』です。こちらも関連書も含めて色々出版されています。洋書の“Expert Python Programming”は言語の本っぽいタイトルですが、技術文書の書き方の説明があったり、継続的インテグレーションの言語に特化したやり方が詳しく説明されていたりして、これも『達人プログラマー』の系列ですね。今後はこのような本が増えてくると思われます。
長い期間、業界に影響を与えてきた本としては、トム・デマルコ、ワインバーグの両著者の著書です。『デッドライン』『ゆとりの法則』『ピープルウェア』『ライトついていますか?』『コンサルタントの秘密』『コンサルタントの道具箱』…。こちらも単著を一つずつ挙げられている方もいましたし「ワインバーグ全部」という方もいました。古典的なものとしては、『人月の神話』『デスマーチ』も根強い人気があります。
それ以外でも、“Joel on Software””My Job went to India”などの本や、『ハッカーと画家』『Unixという考え方』『まつもとゆきひろコードの世界』などが上がっていました。また、WEB+DB PRESSで連載中の、人物そのものをピックアップした『アルファギークにあってきた』も人気があります。
ディープな技術
多くの人にはマッチすることはありませんが、1つの技術をディープに学ぶことで、他のものにも応用可能な足腰の強さに繋がります。とはいっても、挙げられた本が余りにマニアなモノも多くて…。飛躍のきっかけはいろんな所にあるということですよね。『はじめてのZ80』『PC-88VAテクニカルマニュアル』『MC6800/6809のアセンブラ本』『PC-9801プログラマーズバイブル』『Vz天国』『ANSI SCSI規格書』などなど。そういえば、私もロジックICの規格書集や、BeOSのAPIで学んだことは多いです。
『Winnyの作り方』も、ネットワークの負荷と効率の徹底的な追求ということで、ネットワークプログラミングを考える上では役立つ知識が多いです。
IT以外は?
IT以外の本も数多く挙げていただきました。さすが、普段から読書量が多いだけのことはあります。一番強かったのは、『7つの習慣』、ドラッカー関連、GTDという仕事術に関する『ストレスフリーの仕事術』『ザ・ゴール』などの制約理論(TOC)関連の書籍あたりです。ソフトウェアに近いところでは『プレゼンテーションZEN』の支持も多いです。
それ以外でも「風の谷のナウシカ」だったり、「浦沢直樹」「ワンピース」「田中芳樹」みたいな感じだったり、本当に幅広すぎてどうまとめていいのかわからないぐらいです。「司馬遼太郎」みたいな歴史物も多かったです。
この連載の今後の展開
そんなIT業界の楽しみ方を伝えるべく現在書籍を執筆中です。小粒ながら良書が揃っている、技術評論社の技評SE選書として発売される予定です。タイトルはまだ未定ですが、これからIT業界に入ってくる人達、業界にはいるけどこれからデビューして活躍していきたいと思っている人達向けの勉強法・勉強会の本になる予定です。著者はGTD関連の勉強会やブログで有名なnomicoさんと、学生の頃からXP、Ruby、C++、Pythonといろんなコミュニティに出入りしている渋川の2人です。ちなみに、イラストをお願いしている、 山本さをんさんからは「本文を流し見させてもらったところ、ITとは全然関係ない人でも役立つ感じ。事例や著者がIT系の人ではあるけれど、普通に一般人でも活用可能な内容になってますー」という言葉も頂いておりますので、多くの人に興味を持ってもらえるとうれしいかも、と思っています。
なお、この連動ウェブサイトでは、本に入れたいけどすぐに陳腐化してしまいがちな内容だったり、誰かと座談会とか(これからお願いする)とか、勉強会のレポートだとか、書籍に収まらなかった内容だとか、本のダイジェストとか、色々記事を書いていこうと思います。読者投稿みたいなのもできたら楽しいかも。今後ともお楽しみに!