はじめに
今回は私が3年間で読んだ技術書をひたすら紹介します。
私は2021年4月に新卒でSIerに就職し、2024年4月でエンジニア4年目となりました。
そんな私の入社時のスキル感はどうだったかというと...
- 非情報系学部卒の理系
- 学部4年生の時に研究室で少しPythonを触ったことがある程度
-
HTTP
?なにそれ?
でした。
こんな感じでほぼゼロからのスタートでしたが、3年間でどのくらいのスキル感になったかというと、ざっくりと
- 基本的に一人称で開発業務ができる
- 小規模のシステム開発なら技術選定やアーキテクチャの検討も可能
- 某(若手向け)技術コンテストで入賞経験あり
- OSSコントリビューション経験あり
- IT関連の資格7つ取得
くらいには成長することができました。
これから紹介する技術書を読むだけでこのくらいのスキル感になれますという話ではなく、当然日々の業務であったり、その他のインプット/アウトプットも重要です。
ですが、技術書を読むこともとても重要な成長の要素なので今回は「私が3年間で読んだ技術書」を紹介させていただきます。
技術書
設計
良いコード/悪いコードで学ぶ設計入門
「ITエンジニア本大賞2023」技術書部門で大賞
を受賞した有名な本です。
悪いソースコードの例と、その改善例からソースコードの良い書き方と設計を学ぶことができます。
私が初学者から「おすすめの技術書は?」と聞かれたら迷わず紹介すると思います。
Clean Architecture
エンジニアの世界に身を置いていると何かと耳にするのがクリーンアーキテクチャ
です。
保守性の高いシステムを作るためには、どのようなルールで、また、どのような構成で設計すれば良いかを学ぶことができます。
ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本
こちらも何かと耳にするドメイン駆動設計
通称DDD
(クリーンアーキテクチャと同じ文脈で登場することが多い)
DDDについてとても分かりやすく具体的なソースコード付きで解説されていて、これほど分かりやすい本はないのでは?と思うほど読みやすい本でした。
DDDについてより深い知識を得たい場合は本書で紹介されているエリック・エヴァンスのドメイン駆動設計
を読むのも良いかもしれません。(今年こそ買って読むぞ!)
ソフトウェアアーキテクチャの基礎
ソフトウェア開発に欠かせないアーキテクチャについて、体系的/包括的に学ぶことができます。
さまざまなアーキテクチャの紹介から、チーム内外とどのように協調していくかなどといったソフトスキルについての解説もあり満足感の高い1冊です。
プログラミング共通
リーダブルコード
言わずと知れた超有名な本。
可読性や保守性の高いコードとはどうゆうコードか、またそういったコードを書くために意識することなどが丁寧に解説されている1冊です。
初学者はとりあえず購入して読むと良い。
レガシーコードからの脱却 ソフトウェアの寿命を延ばし価値を高める9つのプラクティス
バグを多く含み、壊れやすく、さらに拡張が難しいコードつまりレガシーコード
を作り出さないための9つプラクティスが紹介されています。
アジャイル開発が前提となっている本ですが、システム開発に関わる人は誰もが読んで損はないと思います。
テスト
単体テストの考え方/使い方
単体テストについて体系的に解説されており、ベストプラクティスからアンチパターンまで色々紹介されています。
結構なボリュームがありますが、関わっているプロジェクトの実際のテストコードを見ながらチームメンバーと輪読するのも良いかもしれません。
特定の言語
スターティングGo言語 (CodeZine books)
業務でGo言語を使用する際に初めに買った書籍です。
書籍名の通りこの本はGo言語をこれから始める方に向けた本となっており、基本的な構文から使用頻度の高いパッケージの使用方法まだ幅広く紹介されています。
Go言語による Webアプリケーション開発
先ほど紹介したスターティングGo言語
を読んだ後に購入した本となります。
より実践的なユースケースに従ったスキルやテクニックを学ぶことができる本となっています。
Go言語プログラミングエッセンス
この本は、有名なOSSコントリビューターであるmattnさんが著者であり、とても分かりやすくGo言語にまつわるテクニックなどが解説されています。
ターゲットとしている読者層はGoへの入門が終わり、より深くGoについて学びたい人となっています。
Go言語による並行処理
この本はGo言語の一番の特徴でもある並行処理にまつわるあれやこれやが書かれている本です。
並行処理を実装する際のパターンやベストプラクティスなどが詳しく解説されています。
個人的には少し難しく、しっかりと理解できなかったところがあるため、時間をおいて再度読み返したいと思っています。
ロバストPython
Python3.5から導入された型ヒントや静的解析ツールを使って柔軟すぎるPythonでどのように堅牢なソースコードを書いていくかを学ぶことができます。
Pythonを使ってシステム開発をする人は必読と言って良い1冊だと思います。
DB
おうちで学べるデータベースのきほん
データベースの経験が少ない(もしくはゼロ)の方が入門するためにおすすめの本
実際に自分のPCで確認しながらDBについて学ぶことができるため理解が深まりやすいです。
達人に学ぶDB設計徹底指南書
DB設計と言えばこれ!
というくらい有名な本
DB設計の基礎から実践的なノウハウ、アンチパターンなどDB設計について色々学ぶことができます。
DB設計をする機会がなくても、開発者として学んでおいて損はないと思います。
徹底攻略データベーススペシャリスト教科書
この本は、私がデータベーススペシャリスト試験の対策に使用した本です。
DBに関する知識が体系的に学べます。
ネットワーク
マスタリングTCP/IP 入門編 第6版
ネットワークの本と言えば、な1冊
TCP/IPについて基礎から学ぶことができます。ただ、入門編
とありますが簡単に読めるかと言われれば...疑問符
(個人的には難しかった気がする)
時間を置いて再入門したいと思います。
セキュリティ
第2版 安全なWebアプリケーションの作り方
通称徳丸本
凶器になりかねないほど分厚い本ですが、配布されているサンプルプログラムを実際に動かしながら色々な脆弱性のパターンを学習することができるとても勉強になる本です。
おすすめ
情報セキュリティの敗北史
(この本は技術書というよりは読み物です)
サイバーセキュリティに関するこれまでの歴史を学ぶことができます。とても面白かったです(小並感)
ユーザーに対してセキュリティを意識させるのは難しいからデフォルトでセキュアにするということが書かれいて、なるほどなぁと思いました。
アジャイル/XP
アジャイルサムライ 達人開発者への道
アジャイル開発について学ぶことができます。
SIerではまだウォーターフォール開発でのプロジェクトが多いですが、世界的に見るとアジャイル開発が主流?なのでアジャイル開発を経験していない人も読んで損はないです。
むしろこの本を読んでどんどんアジャイル開発を導入していきましょう。
モブプログラミング・ベストプラクティス ソフトウェアの品質と生産性をチームで高める
モブプロ(モブプログラミング)の導入方法や、モブプロとの付き合い方など色々なことが解説されています。
個人的にはモブプロは一人で淡々と作業をするより何倍も楽しいですし、生産的なのでもっと広まれば良いなと思ってます。
SCRUM BOOT CAMP THE BOOK
スクラムについて分かりやすく解説されています。
漫画調なので活字が苦手な人でもスクラムについてしっかりと学ぶことができます。
これからスクラムをする人やスクラムに興味がある方におすすめです。
コンテナ
仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん
これは私がDockerに入門した時に購入した本です。
ハンズオン形式で読み進めることができるので未経験でも理解しやすかった覚えがあります。
Kubernetes(k8s)に関する章もありますが、Dockerに入門したばかりの人がk8sまで理解しようとするとパンクする可能性があるのでk8sに関してはもう少しコンテナ関連の知識が深まった後に学習する方が良いと思います。
入門Kubernetes
k8sの概要や実際の利用方法などを包括的に学ぶことができます。
クラウド
AWS認定試験対策 AWS クラウドプラクティショナー
AWSの認定資格であるAWS認定 クラウドプラクティショナー(AWS-CLF)
向けの対策本です。
AWS-CLF試験に合格したい場合は、この本とUdemyの模擬試験集的な講座をひたすらやれば大丈夫です。
AWS認定資格試験テキスト AWS認定ソリューションアーキテクト - アソシエイト
先ほどのAWS-CLFの上位資格であるAWS認定 ソリューションアーキテクト - アソシエイト(AWS-SAA-C02)
向けの対策本です。
AWS-SAA試験に合格したい場合は、(以下同文)
Linux
Linux教科書 LPIC レベル1 Version5.0対応
LPICは世界共通のIT資格で、レベル1はLinuxに関する基礎的な知識を証明することができる資格となっています。
似たような資格にLinuCという資格がありますが、こちらは資格の適応範囲が日本国内のみとなっています。
Linux教科書 LPICレベル1 スピードマスター問題集 Version5.0対応
LPICのレベル1の試験問題集
その他
Webを支える技術
こちらも有名な本。
HTTP,URI,HTMLなどといったWebを支える技術について幅広く学ぶことができます。
実務でWebアプリ開発をやる場合は(そうでない場合も)必読です。
応用情報技術者パーフェクトラーニング過去問題集
書籍名通りですが、応用情報技術者試験の過去問題集です。
応用情報技術者試験に挑戦する場合は過去問演習が最重要となるため試験を受ける場合はこちらを購入して取り組みましょう。
キタミ式イラストIT塾応用情報技術者
応用情報技術者試験の範囲を分かりやすいイラスト付きで解説している本。
CSについて広く浅く?解説されている本なので、試験を受けなくても初学者は一度読んでみる価値はあります。
ただ1つだけ欠点があります。
分厚すぎる。まるで鈍器
システム設計の面接試験
システム設計の面接試験を想定して、Youtubeなどいくつかのテーマに従いシステム設計の問題とその解説がされています。
テーマとなるシステムがかなり大規模なシステムを想定しているので実務ですぐ役に立つかと言われると疑問符ですが、大規模なシステムを設計する際の考慮事項などを学ぶことができてとても面白い本でした。
ITエンジニアのための「人生戦略」の教科書
こちらの書籍は私がITエンジニアとしてどのようなキャリアを歩んでいきたいか考えていた時に購入しました。
実際に読んでみると会社員エンジニアとしてのキャリア指南書というよりは独立志向
な本で購入前とギャップありましたが、読み物としてとても面白く参考になりました。
将来フリーランスや個人でサービスを作りたいという人は読むと良いかもしれません。
世界一流エンジニアの思考法
2023年にかなり話題になっていた本です。
米マイクロソフトでバリバリ開発をしている日本人エンジニアの方の実体験をベースに、世界をリードするビッグテックで働く超一流のエンジニアのマインドや仕事の進め方が紹介されています。
読んでいてワクワクするような本でした。
とりあえず読んでみてほしい1冊です。
ITエンジニアのゼロから始める英語勉強法
先ほど紹介した世界一流エンジニアの思考法
の著者の牛尾さんの著作
この本は技術書というよりは英語学習の方法論的なものが書かれている本です。
将来グローバルな人材になりたい人は読んでみても良いかもしれません。(もうすでに英語が堪能な方は不要)
さいごに
今回は私が3年間で実際に読んだ本をつらつらと紹介しました。
何か一つでも参考になったら幸いです。
今回の記事の反応が良ければUdemyの講座バージョンの記事を書きたいと思いますので、少しでも参考になったと感じたらイイネとストックをお願いします!
追記
Udemyの講座バージョンの記事も書きました