殿堂入り記事

2019夏、先輩が若手に贈る「お世話になった技術書60選」- 入門からガチまで –

2019.08.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

  • 「この本にはお世話になったなぁ〜」
  • 「今でもたまに読み返してます」
  • 「マジでめちゃめちゃ影響受けた」
  • 「そう、こいつが俺のエンジニア人生を変えやがったんだ...」

↑「こんな本を紹介してください!」と社内チャットで投げてみたら、すんごいことになったのでそのリストをシェアさせていただきます。

※推薦理由はあくまで推薦者による個人的な意見や思い入れたっぷりなので、それを踏まえてお楽しみください。

目次

  1. アプリケーション/プログラミング
    • ドメイン駆動設計
    • Java言語で学ぶデザインパターン入門
    • Pro Git
    • BINARY HACKS
    • Effective Java
    • リバースエンジニアリング―Pythonによるバイナリ解析技法
    • なるほどUnixプロセス ― Rubyで学ぶUnixの基礎
    • リーダブルコード
    • メタプログラミングRuby 第2版
    • Head First デザインパターン
    • テスト駆動開発
    • CODE COMPLETE
    • The Art of Computer Programming
    • Javaでなぜつくるのか 知っておきたいJavaプログラミングの基礎知識
    • 言語設計者達が考えること
    • 闘うプログラマー
    • Scalaスケーラブルプログラミング
    • xUnit Test Patterns
    • オブジェクト指向でなぜつくるのか 第2版
  2. インフラ/システム設計
    • ネットワークはなぜつながるのか
    • インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門
    • UNIXという考え方―その設計思想と哲学
    • セーフウェア ~安全・安心なシステムとソフトウェアを目指して~
  3. データベース
    • SQLアンチパターン
    • 門外不出のOracle現場ワザ
    • 理論から学ぶデータベース実践入門
    • SQL実践入門
    • グラス片手にデータベース設計 販売管理システム編
    • NoSQLの基礎知識
  4. Microsoft/Windows
    • PowerShell実践ガイドブック ~クロスプラットフォーム対応の次世代シェルを徹底解説~
    • Essential .NET ― 共通言語ランタイムの本質
    • インサイドWindows
    • Virtualizing Desktops and Apps with Windows Server 2012 R2 Inside Out
    • .NETのクラスライブラリ設計 開発チーム直伝の設計原則,コーディング標準,パターン
    • Windows PowerShell in Action
  5. セキュリティ
    • 体系的に学ぶ 安全なWebアプリケーションの作り方 第2版
    • 暗号技術入門 第3版
  6. プロジェクトマネジメント
    • ザ・ゴールシリーズ3冊
    • トヨタ生産方式――脱規模の経営をめざして
    • アジャイルな見積もりと計画づくり
    • 初めてのアジャイル開発
    • デッドライン
    • プログラミングの心理学―または、ハイテクノロジーの人間学
    • エッセンシャルスクラム
  7. デザイン
    • 誰のためのデザイン?
    • インタフェースデザインの心理学 ―ウェブやアプリに新たな視点をもたらす100の指針
    • ノンデザイナーズ・デザインブック
  8. 思想/自己啓発
    • 情熱プログラマー ソフトウェア開発者の幸せな生き方
    • ハッカーと画家
    • The Phoenix Project (邦題: The DevOps 逆転だ!究極の継続的デリバリー)
    • SOFT SKILLS ソフトウェア開発者の人生マニュアル
    • 人月の神話
    • 伽藍とバザール
    • Team Geek
    • Joel on Software、More Joel on Software
    • ピープルウエア
    • 仕事は楽しいかね?
  9. その他
    • Convex Optimization
    • ソフトウェア見積り 人月の暗黙知を解き明かす
    • 数学ガールシリーズ

アプリケーション/プログラミング

ドメイン駆動設計

ドメイン駆動設計

推薦理由

ドメインを反映していないモデリングは辛いよね、というのを認識させてくれた。 設計のカタログではなく、行動も含んだパターンで書かれてるのが良い。

ソフトウェアの設計においてめちゃくちゃ影響を受けてる。 ユビキタス言語を形成し、モデリングをきちんとやるのが理想だと再確認できる。現実にどこまでやるかは別として。

Java言語で学ぶデザインパターン入門

Java言語で学ぶデザインパターン入門

推薦理由

デザインパターンという共通言語を作ることで、プログラム設計時の他人との意思疎通がデザインパターン名一つで済むようになる効果がある。それは、クラウドデザインパターンでも同様の効果があると思う。パターンを作って、名前をつけて、共通認識にすると意思疎通のスピードが上がる。大事。

Pro Git

Pro Git

推薦理由

Gitを少しさわった後に2章と3章を読もう。それだけでGitへの理解が大幅Upする。他章は必要に応じてでOK。電子版無料公開中。

BINARY HACKS

BINARY HACKS

推薦理由

C/C++開発者の必読書、開発/デバッグを効率化するための知識・ツールが幅広く紹介されていてオススメ。

Effective Java

Effective Java

推薦理由

Javaのプログラミングについて経験則を知見で埋められる感じがする。

リバースエンジニアリング―Pythonによるバイナリ解析技法

リバースエンジニアリング―Pythonによるバイナリ解析技法

推薦理由

プログラムがどうやって実行されるかわかって面白いです。

なるほどUnixプロセス ― Rubyで学ぶUnixの基礎

なるほどUnixプロセス ― Rubyで学ぶUnixの基礎

推薦理由

Rubyでシステムコール叩いてみながら、Unixの挙動を理解できる本。結構勉強になりました。

リーダブルコード

https://www.amazon.co.jp/dp/4873115655

推薦理由

プログラム書く人は必携。可読性の高いコーディング技術が得られる。
他人の書いたコードでイライラしたことある人、逆に自分の書いたコードで他人をイラつかせたことがある人には非常に参考になる。

メタプログラミングRuby 第2版

メタプログラミングRuby 第2版

推薦理由

闇魔術が実際には闇じゃないんだよってのを教えてくれます。

Head First デザインパターン

Head First デザインパターン

推薦理由

いわゆるGoFデザインパターンの紹介かと思いきや、OOPの設計原則をその必要となる理由や動機から学べる良書。言語はJava。

テスト駆動開発

テスト駆動開発

推薦理由

テスト駆動開発(TDD)の原典。凡人こそTDDを武器の一つとして持つべき。本書の付録Cも読み物としておすすめ。

CODE COMPLETE

CODE COMPLETE

推薦理由

ひどいコードしかない職場だったので、ちゃんとしたコードの設計とか変数の名前つけとか勉強になった。新人に何か感じたときに渡してた。

The Art of Computer Programming

The Art of Computer Programming

推薦理由

偉大な数学者・計算科学者であるドナルド・クヌース先生が書いているコンピュータプログラミングに関する書籍(今も書き続けている!)。入門ではない + 物量がヤバい、が間違いなく勉強になる。

Javaでなぜつくるのか 知っておきたいJavaプログラミングの基礎知識

Javaでなぜつくるのか 知っておきたいJavaプログラミングの基礎知識

推薦理由

圧倒的なJava愛、JVM愛。読んだら誰でもJavaが好きになると思う。

言語設計者達が考えること

言語設計者達が考えること

推薦理由

主流になっているプログラミング言語の設計者達が、どのようなコンセプトをもって言語を開発したのかを滔々と語るだけの本。ストラウストラップが「プログラマがメモリの管理を自分でやらないとかナンセンス」と言ったかと思えばゴズリンが「そんなめんどくせえことをプログラマにやらすんじゃねえ」と言ってみたり。C#の設計者が「プログラミング言語のほとんどは同じであり、独自の機能を実現できる等の特徴はわずかしかない。しかしプログラミング言語の扱いやすさはほとんど同じ部分がいかに書きやすくなっているか」みたいなことを言ってて深い。

闘うプログラマー

闘うプログラマー

推薦理由

MSにいるような優秀な人達でもいろいろ苦労しながら開発しているのが伝わってきて、非常に参考になった。

Scalaスケーラブルプログラミング

Scalaスケーラブルプログラミング

推薦理由

Scalaの基本から始まって、オブジェクト指向と関数型のパラダイムをいかに組み合わせるか、2つが組み合わさることによってコンポーザビリティがいかに高まるかが学べる。マスターすると他の言語への見方が変わるはず。

xUnit Test Patterns

xUnit Test Patterns

推薦理由

テストを書く時のパターンや問題意識が全てまとまっている。コードの書き方自体は古いけど、根底にある考え方は今でも全然役に立つと思う。

オブジェクト指向でなぜつくるのか 第2版

オブジェクト指向でなぜつくるのか 第2版

推薦理由

オブジェクト指向に至るまでの歴史的な経緯が書いてあるので、Humanクラスが〜みたいな話以前の部分から理解できて頭にスッと入る。またコードも書いてあるので手を動かして学べます。タイトルどおり「なぜ」が書いてあり面白かったです。

インフラ/システム設計

ネットワークはなぜつながるのか

ネットワークはなぜつながるのか

推薦理由

本書に限らずなぜなぜシリーズはおもろい。そこまで技術的なベースがなくても読める。新人の頃にめちゃくちゃお世話になりました。

インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門

インフラ/ネットワークエンジニアのためのネットワーク技術&設計入門

推薦理由

実務よりでかつ分かりやすいオンプレミスのネットワーク入門書。入門TCP/IPにいきなり行くよりここ経由の方が色々と分かりやすいと思う。

UNIXという考え方―その設計思想と哲学

UNIXという考え方―その設計思想と哲学

推薦理由

みんな大好きUNIXの思想が学べる。最近話題のマイクロサービスの思想と近いものを感じる。

セーフウェア ~安全・安心なシステムとソフトウェアを目指して~

セーフウェア~安全・安心なシステムとソフトウェアを目指して~

推薦理由

安全設計とはどう考えるべきなのか、が全て書いてあります。「ヒューマンエラーはエラーではない」。

データベース

SQLアンチパターン

SQLアンチパターン

推薦理由

先人の経験が、知恵として綺麗に整理されています。テーブル設計する前に必ず読もう。

門外不出のOracle現場ワザ

門外不出のOracle現場ワザ

推薦理由

DB Magazineの連載の書籍化ですが、Oracleを構築・運用する際の実践的なTipsが多く前職では机の脇においてよく使っていました。(ただし、「2019年現在も使えるか?」となるとちょっと自信がありません)

理論から学ぶデータベース実践入門

理論から学ぶデータベース実践入門

推薦理由

リレーショナルモデルって何なのってのがちゃんとわかる本。

SQL実践入門

SQL実践入門

推薦理由

なんとなく書いてたSQLがちゃんと書けるようになる本。

グラス片手にデータベース設計 販売管理システム編

グラス片手にデータベース設計 販売管理システム編

推薦理由

業務システム向けのRDBMSテーブル設計の実践的な入門、解説書です。前職で基幹システムの開発をしてたので当時は滅茶苦茶お世話になりました。今どきのスケールさせるためのテーブル設計といったことは記載されていませんが、テーブル設計に慣れてない人にとっては役に立つと思います。

NoSQLの基礎知識

NoSQLの基礎知識

推薦理由

簡潔にまとまっていて、NoSQL界隈を理解するのに手っ取り早い。ただ、もう古いかも。

Microsoft/Windows

PowerShell実践ガイドブック ~クロスプラットフォーム対応の次世代シェルを徹底解説~

PowerShell実践ガイドブック ~クロスプラットフォーム対応の次世代シェルを徹底解説~

推薦理由

間違いなく良い本だとお勧めできます。レビュアーとして参加しました。

Essential .NET ― 共通言語ランタイムの本質

Essential .NET ― 共通言語ランタイムの本質

推薦理由

「.NET Frameworkとは何か」を知るには最高の一冊です。

インサイドWindows

インサイドWindows

推薦理由

Windowsの内部挙動を解説している数少ない本のうちの一つです。ボリューム的に全部読み込むのは難しいのですが、辞書的に必要なったときに必要なところだけ読む形でも使えます。

Virtualizing Desktops and Apps with Windows Server 2012 R2 Inside Out

Virtualizing Desktops and Apps with Windows Server 2012 R2 Inside Out

推薦理由

洋書ですが、Remote Desktop Serivceを使ってVDI環境を作る際に非常に役に立ちました。(当時のRDSのドキュメントが2012 R2に対応したものが全然無く、仕組みを網羅的に解説している書籍が世界的に見てもこれくらいしかなかった背景があります)

.NETのクラスライブラリ設計 開発チーム直伝の設計原則,コーディング標準,パターン

.NETのクラスライブラリ設計 開発チーム直伝の設計原則,コーディング標準,パターン

推薦理由

中の人による.NET Frameworkのライブラリ設計に対する解説や反省点について書かれています。.NETなアプリケーションで、特にライブラリを書く際の指針として非常に役に立ちます。

Windows PowerShell in Action

Windows PowerShell in Action

推薦理由

PowerShellの言語設計者であり今はAWSに転職したBruce Payetteさんの書いた本で、事実上の言語仕様書です。PowerShell使いにとっての必読書です。

セキュリティ

体系的に学ぶ 安全なWebアプリケーションの作り方 第2版

体系的に学ぶ 安全なWebアプリケーションの作り方 第2版

推薦理由

徳丸本。アプリケーションのセキュリティもインフラ屋としては知っておいて損はないです。WAFとかも付き合っていくので。

暗号技術入門 第3版

暗号技術入門 第3版

推薦理由

暗号技術全般が学ベる。第1版からお世話になってます。

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

ザ・ゴールシリーズ3冊

推薦理由

あらゆる分野で応用が効く制約の理論(Theory of Constraints)を紹介した原典。

トヨタ生産方式――脱規模の経営をめざして

トヨタ生産方式――脱規模の経営をめざして

推薦理由

アジャイル的な考え方の基礎を学びました。技術書というよりは歴史の教科書みたいな本ですがタメになります。

アジャイルな見積もりと計画づくり

アジャイルな見積もりと計画づくり

推薦理由

アメリカの大学では教科書として使われいてるくらいの定番かつ名著。優先順に付けをロジカルに行う方法などもあって、学びが非常に多い。最高すぎて3冊買った(人に貸す用、自分用、友達にあげる用)

初めてのアジャイル開発

初めてのアジャイル開発

推薦理由

XP、スクラム、RUPなどなど。漸次的成長型開発プロセス?についてわかりやすく解説してくれる本で、アジャイルの考え方の基礎的なところはこれ読めばだいたい大丈夫だと思われる。重要度の指標もなにげに便利。

デッドライン

デッドライン

推薦理由

デマルコの名著は数あれど、イチオシが何かと聞かれたら私はこれ。架空のプロジェクトについて小説形式で解説をしている。アジャイル的な要素はあんまりないけど、プロジェクトの流れを学びたいならオススメ。

プログラミングの心理学―または、ハイテクノロジーの人間学

プログラミングの心理学―または、ハイテクノロジーの人間学

推薦理由

今から20年くらい前に読んだ、今から40年くらい前に書かれたプログラミングについての本です。そんな昔の紙テープとか使ってた時代の人たちがアジャイルっぽいいい感じの開発手法やチーム作りをしていたという読み物を読むと胸が熱くなります。

エッセンシャルスクラム

エッセンシャルスクラム

推薦理由

スクラムを始めた時に、スクラムガイドには書かれていない謎の部分を知りたい欲求を満たしてくれた。スクラムマスターが常に片手に持っておく良さそう。

デザイン

誰のためのデザイン?

誰のためのデザイン?

推薦理由

ユーザインターフェイスデザインはアートじゃないんだよ、「デザイン」なんだよ、ということをロジカルに書いた本。Appleのユーザインターフェイスガイドラインを作った人なので、非常に説得力があるし、マンマシンインターフェイスにおいて人の認識モデルをどう仮定して、どこでミスマッチが起きてるか考えることができるんだ、というコペルニクス的展開を与えてくれた本。これを副読本にした認知心理学の授業が面白くて何度も読み返した。今読むなら増補改訂版を。

インタフェースデザインの心理学 ―ウェブやアプリに新たな視点をもたらす100の指針

インタフェースデザインの心理学 ―ウェブやアプリに新たな視点をもたらす100の指針

推薦理由

UI/UXの基礎的なところ。続編と合わせて非デザイナーにこそ読んで欲しい。つか読むべき。プレゼン資料などにも通じる話です。

ノンデザイナーズ・デザインブック

ノンデザイナーズ・デザインブック

推薦理由

デザインが苦手、センス無いとか言ってないで、基礎となる原理原則は知っておくと良い。Webデザイン、UIデザイン、ファッション、何にでも生きてくる。

思想・自己啓発

情熱プログラマー ソフトウェア開発者の幸せな生き方

情熱プログラマー ソフトウェア開発者の幸せな生き方

推薦理由

気が滅入ったときにやる気をとりもどすために読み返すくらいには面白い。クラメソに転職する際も読み返してました。若干古い本なので今の人に合うかはわからないです。

ハッカーと画家

ハッカーと画家

推薦理由

エンジニアとしての背中を押してくれるポールグレアムのエッセイ集。Web上に日本語訳されたものが一部あるのでそれを見るだけでも楽しい。

The Phoenix Project (邦題: The DevOps 逆転だ!究極の継続的デリバリー)

The Phoenix Project (邦題: The DevOps 逆転だ!究極の継続的デリバリー)

推薦理由

DevOpsってこういう概念・文化・マインドセットなんだよっていうのがまとまってると思う。読んだのは日本語翻訳版ですが、邦題が大嫌いなので原題で記載。

SOFT SKILLS ソフトウェア開発者の人生マニュアル

SOFT SKILLS ソフトウェア開発者の人生マニュアル

推薦理由

エンジニアとしての人生設計について書いてある良書です。会社に縛られず、エンジニアとしてどう生きていくか、考えさせられました。ブログ書いた方がいいとかも書いてあります。

人月の神話

人月の神話

推薦理由

ソフトウェア開発の古典中の古典。ソフトウェア開発が本質的に難しい点が何かを身を以て知ることができる。セカンドシステム症候群とかブルックスの法則とか現場であるあるな状況にすでに名前がついてるので、それを知るだけでも価値がある。

伽藍とバザール

伽藍とバザール

推薦理由

OSSの歴史と雰囲気が知れておもしろい。

Team Geek

Team Geek

推薦理由

技術書ではないけど、自身の心構えを考えられると思います。

Joel on Software、More Joel on Software

Joel on Software、More Joel on Software

推薦理由

未だに通用するようなソフトウェア開発、組織などの話がてんこ盛り。

ピープルウエア

ピープルウエア

推薦理由

間違いなく名著です。

仕事は楽しいかね?

仕事は楽しいかね?

推薦理由

試してみたことだったり、偶然の発見から何か素晴らしいものが生まれているというのが事例を通して分かる。何にでも通じるだろなと思ったので。プライムユーザーならKindle版無料。

その他

Convex Optimization

Convex Optimization

推薦理由

機械学習を勉強すると、必ず必要になる最適化のパータンを基本から一つ一つ教えてくれる本です。結構難しかったですけど、読み込んで理解すれば機械学習のところをより深く理解することができます!Youtubeに講座が全て公開されています。

ソフトウェア見積り 人月の暗黙知を解き明かす

ソフトウェア見積り 人月の暗黙知を解き明かす

推薦理由

この本を何回も読んで見積もりのやり方・考え方を無理やり身につけました。同じ機能も言語によって実装にかかる工数が理論上異なるとかは気づきになりました。残念なのは、この本の最新版がないこと。いまはプログラムをなるべく書かない方が正解だと思うので、そのあたりも踏まえた最新版があればいいのにな、と思います。

数学ガールシリーズ

数学ガールシリーズ

推薦理由

すぐに役に立つものでは無いけど、エンジニアなら数学知っておいて損はないはず。学校の数学とは一味違った切り口で、数学のおもしろさを体感できます。あんまり数学知らなくても読み物として楽しめるし、高校数学1A2Bくらい理解しているとより楽しめます。フィボナッチ数列の一般項に感動します。プログラマならフィボナッチ数列一回くらい実装するよね。再帰で素朴な実装して、計算量爆発して、O(n)の計算量に最適化とか考えるけど、一般項で解ければO(1)です。早い。

最後に

夏どころか当面は読むものに困らなくなりました。

今年の夏は圧が強めの技術本で乗り切ろう!

それでは、この辺で。クラスメソッド大阪オフィスのちゃだいんでした。