はじめに
これまで入社1~2年目で読んだ本をまとめる。
特にジャンルは固定していなくて、先輩に勧められた本や、技術ブログなどを参考に選択した。
ある程度、プログラミングの基礎がわかったタイミングで読むと良いと考えている。
達人プログラマー第2版
20年前に発売された第1版の改訂版。
より良いプログラマになるための実践的アプローチや思考法を学ぶことができる。
特に、割れ窓理論という、コード品質を高めていく思考法が非常に勉強になった。
世界一流エンジニアの思考法
アメリカのMicroSoftで働く牛尾さんが書かれた本。超巨大クラウドの開発の最前線で学んだ思考法が、世界一流のエンジニア達との会話の中で明らかになっている。特に、できる人ほど理解に時間をかけるという部分を、自分も意識するようにしている。
生成AIで世界はこう変わる
松尾豊氏の研究室所属の今井先生による、生成AIで変化する世界予測がわかる。
また、最新の生成AIの傾向を知ることができるので、応用可能な知識を知ることができる。
学術的に正しい知識を持っていて、確固たるエビデンスに則った未来予測を知ることができる。
GitLabに学ぶ 世界最先端のリモート組織のつくりかた
世界最大のリモート組織が実践する徹底したドキュメント化の手法を知ることができる。
GitLab社は世界67カ国以上に従業員2,000名以上の自社オフィスを持たない「世界最大のオールリモートカンパニー」である。
リモートワークのための方法論やカルチャーに加えて、評価、給料の決め方、部門ごとの仕事の進め方など、社員として必要な知識をすべて支えるドキュメント文化について知ることができる。
リーダブルコード
読みやすいコードなどコーディングにおいて必要な考え方が得られる。
「コードは理解しやすくなければならない。」という原則を日々のコーディングの様々な場面に当てはめる方法を紹介されている。
名前の付け方、コメントの書き方など表面上の改善から、コードを動かすための制御フロー、論理式、変数などループとロジックについて解説されている。
特に、コードのコメントがミスリードになるので、適切なコメントを記載する必要がある。場合によってはコメントしないことも必要。
Webを支える技術
Webがここまで成功した秘密は、HTTP,URI,HTMLなどのアーキテクチャにあることがわかる。
HTTPやURI,HTMLなどの仕様を歴史や設計思想を織り交ぜて解説されている。
Webサービスにおける設計課題,たとえば望ましいURI,HTTPメソッドの使い分け,クライアントとサーバの役割分担,設計プロセスなどについて,現時点のベストプラクティスを紹介されている。
特にURLのない世界観の話が印象的で、当たり前だと思っている技術が本当によく考えられた設計だと感じた。
ネットワークはなぜつながるのか 第2版
ブラウザにURLを入力してからWebページが表示されるまでの道筋をたどりながら、その裏側で働くTCP/IP、LAN、光ファイバなどの技術に触れられる。
機器やソフトウエアがどのように動き連携しているのかを探検しているので、ネットワーク全体の動きを把握できる。
特に、DNSの仕組みの部分でどのようにURLからIPアドレスに変換されているのかの部分が面白かった。
達人に学ぶDB設計徹底指南書 第2版
論理設計の基本から、正規化、パフォーマンスなど、押さえておくべき基礎知識やポイントを幅広く体系的に解説されている。
やってはいけないアンチパターン、注意すべきグレーノウハウも丁寧に解説。
DB設計の基礎と実践をしっかり学ぶことができる
オブジェクト指向でなぜつくるのか 第3版
オブジェクト指向の全体像とそこに含まれる各技術が解説されている。
オブジェクト指向のプログラムが動く仕組みが具体的にわかる。
プログラミングコンテストAtCoder入門
Atcoderの基礎的な問題とその解説が掲載されている。
初めてプログラミングコンテストに参加しようと思い読んで、解説を読んで非常に納得感があった。
プロを目指す人のためのRuby入門
Rubyの言語仕様や開発の現場で役立つRubyの知識を説明した本
Rubyの関数などの網羅性が高く、入門書としてデファクトスタンダードとなっている印象がある。
Ruby 3.0までの変更点や新機能に合わせて加筆・修正されている。
辞書がわりに調べることが多く、役に立っている
リファクタリング:Rubyエディション
名著「リファクタリング」をrubyベースで書き直したもの。
ファクタリング自体についてはもちろん、rubyの使いこなしに関しても学ぶところがたくさんある。
一部理解が難しいロジックとなっているが、全体的にリファクタリングをすることによる改善する体験ができる。
パーフェクト Ruby on Rails 【増補改訂版】
こちらはRailsのデファクトスタンダードである本。Railsを体系的に理解するために活用。通読することで案件では使わない技術なども知ることができるので知識の幅がグッと広がる。
対象バージョンをRuby 2.6/2.7系、Rails 6.0系であるため、古い書き方である点が注意。
改訂3版JavaScript本格入門
JavaScriptの歴史から基礎・応用的な知識が体系的に整理されている。
ECMAScript 2022に対応しているため、最新の基本文法から、開発に欠かせない応用トピックまで解説されている。
JavaScriptらしく書くために大切なオブジェクトの扱い方や、大規模開発でさらに実用的になったオブジェクト指向構文を学び、しっかりと動くプログラムの作り方を本質から理解できる。
React実践の教科書
多くの人が感じるReactの挫折ポイントを解決する構成になっているので、諸学者も理解しやすい。
JavaScriptでの実装とReactの実装の違いを確認しながら進むため、Reactの良さを理解しやすい構成である。
著者のじゃけさんのUdemy講座を2つ受講し、ハンズオンでアプリを作成しながら基礎知識を理解できた。
Pythonプロフェッショナル大全
シリコンバレーエンジニア酒井さんの著書で、Pythonの基礎からアプリ作成まで幅広く学べる。
Python導入から開発までの実践的ノウハウやPython環境で開発運用するコツが1冊の中にぎっちり詰まっていた。
アプリ開発ではRoboterというレコメンドアプリを作成し、基礎的な知識習得により、機械学習への興味を増やすことができた。
ドメイン駆動設計入門
DDDと呼ばれる設計手法を学ぶことができる。
『エリック・エヴァンスのドメイン駆動設計』の内容を継承しながら、著者独自の見解も見られて読み応えのある1冊。
実装例を見ながら、DDD手法を用いることによるリファクタリングを通して、この手法を強みを理解できる。値オブジェクト、エンティティ、ドメインサービスについて特徴を理解できた。
特にEmail, Telephoneがドメインのサービスクラスのリファクタリングを通じて、その必要性を非常に理解できた。
Docker絵とき入門
Docker基礎知識をイラスト付きでわかりやすく説明されている。
初学者にやさしい設計で随所にわかりやすさを重視していることがわかる。Volume, Networkの仕組みが非常に理解しやすかった。オプションも常にわかるようにフルオプション名で記載されている(-f なら --file など)点も良かった。
AWSの基本・仕組み・重要用語が全部わかる教科書
AWSの基本から、主要サービスの概要、特徴などを、わかりやすい図解とともに、1つひとつ丁寧に解説されている。
入門編、基礎編、実践編と分かれており、イラスト付きで読みやすく、用語や仕組みなどを体系的に理解でき、辞書的な扱いにも有効。
Linuxのしくみ
Linux OS における、プロセス管理、プロセススケジューラ、メモリ管理、記憶階層などを体系的に理解できる。
また、OS とハードウェアに関するしくみがどのように動くのか、実験とその結果を示す豊富なグラフや図解から理解できる。
特に、プロセス管理について、処理の実行タイミングで発行/削除のサイクルが理解しやすかった。