好きな技術書ランキングを発表するのが流行ってるらしいので便乗します。
もともとは初心者の時に役に立った技術書とかいうトピックだった気がしますが、この際どうでもいいや。
ジョー・セルコ『プログラマのためのSQL』
この本に書いてあるのはSQLの事ですが、しかしプログラミング全般に役立ちます。
僕がこの本で学んだのは、プログラムは処理ではなくて宣言だという事です。
まず、どのプログラム言語にもその言語を司っている設計思想があります。
だから、それに合わせたコードを書くべきです。
そして、言語にはセマンティクスが用意されています。
ただ漫然と動くコードを書くのではダメなのです。
その言語のセマンティクスを理解し、それを使って自分の意図をコードで表現することもプログラミングの大事な側面です。
ということをこの本が教えてくれました。
GoF『オブジェクト指向における再利用のためのデザインパターン』
一般的にデザパタ本と呼ばれている本です。
大体の言語にはinterfaceという機能がります。
これほど使い道がよくわからん機能もなかなかない気がします。
extendsはわかりやすいです。処理を共通化できるから。
それに比べてinterface単体では処理を共通化できず、一体お前は何がしたいのだと思います。
しかし、実際にはextendsを多用するとすぐにコードが汚れてしまいます。
反面intarfaceを(上手に)使ったコードの共通化はあまりコードが汚れないです(上手にやれば)。
初心者の方はぜひこのデザパタ本を写経するといいでしょう。
この本に書いてある内容は古く、現代では通用しないという事で多くの人の意見が一致しているようです。
僕もそう思います。
この本の内容は役に立ちません。
しかし、interfaceを何に使うのかを理解するうえで一番いい本だと思います。
どうしたらコードを汚さずに処理を共通化できるのか、ノックだと思ってやってみるといいと思います。
戸根勤『ネットワークはなぜつながるのか』
ネットワークスペシャリストが自信をもってお勧めできる、
最もわかりやすくネットワークの初歩を教えてくれる本です。
ソフトウェア開発をしていて、ネットワークについてほとんど知らないわけにはいかないと思います。
とはいえWeb系の開発者であればネットワークにめちゃくちゃ詳しい必要もないと思います。
その点この本は粒度が最適だと思います。
この本を読んで興味がわいたらもっと専門的な勉強をしてもいいし、
この本の内容だけでも実際に必要なことはばっちり身に付きます。
トム・デマルコ『デッドライン』
お仕事では、組織運営に対する洞察も重要です。
トム・デマルコさんは「ソフトウェア開発で起こる問題は大体人の問題だ」っていうんですね。
みんな自分たちはハイテクなことをしてるって思いあがってる。
でも本当にハイテクなことしてるのは最先端の発明・発見をしているごく一部の人だ。
それ以外のソフトウェア産業の人はみんな突き詰めれば人間関係ビジネスだ。
だそうです。
で、いかに人間の組織を使ってソフトウェアを作るかという事についてこの本が教えてくれます。
坂田アキラ『坂田アキラの 数列が面白いほどわかる本』
世間のイメージに反して、
プログラミングと数学って実はあんまり関係がないですよね。
Web系のプログラマーが数学を使う機会なんて普通はほぼないと思います。
数学力がない人でも全然問題なくやっていけるわけです。
ところが、数列だけはプログラミングとかかわりが深いので簡単にかじっておくといいかと思います。
ジョン・マコーミック『 世界でもっとも強力な9のアルゴリズム』
今までの本の中で、一番知識によっている本です。
この本を読みながら何か練習したりしなくてもいい本です。
圧縮や暗号化についてざっくり知っておくと便利だと思います。
そもそも、この「好きな技術書ランキング」みたいなのが今ネットで流行ってるのって、
この業界には「なぜかみんな知ってるけど、それをどこで教わってるのかわからない」みたいな知識が膨大にあるからだと思います。
という意図を鑑みるとこの本が一番お勧めかもしれません。
「なぜかみんな知ってるけど、教わる機会がない話」集としてはよくできてると思います。
泉水翔吾、 佐藤歩『超速! Webページ速度改善ガイド 』
Web系の開発者ならば、平場でPageSpeed Insights90点くらいは出せるようになってほしいと思います。
この本を読むとページ速度を上げるうえでどこが大事かがわかります。
それがわかっていると、開発の早い段階から速度を上げやすい設計にできます。
それとは別に、ページ速度はわかりやすい点数が出る点がいいと思います。
プログラミングというものはどうしてもゴールがあいまいになりがちです。
その点、この本を参考に特定のページの速度を上げる経験を繰り返すことによって
プログラミングスキルが全体的に向上するものではないかと思います。
ただ、ちょっと内容が古いところもあります。
最新情報は別途追った方がいいと思います。
変化が速い領域なのです。
徳丸 浩『体系的に学ぶ 安全なWebアプリケーションの作り方』
いわゆる徳丸本です。
あまり「読むべき本」などと強い言葉は使いたくないですが、
これは唯一「読むべき本」だと思います。
XSSやSQLインジェクションやCSRFなどについてわかりやすく書かれています。
リーアンダー ケイニ―『ジョナサン・アイブ 偉大な製品を生み出すアップルの天才デザイナ』
デザインの本も挙げたいなと思いました。
『誰のためのデザイン』『インターフェースデザインの心理学』などの名著と迷いましたが、
最終的にこの本を選びました。
具体的な技術はいろんなところで身に着けるとして、
そもそもIT系の人がちゃんとデザインに興味を持つことが大事だと思いました。
デザイン次第で商品の評価がこれほど変わるのかという事と、
いいデザインにするという事を工程に完全に組み込まなければいけないという事の両方を学べます。
『工程の最後にデザイナーさんに仕上げをお願い』ではないのです。
『いいデザインのものを作るという事がゴールで、プログラミングはそのお手伝い』と考えなければいけないのです。