はじめに
エンジニアに転職してちょうど1年になるので、読んで良かったと思っている本を紹介しつつ、自分の学習を振り返って、忘れている所や身についていないところ、足りないところを確認したい。
プログラミング言語
JavaScript
JavaScriptモダンプログラミング完全ガイド 堅牢なコードを効率的に開発できる!
JavaScriptモダンプログラミング完全ガイドは他のプログラミング言語を習得している人が、JavaScriptを学ぶために書かれている。そのため、かなり解説があっさりしているところはあるものの、JavaScript特有の癖がよく説明されており、なおかつ練習問題がついている!ので、自分の理解力を確認しながらすすめることができて大変良かった。チャプターごとに難易度も開示されているため、自分の習熟度に見合った章だけを読み進めて、あとから必要になるたびに参照するのがよさそう。
プロを目指す人のためのTypeScript入門 安全なコードの書き方から高度な型の使い方まで
TypeScriptの基礎を、JavaScriptを知らない人にもわかるように記載されている。初心者向けにかなり丁寧に(式、文とはなにかというところから)解説しており非常にわかりやすい。
Python
プロフェッショナルPython ソフトウェアデザインの原則と実践
Pythonのコードの書き方を、じゃんけんアプリを作りながら学んでいく。実際にアプリを創り、それを機能追加・リファクタリングしながらPythonの使い方を学ぶため、どのような書き方が好ましいのかを納得しながら身につけることができる。kindleUnlimitedで読めるのでおすすめ。
関数型プログラミング
関数型プログラミングの基礎
関数型プログラミングをJavaScriptで解説していくのだが、普段手続き型プログラミングにしか脳みそを利用していない私にとって非常に理解が難しかった。関数型プログラミングについてはまた再挑戦したい。。。
再挑戦する時に使おうと思っている教材を以下に自分用に貼り付けておく
全然関係ないことなんですが、上の「なっとく!関数型プログラミング」が以下の「なっとく!機械学習」とほぼ同じ表紙のため、すごくわかりにくい。。どうして?
API
Web API: The Good Parts
よいWebAPIの設計について丁寧に説明しつつ、本自体も短いので初心者であっても非常に読みやすくわかりやすい。巻末についているAPIチェックリストは定期的に確認している。
以下読んだ際の読書メモ。
ブラウザ・Web基礎
Webを支える技術 ―― HTTP,URI,HTML,そしてREST
かなり初期の頃に読んだ、みなさんご存知のロングセラー。10年以上前に出版された本のため、最近のHTTP3などは全く解説がないものの、Web、そしてHTTPの歴史、RESTについてその起源からやさしく解説してくれている。
HTML解体新書
HTMLのこと何もわかってないかも、、と怯えつつ、HTMLについて書かれているWebデザイナー向けじゃない本って実は少ないのでは?と思いつつ買った本。かなり分厚く、HTMLについてその特性や使用時にアクセシビリティの点で注意すべきことなどが網羅されており、今後も辞書的に利用していきたい良書。なお、非常に脚注が多く、リンクも多いため、電子書籍で読むと注まですぐ飛べるし、その注の中のURLにもアクセスしやすいためおすすめ。
Vue
Vue 3 フロントエンド開発の教科書
Vue3の本はかなり少ない上に、CompositionAPIを解説している日本語の本となると当時(といっても2023年の春ぐらい?)はこの本しかなかったように思う。サンプルコードも豊富でハンズオンですすめられるため、非常におすすめ。
Design Patterns for Vue.js 3: A test driven approach to maintainable applications
著者はVue.jsやCypressのコントリビュータ。Vueの設計やテストってどうしたらいいんだろうなと思っていたところに正にドンピシャなタイトルだったため、購入。あまりフロントエンドでTDDをやるイメージがなかったのだが、表示と内部の状態設計や計算のロジックを分離することでテストコードを書きやすい、かつ再利用のしやすいコードに書き方を学ぶことができた。
日本語版もあるのだが、多分版が違って英語版の方が最新のようだったので、英語版を購入。
Docker
仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん
Dockerなにもわからない!状態からでも理解できるように、絵や図も交えながら丁寧に細かく解説されている。充実したハンズオンのみならず、コマンド穴埋め問題もありちゃんと自分が理解しているか把握しつつ読める。Dockerわからない、、となったら都度この本に立ち返って読み直している。
Linux
ふつうのLinuxプログラミング 第2版 Linuxの仕組みから学べるgccプログラミングの王道
全然Linuxのことを理解していないし、かつC言語も理解していない状態で読んだので、理解度が非常に低くなってしまい、再読を誓っている本。ただ、前半部分(Cのコードが出てくる前)を読んだだけでも、システムコールでLinuxがどのように働いてくれているのかをイメージできるようになった。Linuxはまだまだ知識も理解も足りていないので、もっと触りながら学んでいきたい。
セキュリティ
フロントエンド開発のためのセキュリティ入門 知らなかったでは済まされない脆弱性対策の必須知識
Webブラウザセキュリティ Webアプリケーションの安全性を支える仕組みを整理する
フロントエンドのセキュリティについて学ぼうと思って読んだ本。フロントエンド開発のためのセキュリティ入門の方にWebブラウザセキュリティが参考文献として記載されている。どちらもサンプルコードがついていてハンズオンで脆弱性を作ってしまうコードや、攻撃を防ぐための対策について学べる。2冊の本での対象としている脆弱性や攻撃はほぼ同じであるものの、それぞれ異なる目的と視点を持って書かれているために、より脆弱性の仕組みやその対策への理解を深めることができた。
テスト
フロントエンド開発のためのテスト入門 今からでも知っておきたい自動テスト戦略の必須知識
フロントエンドにおけるテストについて、UnitテストからUIコンポーネントテスト、E2Eテストまでその戦略とツールの使い方について書かれており、実践で有効にテストを整備していくための道筋がわかるようになっている。
テスト駆動Python 第2版
Pytestの使い方を細かい点まで解説しつつ、その上でどのようなテストを書くべきかという点についても記載されている。
知識ゼロから学ぶソフトウェアテスト 第3版 アジャイル・AI時代の必携教科書
私が読んだのは第二版なのだが、リンク先は新しく出た第三版を。
ソフトウェア品質を高める開発者テスト 改訂版 アジャイル時代の実践的・効率的でスムーズなテストのやり方
どちらも同じ著者のため内容に重複があり、もしかしたら開発者は開発者テストだけでも十分かもしれないが、ソフトウェアテストの方にしか書かれていない著者のMicrosoftやコンサルでの経験談も非常に面白いため、両方読むのをお勧めしたい。一般的なソフトウェアテストの種類や実行方法、コツについて語りかけるような文体、かつ大きめの文字で書かれているため通勤の往復(1時間半程度)で一冊読み終わることができた。3版での変更点が知りたい。。
以下私の読書メモ
コンピュータシステム
CPUの創りかた
CPUを電子回路から作れる本。私は実際に組み立てはしなかったものの、基本情報技術者試験などで学んだ論理回路が、どのようにCPUを構成しているのかを知ることができて大変満足。
コーディング
Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考
googleでコードの書き方をジュニアエンジニアに教えている著者による、良いコード悪いコードを比較しながらより良いコードの書き方、設計について説明してくれる本。正直難しいと感じるポイントも多かったが、エラーの処理やより疎結合なモジュールを作る方法まで、例やメリットデメリットをあげつつ、最終的な著者の判断についても記載されているため、コードを書く時にどのような意思決定を行っているのかを垣間見ることができた。何度も読み直していきたい本。
以下読書メモ
(おまけ)これから読みたい本・今読んでいる本
今読んでいる本
積読になっているもの