SE 1年目で読んだ技術書68冊＋α

# 概要
社会人1年目が終わるので、この1年間で読んだ本のうち技術寄りの68冊と、Udemy 10本をざっくり紹介します。

## ※2024年3月追記
- 他記事に合わせてオススメ度を10段階に変更
- 2024年現在に合わせて記述を全面修正

本記事で読んだ書籍は2021年4月から2022年3月までに読んだものです。
生成AIなど最新のトレンドを反映していないため、2年目以降の記事も適宜読んでもらえると嬉しいです。

## 説明
オススメ度、難易度を10段階で付けています。

「**技術寄りのスキルを地道に付けたいSE1年目**」を想定しており、情報系学部生やWeb系エンジニア1年目へのオススメ度とは異なります。また、SEでも「コードは書きたくないです。上流だけやって数年でコンサルに転職したいです」というキャリア観の人へのオススメ度とも異なります。

難易度観はIT業界新卒平均の感覚と上下にズレていることがあります。
参考までに、新卒入社時の自分です。
- 情報系修士卒（基礎理論系）
- 応用情報は持ってる
- CやPythonは平凡程度にできる。関数型言語の方が得意
- フロントエンドは初心者
- Japanese Traditional SIer

また、Udemy講座は、会社のお金で受講できる人に向けて紹介しています。
よく90%オフや95%オフをしているので、定価で自腹を切るのはオススメしません。

# プログラミング言語
## Java（書籍 9、Udemy 1）
SEの共通語です。ほとんど未経験だったので入社前に初心者向けの本からやりました。
2024年現在は『プロになるJava』という本が2, 3冊目あたりに読む本として定番になっています。今3冊選ぶなら『スッキリわかるJava入門』『スッキリわかるJava入門 実践編』『プロになるJava』に取り組みます。


### 『やさしいJava』
オススメ度★9 難易度★3
入社前の3月に読みました。
Javaの1冊目としてクセがなく、いい本だと思います。
プログラミング未経験者でも読めると思いますし、入門部分が冗長すぎないので他言語経験者がJavaの文法を学ぶ目的でも読みやすいです。
強いて別の入門書を勧めるとしたら、後述の『スッキリわかるJava入門 実践編』への接続として、1冊目から合わせてスッキリわかるシリーズの方がいいかもという程度です。「その時最新版の発売日が新しい方を選ぶ」でもいいです（2024年3月現在、『やさしいJava 第7版』は2019/1/22、『スッキリわかるJava入門 第4版』は2023/11/6）

### 『スッキリわかるJava入門 実践編』
オススメ度★9 難易度★6
4月頃に読みました。
よく使うAPI、ファイル操作やDBアクセスなど、1冊目の文法書の補完として欲しい章が幅広く入っています。
2冊セットのJavaの定番書は何種類かありますが、立ち読みした限りはこれが1番「1冊目を終えた今、ちょうど欲しい内容」でした。
数年ごとに改版されてJavaのアップデートが反映されていて、最新の第四版は2024年に出ている点でもオススメです。

### 『オブジェクト指向でなぜつくるのか』
オススメ度★8 難易度★5
入社前の3月に読みました。
機械語からオブジェクト指向までの歴史や、メモリレベルの動作のザックリした説明など、「ある程度の規模のソフトウェア開発をする上でこれは知っていた方がいいよね」という内容がマニアックにならない範囲で詰まっています。
オブジェクト指向に限らない話も区別なく書かれている不正確さはありますが、「ソフトウェア工学の知見を活用してなぜつくるのか」として、オススメの本です。

### 『Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発』
オススメ度★5 難易度★7
11月に読みました。
業務でSpringを使っていて、この先もしばらく使うだろうなということで通読しました。ちなみにこの頃までに、研修でSpring Bootを学び、2000行程度のシンプルなプログラムを書いています。
やや応用的なことをしたい時も「これはSpringの標準的な使い方で可能で、あのあたりに書いてあった」と思えるようになったのは良かったです。
Spring使うならこの本を手元に置いて最初の方を読んでおくのは重要ですが、通読は優先度高くないと思います。

### 『徹底攻略Java SE 11 Silver問題集』
オススメ度★10 難易度★6
2月に読みました。
Java Silver受けるならこの本1冊で間違いないと思います。
資格自体の価値は分かりませんが、「こんな書き方普通は絶対しないけど、理論上は可能？エラー？」という疑問に「そんなことしないから分からない」でなく「技術的にはこうなっているので、可能（/エラー）」と答えられるようになったので、受験料が自腹じゃないなら取り組む価値のある資格だと思いました。

### 『なぜ,あなたはJavaでオブジェクト指向開発ができないのか~Javaの壁を克服する実践トレーニング』
オススメ度★6 難易度★5
入社前の3月に読みました。
ジャンケンゲームなどを題材に「どうクラス分けするか」「全部main関数に書く場合よりどう嬉しいか」ということが手を動かしながら学べます。
「自分でクラス設計して、数百行程度のプログラムを書いてみる」という練習ができるという方向性は優れた書籍で、Javaでこれができる代替良著はあまりないのではと思います。一方で2004年の本なので文法が古く、オブジェクト指向の使い方も過剰なので、今となってはこの本のサンプルプログラムを「正解」とみなすべきではないという点に留意が必要です。

### 『Java言語で学ぶデザインパターン入門』
オススメ度★5 難易度★8
入社前の3月に読みました。
デザインパターンの名著で、理論・コード例・練習問題が付いていて素晴らしいです。
今日では言語機能やフレームワークが改善されていることもあり、「（GoFの23個の）デザインパターンを（全て）学ぶべきか」は賛否両論あり、少なくとも1年目の必読書という立ち位置ではないという見解です。

### 『ずばりわかる!Java Javaの良いコード、悪いコード』
オススメ度★1 難易度★4
入社前の3月に読みました。
キャラクターの会話形式で業務上のJavaの間違ったコードを正しいコードに修正するという初学者向けの本です。この頃は「同じクラスのインスタンス間で変数共有したいならstatic使えばいい」とかすら知らないレベルだったので、とても勉強になりました。
いい本でしたが、2006年の本で文法も内容も古く、あえて今読むような特別な内容ではないので、オススメ度を低くしています。

### （Udemy）『サーブレットを完全マスター！挫折させないJavaプログラミング講座～Webアプリ編～』
オススメ度★2 難易度★4
7月に受講しました。
JSP/サーブレットの簡単なプログラムをハンズオンで学ぶコースです。
環境構築パートが丁寧で、講義パートの割合も多く、概要を学ぶにはいいと思います。
9.5時間のコースですが、環境構築が2.5時間とJS基礎が1時間くらいなので、JSP/サーブレットだけずっとやっているわけでもないです。
このテーマの講義としては良いのですが、「新卒が限られた時間でサーバサイドJava学ぶならJSP/サーブレットじゃなくていきなりSpring Bootとかでよくない？」とよく言われますし、その通りだと思います。

### 『スッキリわかる サーブレット&JSP入門』
オススメ度★1 難易度★5
10月に読みました。
スコープやサーブレットクラス実行の理解が深まりました。
サーブレット&JSPの文法の詳細は現代的なWeb開発で直接役立つわけではないので、「より低いレイヤの仕組みが知りたい」という欲求がなければ優先度は高くないと思います。

## フロントエンド系（書籍 4、Udemy 5）
SEが必ずしもフロントエンドの最新フレームワークを常に追う必要はないかなと思いますが、業務でも個人開発でもWebシステムは一般的に使われており、最低限書けた方が良いです。

### （Udemy）『[HTML/CSS/JavaScript] フロントエンドエンジニアになりたい人の Webプログラミング入門』
オススメ度★10 難易度★3
6月に受講しました。
完全な初心者が0から学ぶためのコースです。
講義時間は9時間弱ですが、一緒に手を動かすので実際は20-30時間くらいの分量です。
HTMLオンリーのページから始めて、入力フォーム、BootStrapを使ったレスポンシブなページ、Ajax通信をするページなど6個くらいページを作ります。
「ググりながらならHTML/CSSで書けそう」「JSも勉強すれば色々できそう」という0から1への踏み出しとして有意義なコースです。
画面操作を動画で追うことができる点、他の人へのQ&Aで解決することも多い点、講師に質問を投げることができるという点が、書籍にはないUdemyならではの利点ですね。

### 『独習JavaScript 新版』
オススメ度★10 難易度★9
11月に読みました。
JSのメカニズムに向き合った本で、thisやプロトタイプ、レキシカルスコープや非同期処理の仕組みにがっつり踏み込んでいます。理解するには数回通読する必要がありますが、最高でした。
これは日常的にJSフレームワークを使っているWeb系の人にもオススメ度★10だと思います。
JS入門として読むと辛いと思うのでJSの基本文法を他で学んでから読むのがオススメです。

### （Udemy）『超TypeScript入門 完全パック(2021)』
オススメ度★8 難易度★9
12月に取り組みました。
「超入門」な「完全パック」は大体どちらかがウソですが、これは本当です。
完全パックの通り、かなり網羅的に機能や文法を割と早口で14時間たっぷり解説しています。
また、「TSの何が嬉しいか」が丁寧に語られていたり、とても誠実な入門講座だと思います。入門者が単に使い方を覚えるだけなら最初は1-5章と9章だけでもいいかなとは思います（TSを使う全人類がMapped Typesやデコレータを使いこなしているとは思えないので）
JSの解説はなく、アロー関数やthisが指すものあたりは既習として進みます。

なお、TypeScriptの書籍としては2022年以降は『プロを目指す人のためのTypeScript入門 安全なコードの書き方から高度な型の使い方まで』（通称 **ブルーベリー本**）が定番良著になっています。

### 『スラスラ読める JavaScriptふりがなプログラミング』
オススメ度★3 難易度★1
8月に読みました。
プログラミング未経験者向けの本としては丁寧でいい本だと思います。
他の言語を知ってる人に向けた本ではないですが、Kindle Unlimitedにあるので、入門前にザっと眺めるには悪くないと思います。

### （Udemy）『【JavaScript＆CSS】ガチで学びたい人のためのWEB開発徹底実践（フロントエンド編）』
オススメ度★5 難易度★8
8月に受講しました。
「モダンなデザインを実現する機能を、手動で作ってちゃんと理解しよう」という趣旨のコースです。
CSSアニメーションやレスポンシブデザイン、ヒーロースライダーを手書きします。
最終的に作れるようになるものは、[コース紹介](https://www.udemy.com/course/front-dev-tutorial/)の「Webサイト作成（序）_【導入】セクション紹介」のサンプル動画を観るのが分かりやすいです。
コースとしては非常に完成度が高く、CSSを本格的に学びたい人にはオススメできます。
VSCodeショートカット、Sass導入、chrome開発ツールの使い方などにも多くの学ぶ点があるので、無料で観られるなら前半観て後半はつまみ食いするのもアリです。

### （Udemy）『【JS】ガチで学びたい人のためのJavaScriptメカニズム』
オススメ度★5 難易度★10
9月に履修しました。
JSの言語仕様を丁寧に丁寧に解説し、演習問題で理解を確認できる動画です。
Twitterでよくバズる「JSのこの動作が意味分からない」というもののほとんどを、自力で説明できるか少なくとも「ECMAScriptのこの辺読めば分かるはず」と言えるようになります。
以前は日本語でJSのメカニズムを学べるコンテンツがES2015より前の『開眼! JavaScript』くらいしかなかったので超オススメでしたが、この講座の講師が同コンセプトでよりとっつきやすい『独習JavaScript 新版』（上述）を出版したので、書籍の方で良いと思います。

### 『モダンJavaScriptの基本から始める React実践の教科書』
オススメ度★1 難易度★5
11月に読みました。
フレームワークの本でJavaScriptの基本から始まなくていいのにと思いがち。
Reactの雰囲気を掴んで体験するための最初の1冊という位置づけです。
この本が悪いわけではないのですが、変化の速い分野なので入門書が数年で陳腐化します。
今Reactを学ぶなら[公式スタートガイドの日本語訳](https://ja.react.dev/learn)でも十分分かりやすいと思いますが、プログラミング1年目でこれが読みづらいようであれば、他の最新の入門書をチェックしてみてください。

### （Udemy）『【2時間半で学べる！】はじめてのAngular超入門！実践で学ぶ本格Webアプリ開発【TypeScript】』
オススメ度★1 難易度★1
12月に取り組みました。
（当時の）公式チュートリアルの最初のページを、一緒に手を動かして作る講座です。
公式チュートリアルは日本語もありますが、「もし躓いてもこの講座を観れば一緒に画面操作できます」という点では価値があると思います。
無料で観れる人なら躓いた時にググる時間を省けるのでアリですが、近年のチュートリアルの更新に動画がどの程度反映されているかは未チェックです。

### 『Angular アプリケーションプログラミング』
オススメ度★4 難易度★7
12月に読みました。
Angular案件にアサインされたので手を動かしての学習と並行して通読しました。
咀嚼しきれてはいませんが、脳内にインデックスは貼れました。
分厚く、開発中に横に置いておくと安心というタイプの本です。

#### ※注
Angularは既にフロントエンドフレームワークの主流争いから脱落しており、自己学習するなら最初には選ぶべきではない段階にきています（もちろん、自分のようにプロジェクトで使う場合はAngularを学ぶべきです）
2024年3月現在、今最初に日本語で学ぶなら「React」「Vue」の2つから選ぶのがよいです。社内の先輩や身近の質問できる人がVueを推している環境であればVue、それ以外ならReactかなというのが個人的意見です。

## Python（書籍 2）
Pythonは学生の頃からちょっとしたスクリプト作成に重宝していて、WebスクレイピングやDiscord bot作成に使っていました。
新卒SEの第一言語はJavaで第二がJavaScriptだとすると、Pythonは様々な領域で便利な、第三言語の有力候補だと思います。

### 『自走プログラマー ~Pythonの先輩が教えるプロジェクト開発のベストプラクティス120』
オススメ度★7 難易度★6
9月に読みました。
関数名やクラス設計の話から、システム設計や要件定義の話まで、「ホビープログラミングとソフトウェアエンジニアリングの橋渡しをする本」でした。
自分で最初から最後までWebシステムを作ってみる経験をするのは重要で、特にPythonのDjangoを使ってWeb開発するならとてもいい本です。

### 『退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング』
オススメ度★2 難易度★2
入社前の2月に読みました。
前半はPython入門で、後半はテーマ別の自動化処理です。「ノンプログラマーにもできる」っていうか「ノンプログラマーは前半でプログラマーになるからできる」です。
前半は他言語経験者には冗長ですし、完全な未経験者は別の本で入門する方がよいです。
後半は面白く、特にExcelの章で得た知識は今も時々使ってます。
2024年にノンプログラマーがこれくらいの自動化をするなら（シリーズではないですが）タイトルインスパイアの『**面倒なことはChatGPTにやらせよう**』がオススメで、Python学習についても書かれています。

## C++（書籍 2）
2024年現在は、無料で環境構築不要の[APG4b](https://atcoder.jp/contests/APG4b)を激推しします。

### 『猫でもわかるC++プログラミング』
オススメ度★5 難易度★5
9月に読みました。
少し古めの入門書で、このシリーズのC言語には18歳の時にお世話になりました。
未経験者も対象のC++の入門書は「変数とは？」から「ポインタ」「構造体とクラス」まで書かないといけないので本質的に難しいですが、この本はさらに「多重継承」「演算子のオーバーロード」「テンプレート」までを入門者向けに分厚すぎずにまとめていて、えらすぎです。
ビッド演算やポインタの話が詳しく、C++の低レイヤ寄りの部分を強調した本。Java経験者が読むならこっちがオススメ。

### 『スラスラわかるC++』
オススメ度★5 難易度★4
1月に読みました。
こちらも未経験者も対象の入門書。この著者は『プログラムはなぜ動くのか』が有名です。
「なぜクラスなんてものがあるか」のような、C++のオブジェクト指向寄りの部分を強調した本。C経験者が読むならこっちがオススメ。
（functionの音訳が関数の語源というのは俗説らしいですが）

http://kirara0048.blogspot.com/2018/09/blog-post_8.html#:~:text=%E3%80%8C%E5%87%BD%E6%95%B0%E3%80%8D%E9%9F%B3%E8%A8%B3%E8%AA%AC%E3%81%A8%E3%81%AF,%E3%81%8C%E8%A8%98%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%80%82&text=%E5%87%BD%E6%95%B0%E3%81%AF%E8%8B%B1%E8%AA%9E%E3%81%A7%E3%83%95%E3%82%A1%E3%83%B3%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%EF%BC%88function%EF%BC%89%E3%81%A8%E3%81%84%E3%81%84%E3%81%BE%E3%81%99%E3%80%82

## Rust（書籍 2）
Rustはオンラインチュートリアルが親切であり、ほとんどの場合は他言語経験者が始める言語なので、「入門書なしでオンラインチュートリアルで十分」という説も有力です。和訳済みオンラインチュートリアルは、文法を学べる[Rustツアー](https://tourofrust.com/00_ja.html)や、Rust特有の機能の説明が豊富な[TRPL](https://doc.rust-jp.rs/book-ja/)が有名です。

### 『Rustプログラミング入門』
オススメ度★2 難易度★5
11月に読みました。
『実践』って付いていない方の『Rustプログラミング入門』
初学者が「Rustらしさをざっくり学んで動かしてみる」チュートリアルくらいの本です。
2019年に「日本語母語話者によるRust入門本」を出版したこと自体はとても素晴らしいですが、今読むならこれではないかなと。

### 『やさしいRust入門』
オススメ度★2 難易度★5
11月に読みました。
他言語の知識を前提としないRust入門書というチャレンジングな本ですが、Rustらしさの説明が物足りませんでした。
これも、今読むならこれではないかなと。


# コンピュータサイエンス

## アルゴリズム（書籍 6）
入社前のレベル感は、「アルゴリズム専門外で競プロもやっていない情報系院卒の平均」くらいです。
具体的には「有名ソートやメモ化再帰フィボナッチあたりは普通に書ける」「ダイクストラ法の挙動と正当性は説明できるけど、自力で実装するとバグ取りに1時間以上掛かる」「データ構造のTrie？Treeの誤植？」みたいな。
2024年現在、競技プログラミング本としては『競技プログラミングの鉄則 ~アルゴリズム力と思考力を高める77の技術~』が新定番です。

### 『アルゴリズム ビジュアル大事典　～図解でよくわかるアルゴリズムとデータ構造～』
オススメ度★10 難易度★3
5月に読みました。
有名アルゴリズムを視覚的に分かりやすく解説した本です。見た目の分かりやすさだけでなくオーダや疑似コードも載っています。
難易度的にも、スワップや初等ソートからセグ木やダイクストラ/ベルマンフォード/ワーシャルフロイドまで載っていますし、「有名アルゴリズムの気持ちを理解する」ために読むならとても素晴らしい1冊です。

### 『プログラミングコンテスト攻略のためのアルゴリズムとデータ構造』
オススメ度★10 難易度★9
1-3月に読みました。
アルゴリズムを使った問題演習はもちろん、初歩の初歩から「データ構造を自分で実装する」「ライブラリを自作する」という経験を積めます。学生時代のアルゴリズム講義の座学の知識が実践の伴ったものに変換され、大量の経験値が得られました。
同じような背景の人に非常にオススメしたい1冊。
タイトルに反して、競プロ対策本としてはあまり最短距離ではなく、基礎の実践を重視しています。

### 『問題解決力を鍛える!アルゴリズムとデータ構造』
オススメ度★10 難易度★9
3月に読みました。
アルゴリズム設計技法に多くのページを割いた書籍です。
難度は上述の『プログラミングコンテストのための～』と同程度で、あちらが「典型的なアルゴリズムとデータ構造を理解して自分で書く」というコンセプトなのに対して、こちらは「初見の問題に対して自力で解決方法を思いつけるようになる」というコンセプトです。
また、扱っている分野も異なり、こちらはネットワークフローなどグラフ理論の解説が充実していました。

### 『問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本』
オススメ度★9 難易度★8
12月に読みました。
「なぜそのアルゴリズムで正しく求まるか」「そのアルゴリズムはこのデータ量で概算どれくらいの時間が掛かるか」が養えます。
敷居は低く、最低限のプログラミングと16歳くらいまでの数学が分かれば読めますが、演習問題含めて全部理解するのはとても難しい。アルゴリズムを考える楽しさを知ってAtCoderに登録する道案内。

### 『進化計算アルゴリズム入門 生物の行動科学から導く最適解』
オススメ度★2 難易度★10
11月に読みました。
背景解説とコード量（C++)のバランスがよく、入門書と言いつつ理論や数式がカッチリ書かれています。それでいて8つのアルゴリズムが200ページ弱に収まっていて、世界観がよく分かりました。市民図書館で借りましたが大学図書館にありそうな「入門」で、他の最適化入門本を読んでから読むべきでした。難しい。

### 『銀髪赤眼の後輩と学ぶ競技プログラミング』
オススメ度★3 難易度★8
1月に読みました。
銀髪後輩ちゃんと対話形式で競プロの初級問題をC++で解いていく技術同人です。
イラストが可愛いのですが、現在入手困難です。

## 理論計算機科学寄り（書籍 5）

### 『プログラムはなぜ動くのか　第２版　知っておきたいプログラムの基礎知識』
オススメ度★10 難易度★4
5月に読みました。
CPUやメモリのレベルで「プログラムはどうやって動作しているのか」を平易に解説した名著です。
情報系以外の出身なら必読レベルだと思います。

### 『コーディングを支える技術――成り立ちから学ぶプログラミング作法』
オススメ度★8 難易度★8
12月に読みました。
「if文やfor文はなぜ存在するのか」「スコープ, 型, オブジェクトに対する様々な言語の見解」など、プログラミング言語の各概念を、言語設計者の視点から解説した本です。これで「面白そう！」と思った人には刺さる内容なのでぜひ！

### 『はじめての数理論理学:証明を作りながら学ぶ記号論理の考え方』
オススメ度★6 難易度★4
入門前の2月に読みました。
この分野の入門書としてはとても平易で、情報系の学部3年生に勧めるなら★10です。
SEには優先しては勧めないですが、コードや仕様を書く人が論理学を学ぶ世の中になると嬉しいという気持ちはあります。

### 『情報科学における論理』
オススメ度★3 難易度★10
入社前の3月に読みました。
有名良著で、情報系の難しめの数理論理学の講義の教科書によく指定されているイメージです。
一瞬で述語論理までの基礎が終わり、様相論理や直観主義論理に1章ずつ割いています。

### 『万能コンピュータ: ライプニッツからチューリングへの道すじ』
オススメ度★4 難易度★7
17世紀から20世紀前半までの「コンピュータ前史」としての数学者・論理学者のエピソード本。
「ライプニッツの夢」「ヒルベルトの救済プログラム」「クロネッカーの亡霊」「ゲーデルの不完全性定理」といったワードに胸がときめく中2心溢れる人向け。

## ネットワーク/クラウド（書籍 5、Udemy 2）

### 『ネットワークがよくわかる教科書』
オススメ度★10 難易度★3
入社前の3月に読みました。
初学者向けかつ内容が正確で、SE1年目が読むネットワークの本としてとてもいいと思います。
最低限知っておくべきプロトコルには個別にページを割いていて、これをちゃんと頭に入れておけば「先輩の言っていることが単語レベルでチンプンカンプン」ということにはならないかなと。

### 『擬人化でまなぼ! ネットワークのしくみ』
オススメ度★9 難易度★4
5月に読みました。
ネットワークの2冊目として優れています。
「OSI参照モデルは分かる。そこで使われてるプロトコルも分かる。で？」という状態から、一連の流れとして説明できるようになります。
（オタクコンテンツは無理という人は、『ネットワークはなぜ繋がるのか』が類書です）

### (Udemy)『AWS：ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得』
オススメ度★9 難易度★6
8-9月に取り組みました。
AWS講座というよりは、AWSを使ったインフラ講座です。
出来上がるものが「EC2にWordPressを入れて運用」なので地味に思えますが、その過程でやることは実用的です。Linuxコマンドをほとんど打ったことない人でも挫折しないように丁寧にフォローしてくれますし、独自ドメインを購入して差し替えたり、冗長構成に変更したり、スモールステップで進化していくので達成感もあります。
本や資格で理屈として知っている知識が実践的な技能と結びつく、有用な講座だと思います。
※AWSのレイアウトアップデートに伴う動画アップデートは未チェックなので、講座の更新日や最新レビューをご確認ください。

### 『AWS認定資格試験テキスト AWS認定 クラウドプラクティショナー』
オススメ度★8 難易度★6
7月に読みました。
AWSクラウドプラクティショナー対策のド定番で、まずこれを読むべきだとは思います。
しかし試験対策という意味では、あまり試験範囲のキーワードを網羅していないので、無料or安価な模擬試験も受けておく方が無難です。
（※自分の場合は、ハンズオンやハッカソン → 本テキスト → 下のUdemy講座で問題演習としました）

### (Udemy)『【2022年版】この問題だけで合格可能！AWS 認定クラウドプラクティショナー 模擬試験問題集（7回分455問）』
オススメ度★8 難易度★7
7月に取り組みました。
7回分の問題演習で、ちゃんと解説もついています。
この講座が自費負担0で観られる環境なら、上の試験テキストを読んだあとはこの講座でポチポチしていれば安全に合格するとは思います。

### 『図解 クラウド 仕事で使える基本の知識』
オススメ度★3 難易度★1
5月に読みました。
クラウドがバズワードになった頃に出た本で、「クラウドを導入すると何がいいか」「SaaS, PaaS, IaaSとかって何が違うの？」など一般教養として知っておくべきことがうまく整理されている点がよかったです。
2011年の本なので具体的なサービスや事例は古く、比較的最近の代替書籍としては2022年9月刊の『クラウドエンジニアの教科書』などがあります。

### 『いちばんやさしい5Gの教本 人気講師が教える新しい移動通信システムのすべて』
オススメ度★1 難易度★2
5月に読みました。
バズワード解説にしては技術解説に紙面を割いていて、技術解説にしては物足り1冊ですが、5G関連のキーワードにアンテナを張れるようになるというのがいい読み方な気がします。

## DB, SQL（書籍4、Udemy 1）

### 『イラストで理解 SQL はじめて入門』
オススメ度★6 難易度★1
5月に読みました。
1冊かけてJOINの触りまでやるような、初心者向けの中でも易しい1冊です。

### 『SQLの苦手を克服する本 データの操作がイメージできれば誰でもできる』
オススメ度★4 難易度★3
9月に読みました。
SQL文を見て「どのテーブルをどんな条件で結合して、どのレコードのどの列を取得しているか」をまだ視覚的にイメージできない頃に読むと、目から鱗かもしれません。

### (Udemy)『3時間で学ぶ SQL ・データベース 超入門【丁寧な解説+演習問題で SQL データ抽出の基本が身につく】標準 SQL』
オススメ度★5 難易度★5
12月に取り組みました。
SELECT文のみに絞った入門講座で、練習問題とのバランスやボリュームはちょうどいいと思います。
INSERTやUPDATEをやらない代わりに、SELECTに関してはHAVING句までやるので、他の入門書と合わせて補完的に使えるところもポイント高いです。

### 『SQL実践入門 ──高速でわかりやすいクエリの書き方』
オススメ度★8 難易度★10
10月に読みました。
「実践入門」というのは「実行計画を理解してクエリを高速化するレベルの入門」という意味で、中級者向けの内容です。
初級者向けの本には載っていない多くのことを学べる良著です。

### 『絵で見てわかるOracleの仕組み 新装版』
オススメ度★8 難易度★7
2月に読みました。
Oracle Databaseの仕組みの初学者向けの本ですが、内容が詳しく、ORACLE MASTER試験対策を始める前の1冊としても優れていると思います。

## Web技術系（書籍 2）

### 『「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか』
オススメ度★10 難易度★4
3月に読みました。
「なぜ今日のWeb技術（サーブレット/JSP, cookieやセッション管理, MVCなど）が生まれたか」を歴史や技術的根拠を踏まえて丁寧に解説した良著です。ただし2010刊行の本なので「今日」がかなり古いです。
それを了承した上で読む分には今でもいい本です。まぁ黎明期から今日を1冊に収めるのは難しいので、最近のことは別の本で読むことにして、2010までを概観するために読むのが正解かなと。

### 『React Angular Vueをスムーズに修得するための最新フロントエンド技術入門』
オススメ度★6 難易度★2
2月に読みました。
SPAの概要や利点にページを割いた、React/Angular/Vueの入門以前本です。
「どういうモチベーションでこれらの技術が流行っていて、なぜ自分も学ぶ必要があるか」を整理できます。
分かりやすくていい本ですが、こういう初学者向け書籍で「次世代SPA」のような混乱の基になる造語を出すのは悪なので、オススメ度が大幅に下がっています。ここだけ本当に残念。

## その他技術（書籍3）

### 『改訂2版 わかばちゃんと学ぶ Git使い方入門〈GitHub、SourceTree、コマンド操作対応〉』
オススメ度★9 難易度★6
7月に読みました。
SourceTreeというGUIアプリを使ったGit入門で、同じことができるコマンド操作も付いているのがとてもオススメです。
1周目はGUIで「何がしたいのか」、2周目はCUIで「どうやるのか」を学ぶといいんじゃないでしょうか。
自分は実際はSourceTreeでも完全コマンド操作でもなくVSCode上でGitを使っていますが、その追加学習コストはほぼないので、まずはわかばちゃんと学べば良いと思います。

### 『Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎』
オススメ度★4 難易度★10
8月に読みました。
教師あり/なし学習の各アルゴリズムの特徴紹介と実践だけでなく、特徴量エンジニアリング、モデルの評価、パイプライン構築にも1章ずつ使っていて、非ディープな機械学習を1冊で濃密に学べました。
機械学習アルゴリズムはscikit-learnを使用するため、数学やアルゴリズムの高度な前提知識は不要ですが、読み応えがあります。
僕は夏季10連休の半分がこの1冊に溶けました。平日にちゃんと読んだら1ヶ月掛かると思います。

### 『暗号技術入門 第3版』
オススメ度★8 難易度★8
11月に読みました。
暗号技術·認証技術について各手法の仕組みまで丁寧に掘り下げつつ、説明がかみ砕かれていて分かりやすいです。

# ソフトウェアエンジニアリング
ここでは便宜上「ソフトウェア開発を行う上で必要な事柄から、プログラミングとコンピュータサイエンスを引いたもの」くらいの意味です。
ちゃんとした定義は『Googleのソフトウェアエンジニアリング』の1章「ソフトウェアエンジニアとは何か」の議論が好きです。

## 設計、コードの書き方（書籍 4）
### 『リーダブルコード』
オススメ度★10 難易度★4
入社前の2月に読みました。読むのは3回目です。
読みやすいコードを書くための考え方やテクニックの名著。
本格的にチーム開発を始める前に読んでほしい本です。

### 『プリンシプル オブ プログラミング 3年目までに身につけたい 一生役立つ101の原理』
オススメ度★9 難易度★6
9月に読みました。これも読むのは3回目です。
よく名前を聞く法則の用語集や古典的名著への道案内として、よく網羅されていてオススメです。

### 『リファクタリング』
オススメ度★6 難易度★9
10-11月に読みました。
現代開発にリファクタリングは不可欠、リファクタリングを語るなら本書は必読、ゆえにオススメ度★10……と言いたいところですが、1年目でこれを通読してすぐ役に立つかというと疑問なので★6。
僕も後半の手法集は消化不良なので、数年後にまた読みます。
前半だけでもとてもいい本です。

### 『ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本』
オススメ度★7 難易度★8
11月に読みました。
DDDが簡単なサンプルでコードレベルで書かれていて良かったです。
「DDDって調べても自然言語の曖昧な説明ばかりだけど、結局なんなの……？」という疑問が解決できました。
DDDの古典的名著を読む前の最初の1冊としてとてもいい感じ。

## Webデザイン（書籍 3）
### 『エンジニアのための理論でわかるデザイン入門』
オススメ度★3 難易度★3
6月に読みました。
「デザインはロジックと試行錯誤で上達する」という価値観を持っていないなら『ノンデザイナーズ·デザインブック』と合わせてぜひ読んでほしいです。
内容はワイヤーフレームの章が良かったです。メインはフォント、レイアウト、色彩の基礎の基礎で、Webデザインとしての即効性は低いです。

### 『だから、そのデザインはダメなんだ。WebサイトのUI設計・情報デザイン　良い・悪いが比べてわかる』
オススメ度★8 難易度★3
8月に読みました。
ユーザビリティの観点から、サンプルサイトのデザインのビフォーアフターを解説した書籍です。
「具体的に悪い場所」「なぜ悪いか」「どう直せばいいか」がセットとなった事例が豊富に載っていて、初級者が一気にレベルアップするにはとてもいい本でした。

### 『プロとして恥ずかしくない 新・WEBデザインの大原則』
オススメ度★1 難易度★2
7月に読みました。
前半はレイアウトの種類やテーマごとの配色で、初心者としては良かったです。後半はCSSのプリ/ポストプロセッサツール、jQueryの使い方、SEO対策など陳腐化が速い章で、2014刊行のため内容は古いです。こういうコンセプトの新しい本は沢山あるので、新品を買うならこれではないと思います。

## 上流（書籍 5）
### 『【図解】はじめての上流工程(要件定義・システム設計・プロジェクトマネジメント)入門: よくわかる！システム開発入門』
オススメ度★7 難易度★3
9月に読みました。
上流の基礎を1冊にまとめた、新人SEにうってつけの本です。
新人研修で似たようなテキストでじっくりやるので、9月に読むのはちょっと違ったかなと思いました。入社前に予習として読むと良かったです。

### 『ITエンジニアのためのプロジェクトマネジメント入門』
オススメ度★6 難易度★3
5月に読みました。
PMBOK準拠のプロジェクトマネジメント本としてはかなり簡潔で薄い本だと思います。

### 『図解でわかるアジャイル・プロジェクトマネジメント』
オススメ度★5 難易度★4
5月に読みました。
アジャイルの理念や用語の解説から始まりますが、かなり実際のプロジェクトへの適用方法がかなり細かく書いてあります。
「アジャイルについて知ったかぶりたい」人向けではなく、「急にアジャイルPJのマネジメントを任されたどうしよう」という人向けの本だと思います。

### 『DX推進から基幹系システム再生まで デジタルアーキテクチャー設計・構築ガイド』
オススメ度★7 難易度★1
2月に読みました。
超上流、マイクロサービス、DevOps、ゼロトラストセキュリティのような今っぽい用語が手広くまとまっていて、知識の整理ができます。
想定読者はおそらくITコンサルやユーザ企業で、技術的な解説はありません。逆に言えばエンジニアは当然知っていると期待される内容で、SE1年目の抜け漏れを防ぐ本としても優れていると思います。

### 『プロマネ 一日一句』
オススメ度★1 難易度★1
8月に読みました。
1ページに2句ペースで、365句とその簡単な解説が載った本です。
何個か面白いものもあったはずですが、すみません忘れました。

## 組織論、キャリア論（書籍 4）
### 『エンジニアのためのマネジメントキャリアパス ―テックリードからCTOまでマネジメントスキル向上ガイド』
オススメ度★8 難易度★6
入社前の3月に読みました。
将来マネジメント方向に行くかもしれないと1ミリでも考えているなら、読む価値が十分あります。
日本のSIerのキャリアパスとは異なる面もありそうで、入社前はフーンという感じで読みましたが、5年後くらいに読むとより実感を伴って理解できるかなと思いました。

### 『エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング』
オススメ度★6 難易度★7
11月に読みました。
「エンジニアリングの本質は不確実性の削減」という定義で、ソフトウェアエンジニアリングを行う組織に必要な考え方や手法を解説した本です。
ストーリーラインは明快で勉強になりましたが、一文一文がやや難解で、普段本を読んでいないと読み通しづらいかもしれません。

### 『How Google Works』
オススメ度★10 難易度★3
2月に読みました。
「スマートクリエイティブ」「ラーニングアニマル」「ピザ2枚ルール」「20%ルール」「70対20対10」のような、孫引きの孫引きで語られがちな"Googleの文化"の元ネタをちゃんと知れます。
ソフトウェアエンジニアカルチャーの1つの理想形としてとても良い本だと思いますが、見聞の範囲では近年のGoogleはここから乖離しつつあるようなので、いずれピチャイ政権バージョンも読みたいです。

### 『［イラスト解説］ティール組織――新しい働き方のスタイル』
オススメ度★3 難易度★3
5月に読みました。
「結局ティール組織って何なの？」という疑問は解消できました。
一方で「明日からどう取り入れるか」というのは僕には分かりませんでした。
オリジナルは分厚いので、まずはこちらを読むと挫折せずに済みます。

# その他（書籍 6、Udemy 2、ゲーム 1）
分類に困ったりしたもの。

### 『NOISE 組織はなぜ判断を誤るのか』（上下）
オススメ度★10 難易度★5
12月に読みました。
行動経済学でノーベル経済学賞を獲ったダニエル・カーネマンらが書いた本です。
前著『ファスト＆スロー』が「バイアス」（誰もが同じ方向に偏るエラー）に焦点を当てているのに対し、こちらは「ノイズ」（人によって逆の偏りがあったり、同じ人でも日によって偏りが異なるエラー）がテーマとなっています。
技術書とかけ離れていると思うかもしれませんが、「なぜ人間の直感だけに任せず科学技術も用いるべきか」という説得に学術研究や社会実証を持ち出せるようになるだけでも業務に直接的に役立ちます。たとえば10章では「AIは過去の人間の差別的判断から学習するから差別を拡大させる」という通説に対して、複数の論文を引用して「注意深く構築されたモデルは人間の判断よりも差別的でなく予測精度も高い」ことを示しています。一方で「ビッグデータがあって最高の社会科学者と最高のAI科学者のチームが揃っていても、『貧困世帯の15歳のその後の人生を予測する』というコンペで高い精度は出なかった」話などは未来予測の限界として使えるのではないでしょうか。
下巻の帯コメントが松尾豊教授なことからも、AIやデータ分析から遠くない書籍だと思います。

### 『Turing Complete』
オススメ度★10 難易度★9
11-12月にやりました。
Steamで購入できる回路シミュレーションゲームです。[（リンク）](https://store.steampowered.com/app/1444480/Turing_Complete/?l=japanese)
すごく大雑把に言えば「パソコンを1から作るゲーム」です。
具体的には「NAND素子を組み合わせて色んな部品を作る」→「それらを組み合わせてチューリング完全なコンピュータを作る」→「サブルーチン呼び出しや四則演算ができるように改良し、自分でアセンブリ言語を定義する」→「そのアセンブリ言語でソート、右手法、ハノイの塔の解法などを実装する」というステップです。
真理値表や機械語という単語を知らないレベルからだとハードルが高いですが、インクリメンタルに作るので大学や資格勉強で部分的にでも知っていれば非常に楽しめるゲームです。
プレイ時間は全部埋めると約20-50時間で、チューリング完全なコンピュータを作るまではその半分くらいで出来ます。

### （Udemy）『【初級者から上級者まで】1日で学べるExcelの教科書 マスターコース』
オススメ度★7 難易度★3
12月に取り組みました。
基本的にはビジネス常識の範疇で、本屋に平積みされている少し厚めのExcel本くらいの内容です。
ただしショートカット関連の細かなtipsが丁寧だったり、トレースなどの計算チェックで1章使っていたりするので、1つ何か学ぶとしたらこれは面白いです。
9.5時間＋演習なので「社内研修だとしたら定時で収まらなくない？」というボリュームですが、録画なので再生速度を変えて観ましょう。

### （Udemy）『Excel中級者への150分【ピボットテーブル・VLOOKUP・条件付き書式・グラフ応用】』
オススメ度★7 難易度★4
12月に取り組みました。
Excel中級機能をハンズオンで触ってみるという講座で、こちらは知っている人には新鮮さはありませんが、逆に知らない人は必修だと思います。

### 『ポストモーテム みずほ銀行システム障害事後検証報告』
オススメ度★5 難易度★3
3月に読みました。
2020年頃のみずほの11回のシステム障害を、発生から鎮静まで時系列で丁寧にまとめ、その原因を分析した本です。
ハードや運用が主要因の障害では、一発アウトの大ミスというのは（マネロン未チェック以外）基本的になく、上から下まで小ミスを重ね続けた結果がディザスターなのだなと痛感しました。
人為的なミスで開発側SEがやりそうなものだと本書にも2度あった「設定したという言質は確認したが中身は確認しなかった」による見逃しがありそうです。怠惰というより技術力不足でそういう生殺与奪の権を握らせるマネジメントしかできなくなるキャリアは避けたいなと思いました。

### 『新版 SEを極める50の鉄則 入門編』
オススメ度★4 難易度★1
入社前の2月に読みました。
少し古い部分や、アカウントSE寄りのキャリアの話が多い部分もありますが、原則として役立つ部分も多い…かなと思います。

### 『いちばんやさしいグロースハックの教本 人気講師が教える急成長マーケティング戦略』
オススメ度★4 難易度★4
6月に読みました。
概論から各用語やフレームワークまで、グロースハック入門書として非常に良かったです。
個人的にマーケティングの勉強も好きで、「製品開発とマーケティングが、別々でなく一体となっている」という点で一応ここで取り上げましたが、ゆーてこの本を単体でSEに勧めたいかというとそうでもない。
サービスを個人開発する上で取り入れられるエッセンスはあると思います。

### 『トコトンやさしいIoTの本』
オススメ度★1 難易度★3
5月に読みました。
IoT自体の概要は本当にさわりだけです。また2018年の本で、実例や課題は古くなっています。
センサの章については解説がとても詳しくて面白かったです。
同じシリーズで同著者がセンサだけで1冊書いた本があるみたいで、読んでないけどそれは面白そう。

### 『ノーコード大全 アプリ開発編: アプリ開発の主要ツールからこれから注目のツールまで徹底解説』
オススメ度★1 難易度★1
9月に読みました。
ノーコードは自分では使わないとしても、動向を定期的に把握しておいた方がいいとは思っています。
この本は2021年3月時点のノーコード動向が簡潔にまとまっており、目的に適っていました。
kindle unlimitedで読めます。
2024年現在、この分野の期待は生成AIに移っており、『面倒なことはChatGPTにやらせよう』などを読むのがイイかなと思います。

# おわり
未経験者の場合、最優先は「何か1つのプログラミング言語を使えるようになること」と「広く浅くITリテラシーを身に着け、基本情報を取得すること」だと思います。
SEの新卒研修はJavaで行うことが多いと思いますが、内的先の人事や先輩に訊いてみてください。

2年目も書きました。

https://qiita.com/BinomialSheep/items/0453861218f728d86744

3年目も書きました。

https://qiita.com/BinomialSheep/items/7cfa5cacd16e0430e843