すべてのプログラマにとって知識と権威の象徴であるオライリー本。緻密に描かれた動物の表紙絵に圧倒的な情報量と質、そして人を殴り殺せるのではないかと思えるほどの暴力的な分厚さがその特徴であり、数多の新人プログラマたちに「これさえ読めば自分も超絶凄腕エンジニアになれる」と夢を抱かせつつ、へし折ってきた。
かくいう私もその1人だ。新米システムエンジニア時代、残業が終わらないのは自らの知識が足りないからである、ならばとびきり難しくて分厚い技術書を読めば良いではないか、おれは毎日定時で帰るスーパーエンジニアになるのだと日本橋の丸善まで赴き、Java と Tomcat と Apache、3冊で合計2500ページに迫ろうかというボリュームをまとめて購入、結局1冊も読破すること無く本棚の肥やしにしてしまったのは苦い思い出である。
高価なギターを買ったからといって難曲が弾きこなせるわけではないように、高額なオライリー本を買ったからといって技術力があがるわけではない。むしろ300ページ以下の安価な薄い本のほうが楽に読破でき何回も読み返すことになり、結果的に身になることのほうが多いように思える。
本記事では、これまで私自身が購入してきた、オライリーの薄い本たちを紹介したい。見た目は薄くとも中身は充実、分厚くて重くてどうせ読まない本に高いお金を出すよりはコスパ高く勉強になるものばかりなので、参考にしていただければうれしい。
Contents
『JavaScript: The Good Parts』
2008年初版ながら、いまだに色あせない名著。オライリーの薄い本と聞いて真っ先にこれが思い浮かぶ方も多いだろう。JavaScript は初心者でも簡単に動かせる言語でありながら、その記述形式は自由度が高く、使いこなすにはプログラマ自身に高い技量が要求される。200ページに満たない薄さながら JavaScript の真髄をとらえたテクニック満載の本書は、初心者レベルを脱却したいエンジニアには是非とも読んでほしい一冊だ。
特に、オブジェクトとしての関数、プライベート領域を実現するクロージャを簡潔に解説してくれる4章「関数」、プロトタイプベースとクラスベースの違いをふまえながら部品再利用のパターンを網羅した5章「継承」は、JavaScript を正しく理解するために何度も読み返したい。
『JavaScript パターン』
『JavaScript: The Good Parts』の発展編ともいうべき一冊。プログラミングの上で絶対に避けるべき「アンチパターン」を冒頭で説き、「コーディングパターン」として関数とオブジェクトを深く解説、続くコード再利用パターンでは部品化の引き出しを豊富に提供してくれる。最後はオブジェクト指向言語で語られることの多い「デザインパターン」を JavaScript で紹介してくれる充実っぷり。この内容でたったの200ページ、何度も読み返すことのできるボリュームだ。
『JavaScript で学ぶ関数型プログラミング』
本来 JavaScript は関数型言語ではないのだが、その割には関数型プログラミングが綺麗に書けてしまうという驚くべき特性をもっている。「関数を返す関数」である高階関数や、専門性の高い関数を動的に生成するテクニックであるカリー化といった、関数型プログラミング特有の発想を使いこなせるようになると、より簡潔で再利用性と保守性の高いコードを書くことができる。本書はそんなノウハウを存分に学ぶことができる良著だ。
プログラミング初心者の方には、早い段階で関数型プログラミングを覚えることをオススメする。実際に書けなくともその思想だけでも覚えておくと、飛躍的にコードがわかりやすくなるからだ。*1特に、Java などのオブジェクト指向言語を使った現場で、何階層にも渡って継承されまくった謎のクラスや、やたらと引数が多く行数の長い関数に囲まれて仕事をしている人は、そのままだと同じような汚いコードを再生産する可能性が非常に高いので、一度関数型プログラミングの薫陶を受けてほしい。
『PHP: The Good Parts』
サーバサイド言語として根強い人気を誇る PHP の Good Parts をまとめた薄い本。最初に紹介した『JavaScript: The Good Parts』とは違い内容はかなり初心者向けだが、これから PHP を勉強してみようという人が入門書とともに手に取るには悪く無い。全体でも150ページ程度ととても薄く、初学者でも無理なく読み進められるだろう。特に、第4章「文字列」、第5章「配列」は何度も使う tips が詰まっているのできちんと使えるようになりたい。
『エンジニアのための時間管理術』
何かと忙しいITエンジニアのタスク管理術を説く薄い本。著者はサーバ管理者であり一般的なプログラマには必ずしも当てはまらない事例も多いが、ルーチン作業の切り出し、突然の割り込み作業への対処法、日々の仕事から人生設計にまで応用できる「サイクルシステム」の考え方などは、ITに携わる人々だけでなく一般のビジネスマンにも取り入れることのできる内容だ。
とかくITエンジニアは効率厨である。手動を嫌い自動化を好み、冗長を嫌い簡潔を好む。毎日がんばって仕事してるのになんでこんなに忙しいんだろう、と頭を抱えている方には、彼らのノウハウから学ぶことは多いはずだ。
なお、言うまでもないが本書が有効なのは自分の作業を自分でマネジメントできる人である。こちらの都合など関係なくガンガン仕事を押し付けてくる無能な上司のもとで働いていて、とても自分で作業量をコントロールできない人がこの本を読んでも焼け石に水なので、さっさと部署を変えるか仕事をやめたほうがいい。
まとめと言いつつ随分内容が偏ってしまって恐縮だが、筆者もまだまだプログラマとして勉強中の身なのでご容赦いただきたい。ほかにもいい薄い本あるよ! という方は、ブログやブックマークのコメントなどで補足していただけると幸いである。
*1:これは某現役はてなエンジニアの言葉の受け売りである