エンジニアとしてプロとして、今年読んだ本(2012年)

自分はエンジニアであり、プロでありたいと思っているので、定期的に技術書を読むように心がけています。読むのと理解するのが遅いため冊数は少なめですが、それでも少しでも身につくものがあればと思って読んでいます。

エンジニアとしてプロとして、今年読んだ本 - 地平線に行く

そんなことを書いてから、早くも一年が経ちました。
今年も、どんな本を読んだか思い返してみたいと思います。

仕事で使うための本(C#

Effective C# 4.0

Effective C# 4.0

今年初めに案件が変わり、C#とデータベースという組み合わせの仕事をするようになりました。
そこでまず読んだのが、「Effective C#」です。すでに仕事でC#をしばらく使っていたこともあり、基礎+αぐらいは十分にこなせていたのですが、やはり基礎だけでは足りないということで読みました。


でも、残念ながらこの本はイマイチでした。
間違っていると思われる記載がちらほらと見受けられたからです。たとえば、Object.GetHashCode() が返す値が、1から連番になっているかのような記述があったりしました*1。ただ、実際にコードを書いて確認してみないといけなかったという点では勉強になりました*2


ちなみに、「Javaだとどうなっているんだろう」→「やはり連番ではない」→「連番じゃなければなんだろう」という流れで書いたのが、java.lang.Object#hashCode()の性質 - 地平線に行く です。この記事で、C#を勉強していても、結局はJavaに戻ってくるというスタイルが自分の中でできあがりました*3

仕事で使う本(データベース)

CD付 SQL ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)

CD付 SQL ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

SQLの2冊のうち、「SQL ゼロからはじめるデータベース操作(ミック/著)」は基礎がすべてしっかり押さえてあってとても勉強になりました。特に、自分はデータベースの知識が PostgreSQL に偏っていましたが、この本でどこまでが標準でどこまでが方言なのかを知ることができました。
本当は、この本で基礎を総復習したうえで「SQLパズル 第二版(ジョー・セルコ/著、ミック/訳)」を読むつもりだったんですが…、途中で積んでしまいました*4


また、いまいちデータベース設計が苦手なのを克服するため*5に読んだのが「達人に学ぶDB設計徹底指南書(ミック/著)」でした。
この本で特に面白かったのは、前半がデータベーススペシャリスト試験で学んだ内容とオーバーラップしていたことです。試験だけだと理論的過ぎてピンと来なかったところも多数あったんですが、実際にそれが現場でどのようなメリット、デメリットをもたらすのかをわかりやすく解説されていたのが印象的でした。
読んでから半年たちましたが、現場でいろいろ学んだ今、改めて読み返してみたくなった一冊です。

品質を上げるために読んだ本

システムはなぜダウンするのか

システムはなぜダウンするのか

システムが動かなくなる事例を、自分が経験するよりも幅広く先回りして知っておくことによっんて、作るものの品質を上げられるんじゃないかと考えて読んだのがこの本でした。
日付にまつわるトラブルといった、読んでいて「あるあるw」と思うような事例から、「こんなことってあるんだ…」と思ってしまった事例まで幅広く紹介されていて、とても興味深い内容でした。
意外だったのが、プログラムのバグというよりも仕様や運用上の問題で動かくなくなるという事例が多いという点。品質の高いもの(きちんと動くもの)を作るためには、ただバグがないだけじゃダメなんだと読んでいて感じました。

苦手なネットワークを知るための本

インターネットのカタチ―もろさが織り成す粘り強い世界―

インターネットのカタチ―もろさが織り成す粘り強い世界―

自分はネットワーク系の知識がかなり乏しいです。それを少しでも補うために読んだのがこの本でした。
実際に読んでみた感想としては「インターネットって、こんなに形を変えているんだ…」という点。逆に言えば、外から見えるインタフェースさえ変わらなければ、いくらでも内部の実装は変えられるということ。この点がクラス設計に似ていると思ったり、通信はオブジェクト指向のデータのやり取りと同じなんだと理解したり…。
結局、自分はプログラマーだなーと改めて実感しました。

まとめ

今年は、去年に比べて読んだ冊数も内容も大幅に減ってしまっていました。
現場である程度の知識と経験は得られるのですが、それは本を読んで得た知識や理論に比べて、寿命が短いものです。そのため、ちゃんと本を読んで勉強しないと、気が付いたら時代遅れの知識と経験しかなく、プログラマーとして役に立たなくなってしまうなんてことが起こってしまいます。

それは自分にとって、望んだ未来ではありません。


それと、単純に技術書は読むと楽しいし、それを活用するともっと楽しいというのもあります。
だからこそ、来年はもう少し意識して読む時間を設けていけたらと思います。

              • -

気が付いたら今年書いたブログの記事は、今回を含めたったの10本でした。
それでも、Java7 Update6 で String クラスがさらにリファクタリングされていましたJava SE API(JavaDoc)日本語訳は、オンラインで読めます。 などをたくさんの方にご覧いただきました*6

去年と同じ言葉になってしまいますが、読んでくださった皆様、誠にありがとうございました。

ちょっと一本あたりに時間をかけすぎてためらってしまっているところもあるので、来年はもう少し細かくいろいろ書いていけたらと思います。


それでは、来年もよろしくお願いいたします!

*1:いま読み返したんですが、もしかしたら読み違えていただけかもしれません。「オブジェクトが生成されると、オブジェクトそれぞれに一意なオブジェクトキーが割り当てられ、整数値として保持されます。このキーは1から始まって、任意の型の新しいオブジェクトが生成されるたびに一つずつ増加します。(中略)Object.GetHashCode() ではこのオブジェクトに割り当てられた識別子ハッシュ値として返します。」

*2:Object.GetHashCode() が連番ではないのも、コードを書いて確認済みです。

*3:VMなど、奥深いところはC#よりもJavaのほうが詳しく把握できるためです。

*4:途中まで読んだものの、実際に試しながら読みたくなった → 電車の中で読めない → そのまま残りを読まずに今年が終わる orz

*5:あと、ミックさんの新刊だから。

*6:ほとんど書いていないにもかかわらず、一日当たりの平均アクセス数が去年の倍になりました。