自分が一年生の時に読んだ本 まとめ
はじめに
こんにちは。calloc134です。
情報工の学生をやっていて、春から B2 となります。
さて、新年度に入ったということで、自分が去年一年間読んだ本をカテゴリ別にまとめていきたいと思います。
注: 個人的メモのために、今後読みたい本も含めてまとめています。ご了承ください。
言語学習
試してわかる Python 基礎入門
Python の復習として読みました。デザインが見やすく、サクサクと読み進められて文法が頭に入りやすい一冊です。
パーフェクト Python
Python の細かい文法を網羅的に学びたいという理由で読みました。
・高階関数とそれと併用するビルトイン関数(map, filter, enumerate 等)
・ジェネレータ関数(コルーチン等)
・リスト内包表記
のような項目の説明が主に参考になり、また外部ライブラリの使い方も説明されていて、非常に役に立ちました。
スターティング Go 言語
Go 言語の基本的な使い方と言語仕様を一通り学ぶために読んだ本です。
Rust プログラミング完全ガイド
Rust の文法がわからなかったので、まずはこれを読みました。今思うと少しオーバースペックだったかもしれませんが、Rust の文法をしっかり学ぶことができました。
高効率言語 Rust
上の本を読んだ後、実際にどのようなコードが書かれているかを学習するのに非常に役に立ちました。
・条件分岐やループの書き方
・ベクタや enum の使い方、Option 型や Result 型の解説、エラーハンドリング
・所有権システムの解説
・構造体とそれに付随するメソッドやトレイト、ジェネリクスの解説
と、Rust 一通り書けるようになる要素を網羅しています。
実践 Rust プログラミング
Rust が結構理解できるようになった後、再確認と外部クレートの使い方の学習のために借りました。前半の文法の項目は駆け足で文法事項を復習するのに良かったです。
パーフェクト Rust
(いつか読みたい)
スッキリわかる Java 入門 第三版
こちらは過去に読んだことはあったのですが、一応復習がてら読みました。オブジェクト指向を再確認するのに良かったです。
一週間で c++の基礎が学べる本
こちらは、c++の簡単な使われ方と文法仕様を学ぶために読みました。c++の知識を前提として他の言語の仕様の学びに活かせたのは良かったと思います。
フロントエンド
モダン JavaScript の基本から始める React 実践の教科書
React の本は少し古いとクラスベースのコンポーネントで解説されていたりして、関数ベースコンポーネントでの解説本を探すのになかなか苦労しました。そんな中、関数ベースコンポーネントでの解説本で、かつスプレッド構文等のモダン JavaScript の解説も分かりやすく扱っていた本がこれでした。とても分かりやすく学習を進めることができ、非常に助かりました。
通常の使い方から、useState 以外のフックの使い方、またメモ化やコンテキストの使い方など、React の基本的な使い方から高度な使い方まで、分かりやすく解説されていました。
また現場の開発では必ずと言っていいほど使うことになる TypeScript の解説もあり、少し大きいアプリケーションになることも見越してカスタムフックの作り方なども解説されており、とても参考になりました。
作って学ぶ Next.js/React Web サイト構築
こちらは React フレームワークの Next.js を使った Web サイトの作り方を解説している本です。Next.js は React のフレームワークで、SSR や SSG などの機能を持っています。また、TypeScript にもデフォルトで対応しているので、TypeScript を使った開発も可能です。
Next.js 特有の機能を勉強する目的で読んだ本でした。パスベースルーティングや Next.js に付属しているリンク機能と画像機能等の紹介があり、Next.js の特徴をうまく掴むことができました。ただ React の機能については上の本よりも解説が少ないので、React の基礎を知っている人が Next.js 特有の機能を知るために読むと丁度良いと思います。
(フロントエンドは移り変わりが激しいので、書籍で網羅的に薄く学んでから、状態管理や UI・データフェッチなどのライブラリの使い方等を実際にコードを読んで覚えていくのが一番いいと思います)
バックエンド
Node.js フレームワーク超入門
こちらは、現在バックエンドを書いている Nest.js というフレームワークを学習するために読みました。日本語の書籍で Nest.js を学ぶことができるのはこの本しかなかったので、とても助かりました。
・Nest.js のモジュール、コントローラ、サービスについての解説
・Prisma のスキーマの書き方、マイグレーションとプログラムからの呼び出し方
のような内容が掲載されています。
動かして学ぶ! Python Django 開発入門 第 2 版
こちらは、Python のフレームワークである Django を学習するために読みました。Django は Python のフレームワークの中でもかなり人気があるフレームワークです。
その中でも Django の構成についての解説が非常に分かりやすく書かれていて、Django の構成を理解するのにとても助かりました。(Django は現在は使っていませんが…)
(よく考えたら、Nest.js は殆ど日本語の書籍がないので、ネットの情報を参考にしながら学習していますね…)
コンテナ関連
プログラマのための Docker 教科書
少し内容は古いですが、全般的に Docker の基本的な使い方を学ぶのにとても良い本でした。Docker の経緯から最低限押さえておきたい名前空間技術などのメカニズム、docker 単体から compose, k8s の運用までしっかりカバーしていて助かりました。
仕組みと使い方がわかる Docker&Kubernetes のきほんのきほん
イラストとデザインがとにかく読みやすくて、復習がてら一気読みしてしまいました。Docker の動作形態がうまく図示されており、復習にはぴったりでした。また、Kubernetes の基本的な使い方やアーキテクチャも解説されており、Docker を一通り学び終えた人が Kubernetes に入門する用途にも非常に向いている一冊だと思います。
・k8s におけるノードとは
・k8s はどのような構成で動くか(kube-apiseever, ..., etcd.../kube-let, kube-proxy)
・k8s の構成ファイルの書き方
のような部分が参考になりました。
イラストでわかる Docker と Kubernetes
Docker や kubernetes の動作仕様や、内部のシステムの仕組みをイラストでわかりやすく解説している本です。内部構造について知ることで、コンテナの高/低ランタイムの存在や Docker や Kubernetes を取り巻く技術をより深く理解することができたように思います。
Docker/Kubernetes 開発・運用のためのセキュリティ実践ガイド
Docker や kubernetes のセキュリティについての本です。これらの技術のバックグラウンドについて詳しく解説した後、その技術のセキュリティ的な弱点を洗い出し、それらの弱点を克服するために行うべき設定やセキュアな設計運用のためにどうすればいいのかを細かく解説しています。自分は途中までしか読めていませんが、非常に勉強になります。
15Step で習得 Docker から入る Kubernetes コンテナ開発から K8s 本番運用まで
(今後読みたい)
コンテナセキュリティ
(今後読みたい)
クラウド
Amazon Web Services 基礎からのネットワーク&サーバー構築
この本は、EC2 や RDS などの AWS サービスを用いて一通りの Web アプリケーションを構築するための本です。AWS のサービスを使った Web アプリケーションの構築を学ぶために読みました。
この構築の過程で AWS の簡単な使い方や、VPC の設計と構成を学ぶことが出来ました。AWS のサービス構築を知るきっかけになった本でした。
AWS エンジニア入門講座
この本は、AWS において用いられるサービスにどのようなものがあるのか、それぞれのサービスの使い方を学ぶために読みました。
具体的には、
・ec2 と linux の操作方法
・vpc の基礎
・rds とマルチ az 設定など
・route53, ELB, cloudfront 等の説明
・iam や cloudwatch 等の監視セキュリティ方面サービス
などのサービスやインフラの使い方を学ぶことができます。
基本的なサービスの使い方を学んでおいたため、以降の学習をよりスムーズに進めることができました。
Amazon Web Services インフラサービス活用大全
この本は上の本と同じく、AWS のサービス群にどのようなものがあるかをより詳しく知るために読みました。
この本では、EC2 とそれに付随する VPC の設定, EBS, EFS, S3, RDB, DynamoDB 等の一通りのサービスの解説と、最後の章では耐障害性を高めるためのサービスについての解説があり勉強になりました。AWS エンジニア入門講座と併せて読むとより良いと思います。
AWS ネットワーク入門 第 2 版
この本は、AWS のサービスやインフラではなく、ネットワーク構築を勉強するために読みました。
EC2 をメインに扱う書籍で、VPC の設計や構成についての解説があり、AWS のネットワーク構築についての知識を得ることができました。この本でセキュアな VPC 設計を十分に学べたため、セキュリティに興味のある自分にとっては大助かりでした。また、負荷分散についても詳しく解説されていました。
Amazon Web Services 定番業務システム 14 パターン 設計ガイド
この本は、AWS のサービスを一通り学習した後、実際に AWS を用いて Web アプリケーションを構築する際に、どのような設計をすれば良いのかを学ぶために読みました。
これを読んで、実際の運用でネットワークをどのように分割してどのようなサービスを作るべきかのパターンを知識として蓄えることができました。
AWS 運用入門
(いつか読みたい)
Linux
Linux 教科書 LPIC レベル 1 Version 5.0
Linux の操作についての基礎を学ぶために読みました。非常に体系的にまとまっており、これをひととおり読んでおけば Linux の操作方法は十分に理解できると思います。
また、LPIC という資格の試験の教科書であるため、学んだ知識をそのまま試験にも活かすことができます。
Linux 教科書 LPIC レベル 2 Version 5.0
上の本の続編にあたり、レベル 2 となっています。より実務的な Linux の仕組みや運用、サーバとしての Linux の設定について学ぶことができます。
Linux ブートキャンプ
・プロセス、ファイルシステム、ディレクトリ構造やパッケージ管理
・ルーティング管理、samba による共有サーバ構築、DNS サーバ構築
・シェルスクリプト作成など
のような解説を学ぶことができます。オススメです。
Linux エンジニア養成読本
Linux システムのカーネルの仕組みを重点的に解説した後、実際の Linux の運用についての解説を学ぶことができます。特にカーネルの仕組みやプロセスと仮想メモリ、ブートプロセスや ext ファイルストレージの実際の仕組み等、Linux の仕組みをより深く理解する上で非常に役に立ちました。
[試して理解]Linux のしくみ ~実験と図解で学ぶ OS とハードウェアの基礎知識 増補改訂版
Linux のカーネルの仕組みを詳しく解説した本です。Linux エンジニア養成読本と併せて読むとより深く Linux の仕組みを理解することができます。
プロセスやスケジューラ、仮想メモリやファイルシステム、仮想化やコンテナ機能について、上記の Linux エンジニア養成読本よりももっと掘り下げて解説しています。
スーパーユーザなら知っておくべき Linux システムの仕組み
こちらの本は、上二冊のような Linux のカーネル方面とはまた違って、比較的ユーザランドに近い部分の解説が多いです。
具体的にはディレクトリ構造やファイルシステム、ファイルシステムのまた実用的な説明、sysvinit システムや systemd システムの解説からユーザ管理やネットワークの仕組み、ブートプロセス、その他多くのシステム解説があります。Linux デスクトップを普段使いしているような Linux 愛好家には是非オススメしたいです。Arch Linux ユーザは必読!!
入門 モダン Linux
(まだ読めていない)
その他
よくわかる入門 Git
Git の基本的な操作方法を学ぶために読みました。この本ではよくある GUI 操作ではなくコマンドラインでの操作方法を学ぶことができるため、自分にとってはそちらの方が理解がしやすかったです。後半の章では Git flow や Github flow での解説があり、実際に使う上でのベストプラクティスについて考えることができます。この本のおかげでブランチを切りながら開発したり、チェリーピック等のコマンドも難なく使えるようになりました。
マスタリング TCP/IP
TCP/IP の仕組みを再確認するために読みました。意外と抜けているところがあったため、復習に役立ちました。
認証認可 keycloak 入門
認証認可の仕組みを学ぶために読みました。この本では認証認可の概念を解説した後、keycloack というオープンソースの認証認可サーバを使って実際に認証認可の仕組みを学ぶことができます。自分は概念を理解するために読みましたが、実際に使う上でのベストプラクティスについても学ぶことができそうでした。
今さら聞けない暗号技術&認証・認可
暗号技術について体系的に学ぶことのできる本です。自分は認証認可を復習するために後半の章をメインで読みましたが、前半の公開鍵暗号や署名の解説もわかりやすく、基礎となる知識を蓄えるにはピッタリな本である印象を受けました。
Active Directory 導入と運用の基本
ドメインや OU、セキュリティグループ等の単語の意味がわからず、Active Directory のメカニズムを知りたかったので読みました。
セキュリティ・ペンテスト
リアルワールドバグハンティング
昔買った本ですが、久しぶりに読み返しました。脆弱性のメカニズムについて理解はしているものの、実際にどのように攻撃を行うのかがわからないという人におすすめです。この本では、実際に脆弱性を発見した人がその脆弱性をどのように発見したのかを解説しています。この本を読むことで、実際のシステムのどのような部分に脆弱性が混入しやすいのか、それを推測するにはどのような思考が必要なのかというのを学ぶことができます。
API ハッキング
こちらは、特に WebAPI に発生しやすい脆弱性やロジックの欠陥に対する攻撃の事例をまとめている本です。API 特有の権限不備による情報漏洩やマスアサインメントなどの脆弱性について解説したあと、開発者ツールや burpsuite のメジャーな方法から、wfuzz や kiterunner 等の少しマイナーなツールでペンテストを行う方法まで、実践的で様々な攻撃方法を解説しています。また、Postman によるテストの方法も解説されています。
ペネトレーションテストの教科書
この本は、ペネトレーションテストの手法について解説しています。パッシブな調査からどのように攻撃につなげていくのか、またどのような技法が有向なのか等を実践を通して学び、攻撃者の思考の流れを獲得していける一冊です。
低レイヤ
プログラムは何故動くのか
アセンブリの動作について分からなかったときにこれを読み、動作を理解することができるようになりました。メモリにどのようにプログラムが読まれるかの感覚を掴むのにオススメです。
C プログラミング入門以前 第 3 版
C 言語のバックグラウンドについて、復習も兼ねてより詳しくなるために学びました。アセンブリの動作や実行時のメモリ配置の分野が参考になりました。これを読んでおくと、CTF のバイナリクラック分野においても理解がスムーズになると思います。
リンカ&ローダ
ELF ファイルの仕組みや、リンカとローダの仕組みについて学ぶことができます。特に ELF ファイルの仕組みについて学習したかったため読みました。
実践バイナリ解析
(いつか読みたい)
バイナリ解析・クラック - CTF
はじめて学ぶバイナリ解析
この本は、初心者が低レイヤーの動き方を学びながらアセンブリ言語やメモリ領域の仕組みについて学習し、最終的に初歩的なバッファオーバーフローの原理を理解することができるようになることのできる本です。CTF の入門にとてもオススメです。
コンピュータハイジャッキング
こちらもコンピュータの中でどのようにバイナリが扱われるのかを学習したのち、実際に脆弱なバイナリに対してバッファオーバーフロー攻撃を行うことを目標とし、それによって攻撃への理解を深めるための本です。こちらも、CTF の Pwn 分野の入門にオススメです。
セキュリティコンテストチャレンジブック
自分は主に Pwn を勉強するために読んだため、前半の Pwn の解説はとても助かりました。バイナリ実行時のメモリ配置から詳しく解説されており、バッファオーバーフロー攻撃からそれを応用してセキュリティ機構を突破したり、書籍文字列攻撃についても学ぶことができます。
解題 Pwnable
一通り上記で紹介した本を読んだ後に読むとよいと思います。難易度は高いですが、Pwn 分野の問題をスタックからヒープまで網羅しているため、かなり勉強になると思います。自分もあまり進められていません…。
詳解セキュリティコンテスト
こちらも Pwn の難易度は高いですが、アセンブリの静的解析とリバースエンジニアリングの知識からバッファオーバーフローの解説、高度なヒープ分野の解説まで、日本語書籍としては貴重な内容を学ぶことができます。
(執筆中…)
Discussion