このエントリーは、ゆかむアドベントカレンダー - ゆかむ | Doorkeeperの15日目エントリーです。ゆかむさんが最近プログラマへジョブチェンジされた方ということで、自分が昔(と言っても数年前ですが…)、SEになったころに読んでていて「これはよかったな!」っていう本を分野別につらつらと書いていこうと思います。自分は大学では全然別のことを専攻していてIT的なことについて何ら専門教育を受けていおらず、マイナスからのスタート!っていう感じだったので、そのあたりも共感して読んでいただけるかなぁと思っておりまする。また、これからSE・プログラマを目指しているような学生さんたちにも参考にしていただければと思います。
ではでは・・・


Java関連

新人研修でJava+Servletな感じの課題があり、 そのときに初めてJavaの勉強をしました。
まずこの本でJavaに入門しました。基本的なことが一通り書いてあります。
また、入門書にありがちな、過度に初心者向けにし過ぎて意味不明な説明になる、ということになっておらず、読みやすい入門書でした。


Effective Javaを読む前に、Collectionフレームワークをはじめ標準APIの使い方やジェネリクスの基本的なところへの理解を得られるような内容です。
入門書からEffective Javaへ入る、その間のワンクッションとしてほどよいレベルの内容かなぁと思います。
Effective Java読んで挫折した人にはぜひ!

言わずと知れた本。Javaで仕事するなら必ず読んどけ!って言われている本です。
1回目は内容をほとんど理解できず、3回くらい読みました。
クラス設計や部品の分割ポイントについて考える際の手引きになります。
「Javaってこういう言語なんだ!」っていう実感が得られるかと思います。

結城先生のデザパタ本です。
本に載っているデザインパターンをそのまま実装するようなことはあまりありませんが、自分が設計するときや人の作ったシステムを知るときの考え方の拠り所になります。
「これは○☓パターンを意識している」とかなんかそんな感じ。将棋の定石を覚えるのに似ていると思います。
この辺りを知っておかないと、衛宮士郎くんのように毎回ゼロから考えないといけない、という羽目になってしまいます。

HTML/CSS/Javascript

Javaと同じく、新人研修の頃に頑張って覚えました。
タイトル的にはJSの本っぽいですが、HTMLやCSSの基本的なことも載っており、最初は「全部入り」の本として購入しました。
今になって振り返ってみればこれは「DOMの本」で、それを解説するために各種内容を盛り込んでいたんだなぁって思っています。
内容はちょっと古いですが、ブラウザごとのDOMツリーの違いとかもちゃんと載っていて便利です。


オライリーのJavaScript本。今の最新は第6版で当時の最新は第4版、なぜか自分は第3版を買いました。(古いのは安かったので…)
当時はTips本などばかりで、JavaScriptを言語として体系的に学べる本がこれしか見つけられず、という感じでした。
お仕事でJavaScriptを書くのであれば、第何版でも、必ず読んでおいた方がいいと思っています。


VB6/VBScript

現場にVB6の案件があり、その保守を引き継ぎました。既存資源を理解するために勉強しましたが、既にVB6の書籍は少なく、探すのに苦労しました。
VB6の言語仕様的なところはVBAのリファレンスでもある程度代用できますし、構文もわかりやすいのでいいのですが、ActiveXがハマりどころでした。
VB6と言っても、共通部品などではゴリゴリActiveXやCOMコンポートネントを叩いていたり、コンパイルオプションの絡みでActiveXが関係してくることがあります。(ありました)
この本で、ActiveXの概要イメージをある程度掴めます。


ActiveXとCOMコンポーネントのもっと詳しい本です。VBというかC++の本ですね。
上記の本と2冊を並行して読んで、ActiveXへの理解を深めました。


.NET

2年目にVB.netの新規案件があり、社内にわかる人がいなかったので勉強しました。
VB.netもJSと同じく「初心者向け」イメージが強いためかTips系の本が多く、体系的にちゃんと理解するためにいろいろ考えて、オライリー本と、あえてC#の本を読むという方向で勉強しました。また、本ではないですが、この頃MSDNはずっと読んでました。とても勉強になります。
.NET Frameworkとはなんぞや?ということでまずはオライリーを。
全体的に、どういうものであるのかということが書いてあります。基本設計する際の拠り所になりました。


VB.netとC#の比較をしている本です。
この本と次の本とMSDNを読んで、VB.netとC#の文法を覚えました。(Javaができるレベルであれば、VB.net/C#の両方を知らなくても読めると思います)

.NET Frameworkの標準ライブラリの実装と使い方が書かれた本。
使い方を知るだけでなく、作成するアプリケーションの設計も標準APIに合わせることによりきれいなものにできます。
設計〜開発フェーズでは必帯でした。


COBOL

COBOLもやりました。
COBOLの本って最近は情報処理試験の参考書などばかりですが、この本はちゃんと体系的に、一通りの内容が載っていたと思います。


プロジェクトマネジメント関係

必要だったので・・・
普通のSE向けの本とかだと「結局は人間力」みたいな参考にならない本ばかりだったのでオライリーから探しました。
実践できたかというと微妙ですが、拠り所にはなりました。今も拠り所にしています。


ソフトウェアをリリースするということはどういうことなのか、どんなステップが必要なのか、などといったことが書かれています。
上記の本と同様、今でも頼りにしています。


その他(言語以外)


カーニハン先生の「プログラム書法」です!
サンプルコードがPL/IとFortranで書かれはいるものの、頑張れば読めました。(何度か読みましたが)
見通しのいいコード/悪いコードとはどんなものか、いいコード/悪いコードとはなにか、などというとても基本的で重要な概念が理解できる良書です。
言語やパラダイムに関係なく、SE・プログラマなら知っておくべきなことが載っています。(C言語版の「プログラミング作法」という本もあるみたいです。読んだことはないですが、そちらも良さそうです)

チームにsvnを導入した時に参考にした本。
Subversionに関しては、これ1冊あれば必要十分!っていう感じのいい本です。
今ならGitだと思うので参考にはならないかもしれませんが…

UNIXを使ってどんなことができるのか、UNIXを実際に使っている人はそれをどんな風に使っているのか、という具体的なイメージを掴むことのできる本です。

だいたいこんな感じです。
昨今は「なんとなくわかった気分になる」本や「とりあえず使い方がわかる」本が人気になりやすいですが、体系的にしっかりと身に付けていくことの方が大事だと個人的には考えています。読んでくださった方が、上に挙げた内のどれか1冊でも読んでみていただけたらな、と思います。※ちなみにアフィはついてませんので・・・