【全50冊】読んだことある技術書、自己啓発本についてひとこと書きながらひたすら挙げていく。
読んだことある本について、ひとことまじえながら挙げていきます。
シリーズでひとまとめにして(自分で勝手に同じ系統としてまとめて)、ひとこと書いてることもあります。
読んだことある本をリストアップするのが個人的な目的の1つなので、ひとことが薄いこともあります。
新しく本読んだら追記もしたいです。
コードを良くする系
アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技
名前からしてアジャイルのプラクティスの本なのかな?と思うけどそうではなく、本質的な内容はオブジェクト指向の本。
オブジェクト指向開発の神髄と匠の技、こっちの副題っぽい方が本の内容を示しているという。。
よりオブジェクト指向っぽいコードを書けるようになりたい方にオススメです!!こちらの本のおかげでオブジェクト指向への理解がぐっっと深まりました。
著者にはボブおじさんという愛称があるんですが、こちらの本にハマって以来「ボブおじさんはいいぞ」おじさんと化し、周りに布教しました。
SOLID原則やデザインパターンの勉強を通じて、よりオブジェクト指向っぽいコードが書けるようになります。ボブおじさんはいいぞ。
Clean Architecture 達人に学ぶソフトウェアの構造と設計
こちらもボブおじさんの本。
アジャイルソフトウェア開発の奥義から、本質的なところをうまく抜き出した内容といった印象です。
アジャイルソフトウェア開発の奥義を読んだことがないのであれば、こちらを導入として読んでから、アジャイルソフトウェア開発の奥義を読むと一層楽しいと思います。
こちらの本の5章が結構好きです。「OOとは何か?」ということについて記載されているのですが、ちょうど個人的にちょうどポリモーフィズムって最高だよなぁとか思っている頃に読んだので、内容がぶっ刺さりました。
あと、1章でTDDをした方が早く作業を完了できるという内容の実験結果が紹介されていて、TDDめちゃすごいやんとなりTDDの本買いました。
テスト駆動開発
テスト駆動開発本の最初の1冊といったイメージです。
TDDに興味あるけど、よくわかってない!という自分みたいな方にオススメです。
TDDの進め方がよくわかります。
新装版 リファクタリング 既存のコードを安全に改善する
リファクタリングの教科書、という印象の本です。
リファクタリング系の本読むならまずはこの本をオススメします。
またそもそもリファクタリングを必要としないコードを書くための勉強にもなります。最初からリファクタリング後のコードを知っていれば、そのコードから歩み出せるよねと。
あとコード改善系の本読んでると、やたら参考文献に挙がっているイメージがあって、それだけ参考にされているだけあって名著です。開発者なら全員にオススメできる本です。
この版のコードはJavaだけど、第2版はJavaScriptで書かれているらしいので好きな言語を選べるのもありがたいです。
Code Complete 第2版 上 - 完全なプログラミングを目指して
Code Complete 第2版 下 - 完全なプログラミングを目指して
強い人たちがこの本を推しているイメージがあって読みました。
完全なプログラミング目指しているだけあって網羅的です。
こちらの本はコードレビューする時のお供にしたい1冊です。
こうすると読みやすくなるんだけどなー、っていうがわかってるんだけど、なぜそうなのかうまく説明できない時に、この本を引きたいです。
各章ごとに参考文献がまとめられていて、より深掘りしたいことに関してそこから勉強を進めるとより捗りそうです。
リーダブルコード――より良いコードを書くためのシンプルで実践的なテクニック
みんな大好きな本ですよね。気軽に読めるのがいいと思います。
綺麗なコード書けるようになりたいけど、どの本から読み始めたらいいんだろうってときの最初の1冊って感じですね。私もこちらの本から入りました。
「無関係の下位問題を抽出する」の項が好きです。
レガシーコード改善ガイド
レガシーコードに立ち向かうための、心がまえ、理由、方法、テクニック、と一般的な設計論(多くないけど)について書かれています。
読むと、テストで保護してリファクタリングしていくぞ!という気持ちになるし、本で書かれていることの実践もできました。
既存コードイケてないなー、リファクタリングしたいなーと思っている方にオススメです。
この本が出版されたのと同じくらいの時代に出版された本をちょこちょこ読んでいるので、他の本で書かれている内容を思い出したり、リンクする体験が面白かったです。
レガシーコードからの脱却――ソフトウェアの寿命を延ばし価値を高める9つのプラクティス
レガシコードを作らないためにどうしたらいいかといった内容の本でした。
ただ、それを実践するためにはそのプロジェクトのやり方を変えなきゃいけないから、チームビルディングする側にまわったときにまた読みたいなーと思いつつ読んでないです。
リーダーやマネージャーの方が読むといい本かなぁ、と思います。
今読んだら違う感想を持てる気がするので、また読もうかな。
WEB+DB PRESS Vol.127
リファクタリングの特集に惹かれ購入。
論理的凝集の話が勉強になります。
やらかしそうなので気をつけたいです。
デザインパターン系
オブジェクト指向における再利用のためのデザインパターン(改訂版)
増補改訂版Java言語で学ぶデザインパターン入門
Head Firstデザインパターン――頭とからだで覚えるデザインパターンの基本
パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法
新版が出ているのでそちらを買った方がいいでしょう。) (↑版元のページが見つからなかったのでリンクはamazon)
(↑こちらの本に関しては、デザパタ理解したすぎて本買いまくってます。
下記のように私は使い分けてます。
- 原典に触れたければ -> オブジェクト指向における再利用のためのデザインパターン(改訂版)
- 辞書引きしたければ -> 増補改訂版Java言語で学ぶデザインパターン入門
- 楽しく学びたければ -> Head Firstデザインパターン――頭とからだで覚えるデザインパターンの基本
- 現実にパターンを適用する様子を観察したければ -> パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法
これからデザインパターンの勉強するぞ!って方にはHead First本が一番オススメです。勉強したことあってもオススメです。とにかくオススメです。
表紙で敬遠していたのですが、もう、びっくりするくらい素晴らしい本です。最初にこの本でデザインパターンに入門したかったと思いました。
人間は退屈だと感じるとなかなか学習が進まないもので、それを避けるための工夫が随所に散りばめられています。っていうような説明が最初に入っていて、この表紙にも意味があるだなーと納得しました。
退屈させないだけでなく、内容自体も凝っていて、「このパターンと、このパターン似ているけどどう違うんだ?」という疑問を解消させるためのコーナーもあったり、オブジェクト指向の設計原則にも触れていたりと、内容てんこ盛りの1冊です。
アルゴリズム系
問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本
こちらの本は数学苦手erの私にぶっささりました。
アルゴリズム系の他の本で途中で読むの辛くなって積んだ経験がある、AtCoderまだ茶色にも到達してないお😄という私みたいな方にオススメです。
ちょっと簡単すぎるかも?って思う箇所もありますが、それだけ易しいところから始めてくれます。
ABCの問題でこの本でやったやつだ!ってなるのが結構あって、いい本ダァと思ってます。
問題解決力を鍛える!アルゴリズムとデータ構造
読み中です。問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本で推薦図書としてあげられているので読んでいます。いまはDPの章を終えたところですがいい感じです。
プログラミングコンテスト攻略のためのアルゴリズムとデータ構造
定本Javaプログラマのためのアルゴリズムとデータ構造
先ほど述べた積んてしまった本たちです。問題解決力を鍛える!アルゴリズムとデータ構造を読み終えたらこの子達にリベンジしようと思っています。多分今度は完走できるはず。。。!!
アルゴリズムの本、どれから読むかですが、問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本の著者様がブログでこの難易度順だよって教えてくれているので、こちらが参考になると思います。
アルゴリズムと数学の本を書きました - E869120's Blogより
アルゴリズム図鑑 << チーター本 << 本書 < PAST 本 < 螺旋本 <= けんちょん本 < 典型 90 問 << 蟻本
技術書はその著者様の知識の結集でどれも素晴らしくて、自分にとって最適な難易度の本を選ぶのが大事だと思っています。
積んでいる本に関しては自分の能力不足で積んでしまっていると思っていて罪悪感があります。
Web
Webを支える技術 ―― HTTP,URI,HTML,そしてREST
この本は思い出の1冊です。技術書を買い始めたばかりの頃に読みました。
p.27より
個別のWebサービスが全体の調和を乱しては、全体が統一したアーキテクチャスタイルを守れない
この一節が印象に残っていて、仕様を考える時に「これは一般的、標準的な仕様なのか?」っていうのを考える癖がつきました。やたらRFCを確認したり、世の中に公開されているWebサービスの設計を覗いてみたりと。。。
これからWebに入門する方にオススメです。
Web API: The Good Parts
読みやすい本。
エンドポイントでmeとかselfとかどうなんだろうなぁと長いこと思っていたんですが、「自分の情報へのエイリアス」という題でmeとかselfとか使っているサービスの例が挙げらていて、
それはOKなんだ!と思わせてくれたのが印象に残ってます。
API設計することある人にオススメです。楽しく読めると思います。
OAuth徹底入門 セキュアな認可システムを適用するための原則と実践
4部構成になっているのですが、1部の導入的な説明がかなり良かったと記憶しています。
Real World HTTP 第2版――歴史とコードに学ぶインターネットとウェブ技術
著者様はHTTPの歴史なんでそんなに知ってるんだろう?って思ったのが印象に残ってます。
HTTP/2を全然しらなくて、その勉強のために買いました。満足しています。
DB
データ指向アプリケーションデザイン
データ処理のテクノロジーを総覧し、特性やトレードオフを詳述する本書はソフトウェアエンジニア、アーキテクト必携の一冊です。
紹介文のこちらの一文が本の内容を的確に表現しています。
データを処理/保存する技術、ツール、サービスはたくさんあります。
これらのもとにある考え方というか理論というか、、世の中にあるツール達を理解するためのベースとなる知識を得られます。
体感としてこの本を読むことで、データを扱うツール/サービスの公式ドキュメントを理解しやすくなりました。理解しやすくなるどころが本の内容とリンクしてくるので、知的好奇心を持ってドキュメント達を調べられるようになりました。
本の内容は難しい部分はありますが、なんとか分かるというか、ぎりぎり挫折せずに読み進めらました。詳細な説明はあるんですけど、詳細には入りすぎずっていうのがちょうどいい塩梅です。
非常に面白い本です。誰にでもオススメできます。
SQLパフォーマンス詳解
indexに関する内容が解説の中心です。indexがどういう構造になっているかの説明から始まり、indexをうまいこと機能せさるにはどうしたらいいか、どうしたら速くなるのかというのが解説されています。
明日、SQLのパフォーマンスチューニングしなきゃいけない!!って方や、
正直、実行計画の見方もよくわかってない!!って方にオススメです。
自分はそのシチュエーションで買ったら、役に立ちすぎてお気に入りの1冊となりました。
なお、本と似ている内容が普通にwebで無料で見れるみたいです。
SQLのインデックスとそのチューニングについてのオンラインブック
正確に比較してないからどれくらい違うのかは私はわからないです。
ただパッと見た感じだと購入したものの方が見やすい、わかりやすい印象を受けました。
達人に学ぶDB設計 徹底指南書 ~初級者で終わりたくないあなたへ
正規化について、わかりやすく説明されているのが印象に残っています。
ネットで正規化を調べてもいまいち腑に落ちない方や、改めて正規化の手順を確認したい方にオススメします。
SQLアンチパターン
SQLと銘打っていますが、DB設計に関する内容もあります。
SQLだけなら優先的に読まなくてもいいか〜とか思ってたんですけど、そうではなかったので、もっと早く読めばよかったと後悔した本です。
DB設計に携わる機会がある方にオススメです。
SQL実践入門──高速でわかりやすいクエリの書き方
後輩がPARTITION BY
を使っていて自分はそれを知らなくて、何それって聞いたらこの本で知りましたって教えてくれました。
結合の動きの解説がよかった印象がある本です。
リレーショナルデータベース入門[第3版]
理論よりの入門書です。入門だからといって簡単な本ではありません。
リレーショナルデータベースの理論に入門したいなーって思っている方にオススメです。
こちらの本の著者様はどうやらコッド博士と会話したこともあったらしく、そのエピソードをすげーと思いながら読んでました。本の内容自体も重厚で「強い・・・」って印象を受ける本でした。
低レイヤ
コンピュータシステムの理論と実装――モダンなコンピュータの作り方
通称Nand2Tetris。NAND回路の設計から始めて、コンピュータを作って、コンパイラ作って、最終的にはアプリケーションを作ろう!っていう内容の本です。
コンピュータのブラックボックス化されている部分のふたを開けて、隠されているものを覗き見たくなってきた方にオススメです。
素晴らしい本なのですが、章ごとの課題がかなり重いので、長期休みに買って読み進めるのがいいかなと思います。
はじめてのOSコードリーディング――UNIX V6で学ぶカーネルのしくみ
読み中です。
低レイヤの本についていっぱいまとめてあって素敵記事です。
なぜ◯◯なのかシリーズ
コンピュータはなぜ動くのか
プログラムはなぜ動くのか
ネットワークはなぜつながるのか
ネットワークはなぜつながるのかが、この中で一番印象に残っています。ブラウザにURL入力してから表示までの経路を辿っていく内容になっています。もう一度読みたいです。ネットワークの入門としてオススメの一冊です。
Java
やさしいJava
やさしいJava 活用編
基礎からのサーブレット/JSP
やさしいJava -> やさしいJava活用篇 -> 基礎からのサーブレット/JSP の流れで本を読んでJavaに入門しました。
基礎からのサーブレット/JSPをやったあとにRailsチュートリアルのTwitterクローンちっくなものをServlet/JSPで作って満足してました。
Effective Java
(私が持っているのは第2版です)
より一個上のレベルのJava使いになるための本です。
Java書く人ならオススメです。
Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発
Springを扱うなら隣に置いておきたい1冊。
ただちょっと内容が古い箇所もあるのでこちらの記事も参考にしつつ読みたいです。
Go
Go言語による並行処理
2章が面白いです。
CSP(Communicating Sequential Processes)がGoの並行処理モデルに影響を与えたよー、っていうことが書いてあって、確かにCSPの記法とGoのチャネルめちゃ似てるやん!となりました。
あと、並行性と並列性の違いについても恥ずかしながら意識したことがなかったので勉強になりました。
セキュリティ
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版
1年目に読みたかったと思った本です。
分厚いですが、図表が豊富で厚さから想定するより読みやすいです。
CORSの説明がありがたい、このあたりでエラーになってつまったらこの本を引きたい、と思っています。
暗号技術入門 第3版
こちらも図表が豊富でわかりやすい本でした。
入門としてぴったりの1冊です。
その他
Angular超入門
フロントエンドのフレームワーク全く触ったことがない、フロントについて右も左もわかってない自分みたいな方にオススメです。
この本読みおわったあとに、ブログ自作して満足しました。
ある程度フロントに慣れ親しんでいている方はもう少し難し目の本で入門する方がいいのかな?と思います。
UNIXという考え方―その設計思想と哲学
面白いです。
「スモール・イズ・ビューティフル」
「一つのプログラムには一つのことをうまくやらせる」
このあたりがお気に入りです。
UNIXとか関係なくコード書くときは小さいメソッド(短いコード)がいいと思うし、いろんなことをごちゃごちゃやってるコードはあまり書きたくないです。
ただシンプルにやるって本当に難しいんだよなぁ。
[改訂新版]プログラマのための文字コード技術入門
文字コードの変遷を追いつつ、その文字コードの特徴とかが勉強できます。
【この1冊でよくわかる】ソフトウェアテストの教科書[増補改訂 第2版]
1年目に読みたかったと思った本。
カバレッジ基準とか、同値分割とか、境界値とか、このあたりがあやふやになったときにこの本を引きたいと思ってます。
達人が教えるWebパフォーマンスチューニング〜ISUCONから学ぶ高速化の実践
いわゆるISUCON本ですね。ISUCON12に出る予定なので買いました。
ISUCONで戦うのに必要な情報、知識をネットから拾い集めるの大変だったので、本でまとめてくれるのはありがたいです。
これ読んで過去問解くだけで大分戦えそうな気がしてきました。
ソフトスキル、資質、自己啓発系
人を動かす
自己啓発系の古くからある名著。自己啓発本の類はあんまり読まないんですが、Code Completeで強く推されていたので、読みました。何度も擦られているネタなだけあっていい本でした。
画像の通りamazonで検索したら231件もひっかかります。あの手この手を使って出版されていてそれだけ名著ということが伺えます。
本の内容的には「誤りを指摘しない」の項が自分に刺さりました。誤りを指摘すると
p.161より
相手は、自分の知能、判断、誇り、自尊心に平手打ちを食らわされている
のでやってはいけない。
正しくて論理的なことであっても相手の感情を刺激するので、説得には繋がらないと。
どの本でかは忘れたけど、下記のような文章を読んだことがあり、
- 人間は結局動物であり、理屈より感情が優先されることがある
- 神ですら人を裁くのを死後まで待つのだから、人間の我々が生きている人を裁く(誤りを指摘する)のはNG
これらと繋がった感覚があるから印象にのこってるのかもしれません。
誤りを指摘するのはそれだけダメだってことですね。
Team Geek――Googleのギークたちはいかにしてチームを作るのか
流行っているらしい(?)HRTの元ネタ。私はこちらの本読むまでその言葉自体知りませんでした。
印象に残ったのは下記の内容です。
チームリーダーとして活動していて、メンバーが相談をしてきた場合に、問題解決モードに入って身を乗り出してはいけない。メンバーが相談してくるのはリーダーに問題解決してほしいのではなくて、問題解決の手伝いをしてほしいから相談してきている。
自分は問題解決モードになりがちなので、刺さりました。
理科系の作文技術
表現の柔らかさを優先しすぎて、伝えたいことの本質がわかりにくくなることってありますよね。
そこのバランス取るの難しいなーって思ってたときに、下記を読んで衝撃をうけました。
p.9より
理科系の仕事の文書では,「やわらかさ」を顧慮するために「あいまいさ」が導入されることきらう.
あとは、いわゆるパラグラフライティング的な内容が書かれていたことが印象に残ってます。
情熱プログラマー ソフトウェア開発者の幸せな生き方
まさに「エンジニアのための自己啓発本」といった印象を受ける本でした。意識が低空飛行しているときによむと効きそうです。この記事を書くためにパラパラめくってみたんですが、なにかを突きつけるような、行動をおこせと訴えかけてくるような、情熱を焚き付けられる感じを受けます。もう1回隙を見て読んで意識高めるか・・・。
Discussion