📚

自分が一年生の時に読んだ本 まとめ

2023/04/08に公開

はじめに

こんにちは。calloc134です。
情報工の学生をやっていて、春から B2 となります。

さて、新年度に入ったということで、自分が去年一年間読んだ本をカテゴリ別にまとめていきたいと思います。

注: 個人的メモのために、今後読みたい本も含めてまとめています。ご了承ください。

言語学習

試してわかる Python 基礎入門

https://amzn.asia/d/5eRx0DI

Python の復習として読みました。デザインが見やすく、サクサクと読み進められて文法が頭に入りやすい一冊です。

パーフェクト Python

https://amzn.asia/d/9PKhWG7

Python の細かい文法を網羅的に学びたいという理由で読みました。
・高階関数とそれと併用するビルトイン関数(map, filter, enumerate 等)
・ジェネレータ関数(コルーチン等)
・リスト内包表記
のような項目の説明が主に参考になり、また外部ライブラリの使い方も説明されていて、非常に役に立ちました。

スターティング Go 言語

https://amzn.asia/d/bkuHDAQ

Go 言語の基本的な使い方と言語仕様を一通り学ぶために読んだ本です。

Rust プログラミング完全ガイド

https://amzn.asia/d/eDHYyJX

Rust の文法がわからなかったので、まずはこれを読みました。今思うと少しオーバースペックだったかもしれませんが、Rust の文法をしっかり学ぶことができました。

高効率言語 Rust

https://amzn.asia/d/1hFxBb7

上の本を読んだ後、実際にどのようなコードが書かれているかを学習するのに非常に役に立ちました。
・条件分岐やループの書き方
・ベクタや enum の使い方、Option 型や Result 型の解説、エラーハンドリング
・所有権システムの解説
・構造体とそれに付随するメソッドやトレイト、ジェネリクスの解説
と、Rust 一通り書けるようになる要素を網羅しています。

実践 Rust プログラミング

https://amzn.asia/d/88hfSv9

Rust が結構理解できるようになった後、再確認と外部クレートの使い方の学習のために借りました。前半の文法の項目は駆け足で文法事項を復習するのに良かったです。

パーフェクト Rust

https://amzn.asia/d/dhOvgdp

(いつか読みたい)

スッキリわかる Java 入門 第三版

https://amzn.asia/d/j4kcePK

こちらは過去に読んだことはあったのですが、一応復習がてら読みました。オブジェクト指向を再確認するのに良かったです。

一週間で c++の基礎が学べる本

https://amzn.asia/d/f2xvFHC

こちらは、c++の簡単な使われ方と文法仕様を学ぶために読みました。c++の知識を前提として他の言語の仕様の学びに活かせたのは良かったと思います。

フロントエンド

モダン JavaScript の基本から始める React 実践の教科書

https://amzn.asia/d/hE6Ig9z

React の本は少し古いとクラスベースのコンポーネントで解説されていたりして、関数ベースコンポーネントでの解説本を探すのになかなか苦労しました。そんな中、関数ベースコンポーネントでの解説本で、かつスプレッド構文等のモダン JavaScript の解説も分かりやすく扱っていた本がこれでした。とても分かりやすく学習を進めることができ、非常に助かりました。
通常の使い方から、useState 以外のフックの使い方、またメモ化やコンテキストの使い方など、React の基本的な使い方から高度な使い方まで、分かりやすく解説されていました。

また現場の開発では必ずと言っていいほど使うことになる TypeScript の解説もあり、少し大きいアプリケーションになることも見越してカスタムフックの作り方なども解説されており、とても参考になりました。

作って学ぶ Next.js/React Web サイト構築

https://amzn.asia/d/gIJEMBz

こちらは React フレームワークの Next.js を使った Web サイトの作り方を解説している本です。Next.js は React のフレームワークで、SSR や SSG などの機能を持っています。また、TypeScript にもデフォルトで対応しているので、TypeScript を使った開発も可能です。

Next.js 特有の機能を勉強する目的で読んだ本でした。パスベースルーティングや Next.js に付属しているリンク機能と画像機能等の紹介があり、Next.js の特徴をうまく掴むことができました。ただ React の機能については上の本よりも解説が少ないので、React の基礎を知っている人が Next.js 特有の機能を知るために読むと丁度良いと思います。

(フロントエンドは移り変わりが激しいので、書籍で網羅的に薄く学んでから、状態管理や UI・データフェッチなどのライブラリの使い方等を実際にコードを読んで覚えていくのが一番いいと思います)

バックエンド

Node.js フレームワーク超入門

https://amzn.asia/d/dahEbEJ

こちらは、現在バックエンドを書いている Nest.js というフレームワークを学習するために読みました。日本語の書籍で Nest.js を学ぶことができるのはこの本しかなかったので、とても助かりました。
・Nest.js のモジュール、コントローラ、サービスについての解説
・Prisma のスキーマの書き方、マイグレーションとプログラムからの呼び出し方
のような内容が掲載されています。

動かして学ぶ! Python Django 開発入門 第 2 版

https://amzn.asia/d/dmESSS8

こちらは、Python のフレームワークである Django を学習するために読みました。Django は Python のフレームワークの中でもかなり人気があるフレームワークです。
その中でも Django の構成についての解説が非常に分かりやすく書かれていて、Django の構成を理解するのにとても助かりました。(Django は現在は使っていませんが…)

(よく考えたら、Nest.js は殆ど日本語の書籍がないので、ネットの情報を参考にしながら学習していますね…)

コンテナ関連

プログラマのための Docker 教科書

https://amzn.asia/d/hyEiLni

少し内容は古いですが、全般的に Docker の基本的な使い方を学ぶのにとても良い本でした。Docker の経緯から最低限押さえておきたい名前空間技術などのメカニズム、docker 単体から compose, k8s の運用までしっかりカバーしていて助かりました。

仕組みと使い方がわかる Docker&Kubernetes のきほんのきほん

https://amzn.asia/d/9noqGy2

イラストとデザインがとにかく読みやすくて、復習がてら一気読みしてしまいました。Docker の動作形態がうまく図示されており、復習にはぴったりでした。また、Kubernetes の基本的な使い方やアーキテクチャも解説されており、Docker を一通り学び終えた人が Kubernetes に入門する用途にも非常に向いている一冊だと思います。
・k8s におけるノードとは
・k8s はどのような構成で動くか(kube-apiseever, ..., etcd.../kube-let, kube-proxy)
・k8s の構成ファイルの書き方
のような部分が参考になりました。

イラストでわかる Docker と Kubernetes

https://amzn.asia/d/12SaV4d

Docker や kubernetes の動作仕様や、内部のシステムの仕組みをイラストでわかりやすく解説している本です。内部構造について知ることで、コンテナの高/低ランタイムの存在や Docker や Kubernetes を取り巻く技術をより深く理解することができたように思います。

Docker/Kubernetes 開発・運用のためのセキュリティ実践ガイド

https://amzn.asia/d/70gOmj6

Docker や kubernetes のセキュリティについての本です。これらの技術のバックグラウンドについて詳しく解説した後、その技術のセキュリティ的な弱点を洗い出し、それらの弱点を克服するために行うべき設定やセキュアな設計運用のためにどうすればいいのかを細かく解説しています。自分は途中までしか読めていませんが、非常に勉強になります。

15Step で習得 Docker から入る Kubernetes コンテナ開発から K8s 本番運用まで

https://amzn.asia/d/fgZH6nz

(今後読みたい)

コンテナセキュリティ

https://amzn.asia/d/7nvkXU7

(今後読みたい)

クラウド

Amazon Web Services 基礎からのネットワーク&サーバー構築

https://amzn.asia/d/5ezCtib

この本は、EC2 や RDS などの AWS サービスを用いて一通りの Web アプリケーションを構築するための本です。AWS のサービスを使った Web アプリケーションの構築を学ぶために読みました。
この構築の過程で AWS の簡単な使い方や、VPC の設計と構成を学ぶことが出来ました。AWS のサービス構築を知るきっかけになった本でした。

AWS エンジニア入門講座

https://amzn.asia/d/55Qag97

この本は、AWS において用いられるサービスにどのようなものがあるのか、それぞれのサービスの使い方を学ぶために読みました。
具体的には、
・ec2 と linux の操作方法
・vpc の基礎
・rds とマルチ az 設定など
・route53, ELB, cloudfront 等の説明
・iam や cloudwatch 等の監視セキュリティ方面サービス
などのサービスやインフラの使い方を学ぶことができます。
基本的なサービスの使い方を学んでおいたため、以降の学習をよりスムーズに進めることができました。

Amazon Web Services インフラサービス活用大全

https://amzn.asia/d/1FDj2yd

この本は上の本と同じく、AWS のサービス群にどのようなものがあるかをより詳しく知るために読みました。
この本では、EC2 とそれに付随する VPC の設定, EBS, EFS, S3, RDB, DynamoDB 等の一通りのサービスの解説と、最後の章では耐障害性を高めるためのサービスについての解説があり勉強になりました。AWS エンジニア入門講座と併せて読むとより良いと思います。

AWS ネットワーク入門 第 2 版

https://amzn.asia/d/ftnqqUW

この本は、AWS のサービスやインフラではなく、ネットワーク構築を勉強するために読みました。
EC2 をメインに扱う書籍で、VPC の設計や構成についての解説があり、AWS のネットワーク構築についての知識を得ることができました。この本でセキュアな VPC 設計を十分に学べたため、セキュリティに興味のある自分にとっては大助かりでした。また、負荷分散についても詳しく解説されていました。

Amazon Web Services 定番業務システム 14 パターン 設計ガイド

https://amzn.asia/d/9KuIAf3

この本は、AWS のサービスを一通り学習した後、実際に AWS を用いて Web アプリケーションを構築する際に、どのような設計をすれば良いのかを学ぶために読みました。
これを読んで、実際の運用でネットワークをどのように分割してどのようなサービスを作るべきかのパターンを知識として蓄えることができました。

AWS 運用入門

https://amzn.asia/d/7pL1Rdw

(いつか読みたい)

Linux

Linux 教科書 LPIC レベル 1 Version 5.0

https://amzn.asia/d/4FJOpoG

Linux の操作についての基礎を学ぶために読みました。非常に体系的にまとまっており、これをひととおり読んでおけば Linux の操作方法は十分に理解できると思います。
また、LPIC という資格の試験の教科書であるため、学んだ知識をそのまま試験にも活かすことができます。

Linux 教科書 LPIC レベル 2 Version 5.0

https://amzn.asia/d/9M3LJAZ

上の本の続編にあたり、レベル 2 となっています。より実務的な Linux の仕組みや運用、サーバとしての Linux の設定について学ぶことができます。

Linux ブートキャンプ

https://amzn.asia/d/gBIGvLP

・プロセス、ファイルシステム、ディレクトリ構造やパッケージ管理
・ルーティング管理、samba による共有サーバ構築、DNS サーバ構築
・シェルスクリプト作成など
のような解説を学ぶことができます。オススメです。

Linux エンジニア養成読本

https://amzn.asia/d/4ps3ziQ

Linux システムのカーネルの仕組みを重点的に解説した後、実際の Linux の運用についての解説を学ぶことができます。特にカーネルの仕組みやプロセスと仮想メモリ、ブートプロセスや ext ファイルストレージの実際の仕組み等、Linux の仕組みをより深く理解する上で非常に役に立ちました。

[試して理解]Linux のしくみ ~実験と図解で学ぶ OS とハードウェアの基礎知識 増補改訂版

https://amzn.asia/d/eY6X5Lf

Linux のカーネルの仕組みを詳しく解説した本です。Linux エンジニア養成読本と併せて読むとより深く Linux の仕組みを理解することができます。
プロセスやスケジューラ、仮想メモリやファイルシステム、仮想化やコンテナ機能について、上記の Linux エンジニア養成読本よりももっと掘り下げて解説しています。

スーパーユーザなら知っておくべき Linux システムの仕組み

https://amzn.asia/d/gNeUTBY

こちらの本は、上二冊のような Linux のカーネル方面とはまた違って、比較的ユーザランドに近い部分の解説が多いです。
具体的にはディレクトリ構造やファイルシステム、ファイルシステムのまた実用的な説明、sysvinit システムや systemd システムの解説からユーザ管理やネットワークの仕組み、ブートプロセス、その他多くのシステム解説があります。Linux デスクトップを普段使いしているような Linux 愛好家には是非オススメしたいです。Arch Linux ユーザは必読!!

入門 モダン Linux

https://amzn.asia/d/ge9DpP3

(まだ読めていない)

その他

よくわかる入門 Git

https://amzn.asia/d/4lWfktX

Git の基本的な操作方法を学ぶために読みました。この本ではよくある GUI 操作ではなくコマンドラインでの操作方法を学ぶことができるため、自分にとってはそちらの方が理解がしやすかったです。後半の章では Git flow や Github flow での解説があり、実際に使う上でのベストプラクティスについて考えることができます。この本のおかげでブランチを切りながら開発したり、チェリーピック等のコマンドも難なく使えるようになりました。

マスタリング TCP/IP

https://amzn.asia/d/bS1E8xT

TCP/IP の仕組みを再確認するために読みました。意外と抜けているところがあったため、復習に役立ちました。

認証認可 keycloak 入門

https://amzn.asia/d/2cd0tTM

認証認可の仕組みを学ぶために読みました。この本では認証認可の概念を解説した後、keycloack というオープンソースの認証認可サーバを使って実際に認証認可の仕組みを学ぶことができます。自分は概念を理解するために読みましたが、実際に使う上でのベストプラクティスについても学ぶことができそうでした。

今さら聞けない暗号技術&認証・認可

https://amzn.asia/d/6iFlDWq

暗号技術について体系的に学ぶことのできる本です。自分は認証認可を復習するために後半の章をメインで読みましたが、前半の公開鍵暗号や署名の解説もわかりやすく、基礎となる知識を蓄えるにはピッタリな本である印象を受けました。

Active Directory 導入と運用の基本

https://amzn.asia/d/fB2IVEh

ドメインや OU、セキュリティグループ等の単語の意味がわからず、Active Directory のメカニズムを知りたかったので読みました。

セキュリティ・ペンテスト

リアルワールドバグハンティング

https://amzn.asia/d/7R4YcxY

昔買った本ですが、久しぶりに読み返しました。脆弱性のメカニズムについて理解はしているものの、実際にどのように攻撃を行うのかがわからないという人におすすめです。この本では、実際に脆弱性を発見した人がその脆弱性をどのように発見したのかを解説しています。この本を読むことで、実際のシステムのどのような部分に脆弱性が混入しやすいのか、それを推測するにはどのような思考が必要なのかというのを学ぶことができます。

API ハッキング

https://amzn.asia/d/9laF2iT

こちらは、特に WebAPI に発生しやすい脆弱性やロジックの欠陥に対する攻撃の事例をまとめている本です。API 特有の権限不備による情報漏洩やマスアサインメントなどの脆弱性について解説したあと、開発者ツールや burpsuite のメジャーな方法から、wfuzz や kiterunner 等の少しマイナーなツールでペンテストを行う方法まで、実践的で様々な攻撃方法を解説しています。また、Postman によるテストの方法も解説されています。

ペネトレーションテストの教科書

https://amzn.asia/d/7kN0AtX

この本は、ペネトレーションテストの手法について解説しています。パッシブな調査からどのように攻撃につなげていくのか、またどのような技法が有向なのか等を実践を通して学び、攻撃者の思考の流れを獲得していける一冊です。

低レイヤ

プログラムは何故動くのか

https://amzn.asia/d/iHhQ0TR

アセンブリの動作について分からなかったときにこれを読み、動作を理解することができるようになりました。メモリにどのようにプログラムが読まれるかの感覚を掴むのにオススメです。

C プログラミング入門以前 第 3 版

https://amzn.asia/d/3wPlr4P

C 言語のバックグラウンドについて、復習も兼ねてより詳しくなるために学びました。アセンブリの動作や実行時のメモリ配置の分野が参考になりました。これを読んでおくと、CTF のバイナリクラック分野においても理解がスムーズになると思います。

リンカ&ローダ

https://amzn.asia/d/3VTDCCw

ELF ファイルの仕組みや、リンカとローダの仕組みについて学ぶことができます。特に ELF ファイルの仕組みについて学習したかったため読みました。

実践バイナリ解析

https://amzn.asia/d/appgDOV

(いつか読みたい)

バイナリ解析・クラック - CTF

はじめて学ぶバイナリ解析

https://amzn.asia/d/iiQzQzV

この本は、初心者が低レイヤーの動き方を学びながらアセンブリ言語やメモリ領域の仕組みについて学習し、最終的に初歩的なバッファオーバーフローの原理を理解することができるようになることのできる本です。CTF の入門にとてもオススメです。

コンピュータハイジャッキング

https://amzn.asia/d/bno25wn

こちらもコンピュータの中でどのようにバイナリが扱われるのかを学習したのち、実際に脆弱なバイナリに対してバッファオーバーフロー攻撃を行うことを目標とし、それによって攻撃への理解を深めるための本です。こちらも、CTF の Pwn 分野の入門にオススメです。

セキュリティコンテストチャレンジブック

https://amzn.asia/d/8NeuygZ

自分は主に Pwn を勉強するために読んだため、前半の Pwn の解説はとても助かりました。バイナリ実行時のメモリ配置から詳しく解説されており、バッファオーバーフロー攻撃からそれを応用してセキュリティ機構を突破したり、書籍文字列攻撃についても学ぶことができます。

解題 Pwnable

https://amzn.asia/d/3gMiO1F

一通り上記で紹介した本を読んだ後に読むとよいと思います。難易度は高いですが、Pwn 分野の問題をスタックからヒープまで網羅しているため、かなり勉強になると思います。自分もあまり進められていません…。

詳解セキュリティコンテスト

https://amzn.asia/d/etEBKGv

こちらも Pwn の難易度は高いですが、アセンブリの静的解析とリバースエンジニアリングの知識からバッファオーバーフローの解説、高度なヒープ分野の解説まで、日本語書籍としては貴重な内容を学ぶことができます。

(執筆中…)

GitHubで編集を提案

Discussion