文系ド素人が Web エンジニアとして新卒入社するまでに読んできた本をまとめた

# はじめに

こんにちは。新卒Webエンジニアの@sho-hataです。

この記事では、**人差し指タイピングをしていたレベル**の自分が、**「Web エンジニアになろう！」と決意してから入社するまでの一年半で読んできた本**を、振り返りもかねてご紹介したいと思います。

この記事を読んでくださった方の刺激になったり、少しでもお役に立てれば嬉しいです！

# 読んできた本

自分は、**「ブラウザって何？ ホームページじゃないの？」「サーバー...?」**:thinking:といった程度の**ド素人**でした。

そのため、言語やインターネットについての基礎知識が身についていないにもかかわらず、難易度の高い本に手を出して撃沈するなど、この１年半は無駄が多くありました。

これからWebエンジニアを目指す方には、自分と同じ轍は踏んで欲しくないという思いがあります。
そこで、読んできた本からのみではありますが、

- **読む優先順位が高い本**
- **「この本だけはおさえたほうがいい！」と感じた本**

については**目印（★）**を付けました。

1つの参考にしていただければと思います。
# 仕事編

## Web 基礎知識

### [★『Web を支える技術 -HTTP、URI、HTML、そして REST(WEB+DB PRESS plus)』](https://www.amazon.co.jp/Web%E3%82%92%E6%94%AF%E3%81%88%E3%82%8B%E6%8A%80%E8%A1%93-HTTP%E3%80%81URI%E3%80%81HTML%E3%80%81%E3%81%9D%E3%81%97%E3%81%A6REST-WEB-PRESS-plus/dp/4774142042)

- **Web の歴史的な経緯に関する内容から、`HTTP`や`URI`、そして`REST`とはなにか**を学ぶことができる本。

- 自分はこの本で、曖昧だった**HTTP メソッドの`POST`や`GET`について**の理解が深まりました。

- webアプリケーションを作る人にとって、必須の知識が詰まっている本です。

---

### [『マスタリング TCP/IP ー入門編ー(第 6 版)』](https://www.amazon.co.jp/dp/4274224473/)
- 今のインターネットを支えている**通信プロトコルの一つである`TCP/IP`について**、豊富なたとえを交えながら丁寧に解説してくれる本。

- 自分はこの本で、「ルーターは何をしている装置なのか」をようやく知りました。

- ただ、**「ネットワーク入門」というよりは「通信プロトコル入門」書です。**読む前にFE（基本情報処理）のネットワークの範囲をサラッと頭に入れておくと ◎

---

### [『Web API The Good Parts』](https://www.amazon.co.jp/dp/4873116864/)

- **良い Web API 設計をするために必要な考え方**を学ぶことができる本。

- 勉強のどこかの段階で、Web APIを設計してSPAを作る機会があると思うので、そのときに読むとWeb APIについての理解がより深まります。

---

## プログラミング基礎知識

### [★『コーディングを支える技術―成り立ちから学ぶプログラミング作法 (WEB+DB PRESS)』](https://www.amazon.co.jp/dp/477415654X/)

- **関数、型、クラスなどの概念が、プログラミング言語に"なぜ"存在するのか**を解説してくれる本。

- この本を読むことで、なぜ

  - **様々な言語があるのか**
  - **それぞれの言語に同じ・異なる特徴があるのか**

  を理解できます。

- 文末に用語定義ページがあるのですが、**お洒落すぎる「無限ループ」の用語定義**が書かれています。

---

## コンピュータサイエンス基礎知識

### [★『基本情報技術者 合格教本』](https://www.amazon.co.jp/dp/429710959X/)

- 技術書ではなく試験の参考書です。FE（基本情報技術者試験）の内容は**受験するしないに関係なく**、エンジニアとしての教養として**身につけておくといい**のかなぁ。と思っています。

- FE・APに合格したから大幅給与アップ！...となるわけではなく、この範囲の知識は持ってないと苦労するので、やはり**体系的な知識は学ぶ意義がある**と思っています。

- 自分は、FEに合格したあたりから**断片的な知識が一本につながった**実感がありました。

---

### [『プログラムはなぜ動くのか 第２版 知っておきたいプログラムの基礎知識』](https://www.amazon.co.jp/dp/4822283151/)

- **自分たちの書いたコードを、0 と 1 しか理解できないコンピュータはどうやって解釈し、実行できるのか**を学ぶことができる本。

- Web開発に直接関わってこない内容ですが、読むとプログラムの裏側でどのような処理が行われているのか、想像できるようになります。

---

## プログラミング言語（フロントエンド)

フロントエンドに関してはほぼWeb上の情報で完結したため、書籍の数が少ないです。

### [『基礎から学ぶ Vue.js』](https://www.amazon.co.jp/dp/4863542453/)

- バックエンド主軸だけどちゃんとフロントのライブラリを勉強しないといけないな、と思っている人に最適（自分がそうでした）。

- **仮想 DOM の操作といった基礎的な内容**を**ハンズオン形式で**学ぶことができます。

- この本を読んだ後に、[Vue.js & Nuxt.js 超入門](https://www.amazon.co.jp/Vue-js-Nuxt-js%E8%B6%85%E5%85%A5%E9%96%80-%E6%8E%8C%E7%94%B0%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798056596)を読んでライブラリからフレームワークへ学習を進めるのが良いと思います(今の自分がそう)。

---

## プログラミング言語（バックエンド)

<h4>※注意</h4>
自分は **Python** が好きで、バックエンドにも **Python × Django** を選んだので、技術書は Python に**偏っています。**そのため、 **Ruby・Ruby on Rails を最初の言語・フレームワークにする方にとっては参考にならないかもしれません。**

ただ、 Ruby on RailsやLaravelだけでなく、 FlaskやDjangoでWebアプリを開発し始める人も少なくないと思います。

ぜひ書籍選びの判断材料の1つとして、本記事を参考にしていただければと思います。

---

### [★『独学プログラマー Python 言語の基本から仕事のやり方まで』](https://www.amazon.co.jp/dp/4822292274/)

- **広く浅く内容が書かれており**、Pythonの入門にぴったりな本。

- 楽しく読み進めることができ、**今後の学習ロードマップについて**の指南もあるため、初学者に手厚い一冊となっています。

- 最初の入門書として他にも[いちばんやさしい Python 入門教室](https://www.amazon.co.jp/dp/4800711592/)が挙げられますが、物足りなく感じる可能性が高いため今回はおすすめに挙げませんでした。

---

### [★『現場で使える Django の教科書《基礎編》』](https://www.amazon.co.jp/dp/B07GK7BWB7/)

- Pythonのwebフレームワークの1つである、**Django の機能の基礎について**まとまった解説をしている本。

- Ruby on Railsとは異なり、PythonのWebフレームワークはまだまだ日本語情報が少なく、当時非常に助かりました。

- [Django Tutorial](https://www.djangoproject.com/start/)や[Django Girls Tutorial](https://tutorial.djangogirls.org/ja/)と合わせ、DjangoでWebアプリを開発する際の手引書代わりにする使い方が ◎

---

### [『現場で使える Django の教科書《実践編》』](https://www.amazon.co.jp/dp/B07L3DRGBT/)

- **本番環境へのデプロイ方法といった内容**も盛り込まれた**実践編**。上記の本と合わせてDjangoについての理解が深まるといった感じです。

- ソーシャル認証周りを紹介する章で、OAuthについての丁寧な解説があるのも ◎

---

### [『現場で使える Django REST Framework の教科書』](https://www.amazon.co.jp/dp/B07XWL8FPM/)

- **Django REST Framework を使って、Web API を作る方法**について学べる本。

- この本では、**フロントに Vue.js、バックに Django Rest Framework を用いた SPA を構築する方法**を紹介しています。

- この本まで読み進めると、何らかのJavaScriptライブラリ + Django rest FrameworkでSPAを作れるだけの状態になると思います。

---

### [『退屈なことは Python に任せよう ―ノンプログラマーにもできる自動化処理プログラミング』](https://www.amazon.co.jp/dp/487311778X/)

- ファイル操作や表計算データ更新など、**日々の業務に使える tips としての Python プログラム**を紹介している本。

- 非エンジニアの人も読者に想定しており、環境構築などの部分も情報が多く手厚くフォローされてます。

---

### [『Python チュートリアル 第 3 版』](https://www.amazon.co.jp/dp/4873117534/)

- ある程度、**他の言語を触ってきた人向けの内容**だと思います。「チュートリアル」と銘打っていたので学習初期の頃に読んだのですが、初学者には難しいと感じました。

- また、Web上に[Python 公式ドキュメント](https://docs.python.org/ja/3/tutorial/)があるため、本を買うよりこちらを読んだ方が良いかもしれません。

---

### [『入門 Python 3』](https://www.amazon.co.jp/dp/4873117380/)

- **基本のデータ型や関数、構文などにガッツリページを割いて解説してくれる本。**

- Pythonという**言語の基本を包括的に知りたい方**におすすめ。

- ただ、時間がかかるので[Progate](https://prog-8.com/)や、前述の**『独学プログラマー』**で言語の雰囲気を知るだけでも十分かもしれません。

---

### [『Fluent Python ―Pythonic な思考とコーディング手法』](https://www.amazon.co.jp/dp/4873118174/)

- **Pythonic(Python らしい)書き方についての深い知識**が得られる本。

- 特に、encode, decode周りの処理に関する章と、並行処理の章がおすすめです。

- **読めばすぐに何か作れるわけではなく、内容も中級者〜向けなので、初学者にはお勧めできません**が、**Python が好きな方は是非読んでほしい本**だと思います。分厚いです。

## アルゴリズム

### [★『アルゴリズム図鑑 絵で見てわかる 26 のアルゴリズム』](https://www.amazon.co.jp/dp/4798149772/)

- **クイックソートなど、主要なアルゴリズムについて**、絵でとてもわかりやすく解説してくれる本。

- Pythonを使っている方であればこの本を片手に、GitHubの[The Algorithms - Python](https://github.com/TheAlgorithms/Python)にあるコードで実際に確認してみるのもおすすめです。

## サーバー仮想化・コンテナ
### [『Docker/Kubernetes 実践コンテナ開発入門』](https://www.amazon.co.jp/dp/4297100339/)

- コンテナ仮想化についてはWeb上にも良質な記事があるのですが、どうしても知識がまとまらない...

- しかし、この本では**チュートリアルとして Docker から Kubernetes まで勉強できる**ため、まとまった知識が手に入ると思います。

- この本を読む前に、VMなどの**仮想化技術**について予習しておくとコンテナ仮想化の**何が良いのか**がわかりやすくなるので ◎

## クラウド

### [★『イラスト図解式 この一冊でわかるクラウドの基本 第２版』](https://www.amazon.co.jp/dp/4797399996/)

- 「AWSやAzure、GCPとかの前に**そもそもクラウドって何？」**という疑問を解決してくれる本。

- 自分はこの本でSaaSやPaaSについて知り、段階ごとにどこまでクラウドがお守りをしてくれるのかを知ることができました。

## よりよいコードの書き方

### [★『リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)』](https://www.amazon.co.jp/dp/4873115655/)

- **名著**。コーディングスキルの上達のために、必要なテクニックがわかりやすくまとめられている本。

- **何度も読み返すことになる**、スルメのような本。

## エンジニアとしての働き方・生き方

### [『エンジニアの知的生産術 ── 効率的に学び、整理し、アウトプットする (WEB+DB PRESS plus シリーズ)』](https://www.amazon.co.jp/dp/4774198765/)

- 「何を学ぶか」の前に**「どうやって学んでいけばよいのか」**についての疑問に答えてくれる本。

- この本を一度読んでおけば、質の高い時間の使い方を意識して学習ができるようになります。

### [『ハッカーと画家 コンピュータ時代の創造者たち』](https://www.amazon.co.jp/dp/4274065979/)

- つよつよLispプログラマが、**ハッカーの生き方、考え方**について持論を述べた本。

- 「とんがった存在」を目指す方はとても良い刺激になる本です。

### [『Team Geek ―Google のギークたちはいかにしてチームを作るのか』](https://www.amazon.co.jp/dp/4873116309/)

- **「人」と仕事をするためのアルゴリズム、ノウハウ**が書かれた本。

- 個人開発は全て自分で完結してしまうため、どうしても「組織」としての自分のふるまいに意識が向きません。

- 実際の業務をするまでに、一読しておくと良い本だと思います。

### [『人を動かす』](https://www.amazon.co.jp/dp/442210098X/)

- プログラミングに関係ないのですが、コミュニケーションの本を1つ。

- 下手な仕事術の自己啓発書を10冊読むより、**この本を一度読んだ方が良い**と思っています。

- **全ての人付き合いに関する自己啓発書の原点。**

## 趣味編

## 統計処理

### [『Python で学ぶあたらしい統計学の教科書 (AI & TECHNOLOGY)』](https://www.amazon.co.jp/dp/4798155063/)

- 統計学の理論の基本を学んだ人が、 **Python での統計処理の基本**(記述統計から推測統計、統計モデリング)の仕方を身に着けるための手軽に読む本として最適。

- ただ、この本単品でPythonと統計学を身に着ける！と言った使い方は難しいと思います。

- 統計学の基礎は、[予備校のノリで学ぶ「大学の数学・物理(動画)](https://www.youtube.com/watch?v=Bj8fkq533Dc)や、[はじめての統計学](https://www.amazon.co.jp/dp/4532130743)から始めるのがとっつきやすくて良いかもしれません。

## 機械学習

### [『ゼロから作る Deep Learning ―Python で学ぶディープラーニングの理論と実装』](https://www.amazon.co.jp/dp/4873117585/)

- **Deep Learning について、ライブラリに頼らず一から学んでみようといった趣旨の本。**

- この本を足掛かりにして、TensorFlowなどのライブラリの勉強に進むといった方が多い印象です。

### [『scikit-learn と TensorFlow による実践機械学習』](https://www.amazon.co.jp/dp/4873118344/)

- 特徴量選択からデータの次元削減、モデルの学習など、**一連の機械学習プロジェクトの流れについて学ぶことができる本。**

- 少し訳がわかりにくいかな..と感じましたが、ボリューミーで体系的に学べます。

ここで紹介した本とは別に、講談社の**機械学習スタートアップシリーズ**や**機械学習プロフェッショナルシリーズ**もおすすめです。

## 仮想通貨

### [『詳解 ビットコイン』](https://www.amazon.co.jp/dp/4873119081/)
- デジタル通貨システムの仕組みについて、詳しく学ぶことができる本。

- 数式やコードは一切出てこず、図や例えでとっつきやすい内容となっています。

# おわりに

**※ここからは本当に蛇足です。**

　もともと自分は大学四年間、**小学校教員になるための勉強しかしておらず**、大学院も教育系に進みました。
　入学半年後に、ひょんなきっかけで、小学校のプログラミング教育つながりでMicrosoftが開催する**非エンジニア向けの機械学習の勉強会**に参加したのですが、そこが**人生の転換点**でした。

最初のエンジニアに対する印象は、

**「なんかよくわからない技術を使って、とんでもないスケールですごいことをやっている！」**でした。

　勉強会の内容は~~当時よく理解できなかった~~のですが、**技術について楽しそうに語る**エバンジェリストの方々がとても魅力的に映ったのです。自分もそうなりたいと思い、そしてそこからプログラミングにのめり込みました。

　**初めてコードを書いた**のは、「htmlの`h1`タグでHello, world!"を表示させる」という簡単なものだったのですが、恥ずかしながら当時なにも使うべきではない言葉なので修正してください自分は**「全世界のホームページ(※ブラウザのことです)から俺の書いたプログラムが見られているぜ..!世界、始まっちゃうかァ〜！」**と勘違いし、深夜に興奮したことを鮮明に覚えています（※もちろんlocalhostですし、そもそもhtmlはマークアップ言語）。

　自分と同じく、他の分野からエンジニアを目指そうと決意した方は、**目指そうと思ったきっかけ**があると思います。

**それをずっと大切にして欲しいと思います。**

　**他のこと（仕事、研究）をやりながら、プログラミングの勉強もこなすのは本当に大変だと思います。**
　自分もSNSで強い人の経歴や発言をみて落ち込んだり、教員の道をやめる際親に泣かれたり、プログラミングが好きなのに、なんでこんなにセンスがないんだろう...と諦めそうになったことが多々ありました。

　**そのとき役に立ったのが、エンジニアを目指すきっかけになった深夜のエモい出来事でした。**

　そして結果的に、ご縁もあり、Webエンジニアとしてのキャリアをスタートさせることができました。

　この記事を読んで、少しでも、これからWebエンジニアを目指す方の刺激になれば幸いです。
　最後まで読んでいただき、ありがとうございました:bow:。