はじめに
私はプログラミングと関係ない学生時代を送り、ITとは関係のない職に就き、
プログラミングに興味を持って独学で学んだ後にエンジニアに転職しました。
来月でエンジニア歴3年目になるまだまだ駆け出しです。
これまで学習に用いた中でも特に駆け出しエンジニアが読んでおくべき本をまとめました。
応用情報技術者レベルの知識は身につくんじゃないかな…と思います。
項目の分け方は情報技術者試験のシラバスに寄せています。
というのも、私はこの世で最も丸暗記が嫌いです。というか苦手です。
情報工学の基礎がない人が、体系に学べるようなブックリストがほしい。
基本・応用情報のシラバスに合っていればきっと必要最低限は身につくのでは…?
同じようなことを考えている人のためにまとめました。
暗記ではなく体系的に学ぶことになるので応用情報午後試験の対策にもなると思います。
苦手な分野があるという方の副読本にも、ぜひ参考にしてみてください。
一通り読んだ上で過去問を解くと意外と理解できることに驚くのではないでしょうか。
どういう目的であれ、これから本を読んで学ぼうという方になにより伝えたいこと。
一度ですべてを理解しようとしなくていい、ということです。
一度通り過ぎてから読み返すと意外と理解できるようになってたりします。
理解できなくて積んでしまった…となるよりは、とりあえず理解できなくとも一通り目を通し、完走しましょう。
基礎理論
プログラマの数学 第2版
数学が好きな人にはおなじみ数学ガールの著者、結城浩先生の本。
微分積分は出てきません。
数学や論理に関心があり、かつプログラミングに関心のある方が対象。
2進法などを学んでこなかった・よくわからない方、論理(雑に表すとture、falseの話)、剰余、順列、組み合わせ、再帰などプログラミングをするうえで活用する、基本・応用情報のあたりで必要になる数学を平易に解説してくれています。図もたっぷりなので数学に苦手意識のある方のとっかかりに良いのではないでしょうか。
アルゴリズムとデータ構造
アルゴリズム図鑑 絵で見てわかる26のアルゴリズム
アルゴリズムってなんですか?レベルの人にお勧めです。
図解されており、視覚的に大変わかりやすい。
しかしながら、アプリ版があり、書籍よりわかりやすくアニメーション付きの解説があります。
スマホのスペックに問題があるとかでなければアプリ版の購入をお勧めします。
問題解決力を鍛える!アルゴリズムとデータ構造
アルゴリズムの設計まで出来るようになるような、考え方を学ぶ本です。
時々高度な説明があり、読者を困らせるようなところもありますが、基本的には想定読者は初学者だと思うので易しい。
章末問題の答えは書籍中になく、GitHubで公開されています。
プログラミングコンテスト攻略のためのアルゴリズムとデータ構造
アルゴリズムを学ぶにあたって、この手の書籍で有名なものと言えば蟻本・チーター本もありますが、
本書は特に体系的に、アルゴリズムの入門することが出来ます。
アルゴリズムとデータ構造を学びつつ、実際にコードを書いて実践する、問題と解答例を並べていくスタイル。
情報系以外出身でも読みやすい難易度です。
書籍中のコードはC++。
ハードウェア(コンピュータ構成要素)
CPUの創りかた
一昔前のオタク向けの本かな?と表紙で侮るなかれ。
2003年の書籍にもかかわらず現在まで入門書として親しまれているだけある易しさです。
初学者の読者に寄り添ってくれ、突き放したりすることのない本。
今作ろうと思うと入手困難な部品が出てくるかと思いますが、読むだけでも仕組みがなんとなくわかるはずです。
基本情報や応用情報の書籍だけではハードの話はぼんやりとしかわからず、
丸暗記することになってしまうかと思いますが、この書籍を読むことで流れをつかめます。
真理値表を見ることに抵抗もなくなるかもしれません。
私はなくなりました。
プロセッサを支える技術
主にx86のアーキテクチャを説明した本。
プロセッサの基礎から説明されています。
2011年の書籍なのでかなり古いですが、古いということを念頭に置いた上で基礎を学ぶには良書。
ソフトウェア
ゼロからのOS自作入門
2021年3月発売なのでかなり新しい環境でのOSの自作方法が学べる本。
かなり丁寧に書かれています。
創りかたを学ぶということは動きを学ぶことになるので例え作らなくとも(もちろん手を動かした方がいいけれど)、
割り込み処理やメモリ管理を学べるのでおすすめです。
システム構成技術
24時間365日 サーバ/インフラを支える技術
負荷分散、冗長化、高性能化など恐らく実践的によくまとまっている本です。
恐らく、なのは私がシステム構築をすることがない為判断がつかないのです。
しかしながら、資格の本を読むよりはずっとわかりやすく、初学者でも読める内容でした。
イラストでわかるDockerとKubernetes
薄いのに図解が多く、大変わかりやすい、入門書。
Dockerってさわったことあるけど…みたいな読者が対象。
評価も高いので安心して読めると思います。
データベース
達人に学ぶSQL徹底指南書第2版
標準から特有の構文まで広くカバーしている1冊。
DBの話とかは出てきません、ひたすらSQLです。
ただ、本当に初学者の場合は少し難しいと思うので次の本を読んでみましょう。
SQL 第2版 ゼロからはじめるデータベース操作
初学者に必要な知識が網羅されています。
Windows + PostgerSQLでの環境構築になるが不慣れな人でも記載があるので安心できるのではないでしょうか。
SELECT文から書かれており、まずはSQLを業務で扱うための土俵には立てると思います。
実際に業務で扱うにはおそらく足りないので達人SQLを読んでみてください。
達人に学ぶDB設計
DB設計のノウハウ・アンチパターンをわかりやすく、実践的にまとめてある本。
正規化やパフォーマンスの向上について学べます。
設計についての本になるので全く知識がない人にはなかなか難しいと思います。
実践的であるがゆえに活用場面が想定できなさそうですが、少しでも学んだことがあればおそらく大丈夫。
ネットワーク
マスタリングTCP/IP 入門編(第6版)
言わずと知れた名著。
全体の概念を、ざっくりと把握できるまさしく入門編です。
一見ボリュームがありそうですが余白や図が多いのできっと読みやすいと思います。
セキュリティ
セキュリティ技術の教科書 第2版
(2022/4/11追加)
この本はセキスペレベルにはなると思いますが、
その辺の入門書より深いにもかかわらず、わかりやすく、この書籍独自のかみ砕いた図で説明されているので大変有用です。
発売が2020年ということもあり、比較的新しいです。
下のマスタリングTCP/IPは2013年のものであり、やはりやや古くあるので併せて読めばかなり良いと思います。
マスタリングTCP/IP 情報セキュリティ編
応用情報レベルより難度が高いため、セキスペの対策にも使える一冊。
用語の説明だけでなくアルゴリズムなどきちんと説明が書かれています。
薄いものの内容はしっかりと幅広く網羅されています。
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版
Webアプリを作る上での基本的なセキュリティ知識を得られる本です。
内容は全体的に古いものの、基礎なので知っておくにはいいかと。
PHPで記載。
暗号技術入門 秘密の国のアリス 第3版
プログラマの数学と同じ著者です。
暗号技術の仕組み(アルゴリズム)を歴史的背景から追って知りたい人向け。
また、暗号化ツールの具体的な使い方などが知りたい人も対象ではありません。
読み物として大変面白いのですが中級レベルくらいだと思うのでセキスぺの副読本的に読むとよいでしょう。
システム開発
図解即戦力 要件定義のセオリーと実践方法がこれ1冊でしっかりわかる教科書
要件定義についてこれから知りたいと思った場合に一冊目に読むべき入門書です。
コンパクトにまとまっているので経験者には物足りないでしょう。
オブジェクト指向でなぜつくるのか 第3版
長く愛される書籍の第3版が2021年4月に改訂されました。
オブジェクト指向についてまだイマイチ理解が出来ていない人は是非読んでみてください。
大変わかりやすく書かれています。
初学者が理解に苦しみがちなポリモーフィズム、継承についてもかみ砕かれています。
Java言語で学ぶデザインパターン入門
またまた結城浩先生です。
2021年11月に改訂されました。より現代的に、ジェネリック型、ラムダ式、アノテーションを用いてあります。
いまでもあせないデザインパターン。
学びたいけど説明だけ見てもよくわからない…という方は、この本を写経することをお勧めします。
書いて実際に動かすと理解がしやすいです。
知識ゼロから学ぶソフトウェアテスト
実践的な内容ではなく、知識を得るための読み物として。
テストの基本のきを教えてくれる書籍です。
より実践的なモノとしては次の書籍をどうぞ。
はじめて学ぶソフトウェアのテスト技法
テスト技法を詳しく掘り下げた道具箱的存在です。
「知識ゼロから学ぶソフトウェアテスト」とどちらか一冊しか買えないのだとしたら、
「はじめて学ぶソフトウェアのテスト技法」をおすすめします。
わかりやすい章立てで演習もあり、実際に必要となった時に参照すれば役立つ内容だと思います。
SCRUM BOOT CAMP THE BOOK
サクッと読める上たっぷりのイラストでわかりやすいです。
「スクラム」ってよく聞くけど、なに?という方へ。
情報技術者試験でも問われるようになってきたので知っておくべき知識なのでしょう。
プロジェクトマネジメント
システム開発のための見積りのすべてがわかる本
基本的なシステム開発の見積と発注の流れの解説からはじまり、実際の実務的な内容まで。
こういったノウハウを学ぶ機会を得ることはないのでは?と思うので、良い本です。
ファンクションポイントとか名前は知ってるけどどう使うの?みたいな疑問に答えてくれる本なので、
応用情報の午後対策にもいいんじゃないでしょうか。
ストラテジ
ITエンジニアのための【業務知識】がわかる本
業務系システムを作る上で、エンジニアも業務知識を知っていないとならない機会は多いように思います。
ただ、会計などはとりあえず簿記…と思うもののその他はどこから知識を得れば?となりますし、
まとめて学べる書籍があればな、と思う方も多いのではないでしょうか。
会社経営、財務会計、販売管理、物流・在庫管理、生産管理、人事管理とよく扱う知識が網羅されています。
これを抑えておけば業務にも役立ち、ITストラテジストレベルでも対応できるでしょう。
その他
エンジニアとしての心得
プリンシプルオブプログラミング
このブックリストをさらった方が、より高度であったり、幅の広い本を探すのに最適な一冊。
どういうことかというと、
良書のエッセンスを簡潔にまとめ、かつ出典書籍と関連する書籍をまとめているものなのです。
技術書に限らないため全く知らない本が紹介されていたりします。
達人プログラマー
プリンシプルオブプログラミングに内容は近いです。
プログラマとして何を意識すべきか、という要素がまとまっている本です。
チーム開発を経た人なんかが読むと恩恵がありそうです。
UIデザイン
オブジェクト指向UIデザイン
エンジニアが作る画面はダサくて使いにくい話はしばしば話題になります。
デザインを学んだことがない人向け。
身の回りの不便なUIを例に挙げたり、
要件を画面に落とし込む課題に取り組みながら使いやすいUIを学べる書籍。
本ではありませんが、参考にこちらのサイトもおすすめです
綺麗なコードの書き方
リーダブルコード
言わずと知れた名著です。
自分が書いてるコード、読みにくくないか…?と感じた時読み返すといいでしょう。
良いコードを書く技術
普段Javaを書いてる人にはいいかもしれません。
ArrayListやサーブレットが出てくるので…。
いいコードを書くにはどんな要素を気にする必要があるか?を学べます。
こちらよりはリーダブルコードを優先して読みましょう。
リファクタリング
レガシーコード改善ガイド
実際に導入するには難しい部分は多々あると思うものの、保守のためのヒントが沢山あります。
テストのカテゴリに入れるか少し悩みましたが、テストをしやすくするためのリファクタリングの本であるのでこちらで。
新装版 リファクタリング―既存のコードを安全に改善する―
安全なリファクタリング方法についてよくまとめらている書籍。
非常に実践的です。辞書的に使うのもよいかと。
オブジェクト指向の応用的内容でもあります。
チーム開発
チーム開発実践入門
2014年発売だけあってかなり中身の古い本です。
しかしながら、例に挙げられている炎上プロジェクトのような環境で働く方もまだまだいらっしゃるのではないでしょうか…。
Prop Tech plus入社前に働いていた会社で参画していた案件はほとんど例に挙げられているような、
レガシーな環境の炎上プロジェクトだったため、
チーム開発を円滑に進めるためのツールが数多くある!ということを知れたのは大きな収穫でした。
今の働き方はもしかしておかしいんじゃないかな?でも他を知らないからよくわからない…そう思っている新人さんに読んでほしい書籍です。
中身は古いので、本を取っ掛かりとして最新の内容を調べてみてください。
プログラミング
コーディングを支える技術
プログラミング言語の技術について歴史と複数言語を比較し、どういう意図でその言語がこの文法なのか、
ざっくり学ぶことのできる、言語の見方が変わる書籍。
Wikipediaであさるよりもずっとわかりやすく簡潔にまとめられているので読み物として大変面白い。
プログラムはなぜ動くのか
基本情報レベルの人にぜひ読んでほしいもののどこに入れるべきか迷って最後になってしまいました。
プログラムがどう動くのかハードディスクからCPUがなにをしてプログラムが動作するまでの一連の流れが学べます。
ハードウェアからソフトウェアまでの内容でしょうか。
これが一番わかりやすいと思います。