おすすめの本など

# 概要
[42Tokyo Advent Calender 2023](https://qiita.com/advent-calendar/2023/42tokyo)の最終日を担当します、42tokyo内ではぐーすかきつねという名前で活動していました、くぼたです．<br>

https://qiita.com/advent-calendar/2023/42tokyo

42Tokyoが何者かに関しては、今年のAdvent Calenderの主催者であるKotaさんの書かれたこちらの記事などを読んでもらえるとよくわかるかと思います．
[「42 Tokyoを（ほぼ）卒業したので、今までの活動をすべて振り返ってみた」](https://note.com/kotabrog/n/n292c0b5ef071)

https://note.com/kotabrog/n/n292c0b5ef071

実は、42Tokyoに関しては今年の4月でBH（Black Hole）[^1]に吸われたため、在校生ではなくなってしまったのですが去年までアドベントカレンダーの主催者をしてたのと、最終日が空いていてKotaさんが書く人を探していたので、ノリで書くことにしました．<br>

# 本題
内容は本の紹介です．今年度はエンジニア新卒研修の運営とかもやっていたのもあるので、４２生がエンジニアとして就活する前にこんな知識を持ってたらいいんじゃないかなぁという本と、在学中に役立つんじゃないかなぁという本と、単純におすすめな本とを簡単に紹介してみました．
各題名がAmazonのKindle本へのリンクになっています．（kindle本が存在しない場合にはその他のサイトに飛びます）

### [ふつうのLinuxプログラミング](https://www.amazon.co.jp/dp/B075ST51Y5)

圧倒的良書です．
Linux周りの知識を実装ベースでつけることができます．
42の課題はその性質上ネットの知識や先達の知識に頼って課題を進めてしまいがちです．これが悪いわけではないのですが、その結果、常識的に押さえておくべきCやLinuxに関する基礎が抜け落ちて先に進んでしまう危険性もはらんでいます．
この本を読んでおけば標準ライブラリの関数が、なぜそういう働きを持つように実装されているかや、その関数の正しい使い方などに関して、基礎的な部分を理解することができると思います．

### [［試して理解］Linuxのしくみ　―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】](https://www.amazon.co.jp/dp/B0BG8J5QJ1)

こちらの本は「ふつうのLinuxプログラミング」とはまた別の視点でLinuxに切り込んでいく良書だと思います．
プロセスやメモリ周りの話に関して非常に詳しく記載がされています．
42の課題をやってる人だとよく使う関数の裏側の仕組みなどをより深く理解できて良いと思います．

### [プロを目指す人のためのTypeScript入門](https://www.amazon.co.jp/dp/B09Y527YPV)
CとC++の次にTypeScriptに入門するならこの本とかから始めるといいのかなぁなどと．
新卒研修であんまり触ってないTypeScriptについて教えるためにまず読んだ本がこれでした．
その後にO'REILLYのTypeScrip、JavaScriptの本をつまみ食いしました．O'REILLYサブスクはいいぞ！
また非同期周りに関してはこちらのzenn記事[「イベントループとプロミスチェーンで学ぶJavaScriptの非同期処理」](https://zenn.dev/estra/books/js-async-promise-chain-event-loop)が最強だと思っています．

### [Go言語プログラミングエッセンス エンジニア選書](https://www.amazon.co.jp/dp/B0BVZCJQ4F)
CとC++の次にGoに進むのであればこの本でGoでのwebサービス開発の基礎を学ぶと良いでしょう．
でもとりあえずは[A Tour of Go](https://go.dev/tour/list)と、[Gopher道場](https://gopherdojo.org/)をやると良いでしょう．

### [APIを作りながら進むGo中級者への道](https://techbookfest.org/product/jXDAEU1dR53kbZkgtDm9zx?productVariantID=dvjtgpjw8VDTXNqKaanTVi)
GoのZenn記事で何度お世話になっているかわからないsakiさんが技術書典で出されていた本です．GoでAPIサーバーをいい感じのアーキテクチャで描くための全てが詰まっています．
バックエンドエンジニアでGoを使う仕事やってみたいなぁという42生は是非読むと良いかと思います．
ちなみに、[zennにあるbooks](https://zenn.dev/hsaki?tab=books)も無限に勉強になるので是非読みましょう．

### [ドメイン駆動設計 モデリング/実装ガイド](https://booth.pm/ja/items/1835632)
バックエンド開発でよく出てくる、クリーンアーキテクチャとかオニオンアーキテクチャを理解しておきたい！けど[Clean Architecture](https://www.amazon.co.jp/dp/B07FSBHS2V)の本は抽象的すぎてよく分からん．．．みたいな人におすすめです．
本の名前こそ、「ドメイン駆動設計　モデリング実装ガイド」ですが、中身はドメイン駆動設計の思想を実現するためにどのようにクリーンアーキテクチャを使うかということが書かれており、自分はこの本を読んで初めてクリーンアーキテクチャやオニオンアーキテクチャの本質を理解できた気がしました．

### [ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本](https://www.amazon.co.jp/dp/B082WXZVPC)
エリックエバンスのドメイン駆動設計の本は最初に読む本ではないと思います．
とりあえずはこの本から初めて、実装例を見ながらドメイン駆動設計の概念を掴むのがいいのではないかなぁと思っています．この本を読めばエリックエバンスのDDD本ではかなり抽象的に書いてある内容が非常に具体的な例をもとに学ぶことが可能です．

### [SQL 第2版 ゼロからはじめるデータベース操作](https://www.amazon.co.jp/dp/B01HD5VWWO)
Goの本やアーキテクチャの本を紹介し、バックエンドよりになってきたので、SQLの本を紹介します．
この本はSQLの基礎から少しの応用までが綺麗にまとまった本だと思います．
これ一冊やっておけば、そこまで複雑でないwebサービスを作る上で苦労することはなくなると思います．

### [達人に学ぶDB設計 徹底指南書](https://www.amazon.co.jp/dp/B00EE1XPAI)
SQLの本を紹介したのでデータベースの設計に関する本も紹介しておこうとなると、この本(´･_･｀)ｶﾅｰという感じです．
DB設計における基礎がしっかり解説されています．
バックエンドエンジニアとしてやっていきたいのであれば、この本に書いてあることくらいは理解しておきたいものです．

### [ネットワークはなぜつながるのか](https://www.amazon.co.jp/dp/B077XSB8BS)
マスタリングTCP/IPよりもこちらを先に読んだ方がいいんじゃないかなぁと思ってるタイプの人間です．
ただ、ネットワーク系の本はどの本も初見は難しく感じる本ばかりだとも思っていて、初学者の方にはこの本を難しく感じる人も多いんじゃないかなぁと思います．これは単純にネットワーク系の話は、基礎が難しいからだと思います．基礎だからといって簡単なことばかりではなく、難しいことが多く登場するタイプの基礎もあり、ネットワーク系の話はそうなんじゃないかなぁと思っています．
何回か読み直したり、よく分からない言葉を別途調べたりしてしっかり読むと非常に意味があるのではないかと思います．

### [Linuxで動かしながら学ぶTCP/IPネットワーク入門](https://www.amazon.co.jp/dp/B085BG8CH5)
TCP系の本といえば、[マスタリングTCP/IP](https://www.amazon.co.jp/dp/B0827QNDNT)だと思うのですが、あえてこちらを紹介しておきます．理由は名前の通り動かしながら学べることと、Amazon Prime会員なら無料で読めるからです．
ネットワーク系の本は読んでるだけだと眠くなりがちですが、実際に手を動かして学べると眠くなりづらくていいと思います．

### [1冊ですべて身につくHTML ＆ CSSとWebデザイン入門講座](https://www.amazon.co.jp/dp/B07PS1ZJN6)
最低限フロントエンドのことくらい理解しておきたいよねってことでこの本です．
HTML/CSSの基礎がWebサイトを作りながら理解できます．

### [体系的に学ぶ 安全なWebアプリケーションの作り方 第2版](https://www.amazon.co.jp/dp/B07DVY4H3M)
紹介するまでもない、セキュリティ関連の入門書です．
そう、めちゃくちゃ分厚いのに入門書なんですよ．
1冊をやり切るのには普通の人ならそれなりの時間を要すると思います．すぐ読み切れる人は多分元々多大な経験がある人だけです．この本に書いてある内容を血肉にするために、１ページずつ読んで、理解しておきたい本だと思います．
この本の内容をエンジニア就活時にきちんと理解できていれば、通常の会社であればセキュリティに関しては十分だと思います．

### [プロダクトマネジメントのすべて](https://www.amazon.co.jp/dp/B08W51KLQJ)
エンジニアとして会社で働くのであれば、プロダクトマネジメントのことを知っておくべきでしょう．
となるとこの本が一番いいんじゃないかなぁと思っています．
プロダクトマネジメントという仕事においてどういったことが責任範囲となっており、そのために何を行うべきかがよくまとまっています．全体感を掴むのにちょうど良い一冊です．

### [ユーザーの問題解決とプロダクトの成功を導く　エンジニアのためのドキュメントライティング](https://www.amazon.co.jp/dp/B0BXSYF2N4)
コードを書いて世の中に公開したり、仕事でコードを書いたりしている際にドキュメントを書くことからは逃れられないと思います．
そうした際に書くドキュメントの書き方を教えてくれる良書です．
特にこれから初めてエンジニア業界に飛び込む中途の方や、新卒エンジニアの方は一読しておくと良いと思います．

### [Rustで作るGAME BOYエミュレータ](https://techbookfest.org/product/sBn8hcABDYBMeZxGvpWapf?productVariantID=2q95kwuw4iuRAkJea4BnKT)
RustでGAME BOYエミュレータを作る本です．
面白い！以上！

### [キタミ式イラストIT塾 応用情報技術者 令和06年](https://www.amazon.co.jp/dp/B0CM2Z72PK)
今年応用情報技術者試験を受験したのですが、その際に使用した本です．
別にこの本である理由は特別ないのですが、大学時代にcomputer scienceを先行していなかった人であれば、応用情報技術者試験用の対策本を一冊きちんと読み切ることは価値のある行為だと思います．国家資格なだけあってちゃんと読むと大事なことが全般的に書かれているなぁと感じました．おそらく応用情報の勉強をしているときに、この知識って大事だよなぁと思いながら勉強できることが一番大事なのだと思います．

# おわりに
ChatGPTがあったり、ネットで色々学べる教材があったりとしますが、結局書籍という形で出版されているものの方が現状、体系的に知識を身につけるには最短ルートな気がしています．
年末の休みとかに読んでみてはいかがでしょうか．
自分は年末で頑張って[タネンバウムのコンピュータネットワーク](https://www.amazon.co.jp/dp/4296070428)を読み切りたい．．．．


[^1]:42において課題を一定期間行わなかった場合に42への在籍資格を失う制度のこと．「BHに吸われる」などと表現します．