Movatterモバイル変換


[0]ホーム

URL:


LoginSignup
1908

Go to list of users who liked

2358

Share on X(Twitter)

Share on Facebook

Add to Hatena Bookmark

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

エンジニアに読んで欲しい技術書90選

Last updated atPosted at 2023-10-30

はじめに

タイトル通り、読んで欲しい(圧)技術書をたくさん集めてみました。自身の担当から外れる領域に関しては、会社の人に協力を仰ぎ、編集しました。「何を読めばいいかわからない」、「次の読む本を探したい」などのように考えている方の参考になればと思います。

また、大きく、

・新米エンジニア
・脱新米エンジニア

と分けてまとめたので、参考にしてみてください。

技術書のススメ

技術書の紹介の前に、技術書で得られるものについて説明したいと思います。全然読み飛ばしてもらって大丈夫です。この章から本の紹介を行なっていきます。

技術書は体系的な構成となっているため、技術書を読むことで、

・論理的な思考力が身に付く
・技術の歴史・背景を知れる
・技術の知識、手法を学べる

これらを学ぶことができます。論理的な思考力、知識はわかるけど、技術の歴史・背景を知ってどうするんだと思う方もいるかもしれません。しかし、歴史・背景を知ることは重要であると思います。歴史・背景には、モノや技術の成り立ちや、先人たちの試行錯誤が含まれています。成り立ちを知ることで、使用目的を知り、試行錯誤を知ることで、先人たちと同じ思考を辿り、理解を深めることができます(あるいは同じ過ちを防ぐこともできるかもしれません)。このような観点において、歴史・背景を知ることは重要であり、それを学べる「技術書を読む」ということに価値があるのだと思います。

少し概念的な話しなってしまったので、実際にどのように技術本に向き合えばいいのか説明します。

色々みてみる

まずは、とにかく興味ある分野だけでもいいので、色々な本に触れてみましょう。さまざまな言語・技術に触れることは新しい知識を学ぶ際の受け皿になってくれます。例えば、多言語話者がそうでない人よりも言語に対する理解が早かったり、Linuxについて理解を持っている方であればDockerに対する理解は簡単であったりします。これは、本当に新しいものというものはあまりなく、新しく見えるものでも、既存の技術の上で成立されていることがほとんどです。そのため、1つの本、技術に固執するのではなく、様々な本に触れて、新しい知識を簡単に入れるための受け皿を養いましょう。

アウトプットをしよう

本をただ読むだけでは、十分な知識が得られるとは言えません。技術書を読んだ後にはできる限りアウトプットする習慣をつけましょう。アウトプットと聞くと「何かアプリ、サイトを作らないとかな〜」とか思うかも知れませんがそこまで大袈裟に考えなくても大丈夫です!

まずは、

概要をまとめる
各章のポイントをまとめる
他の人にどんな内容だったかを伝える(記事を書くのはすごいおすすめです)

など、自分のモチベーションに合わせて簡単なことから始めてみてください。

アウトプットすることで、理解が曖昧だったポイントに気付けたり、知識がより定着していくと思います。

新米エンジニア

つらつらと講釈を垂れてしまいましたが、ここからはどんどん紹介していきたいと思います。

プログラミングのプの字から始める

Progate

本じゃないじゃんという声が聞こえてきそうですが、はい、すみません。「プログラミング何それ(ハナホジ)」という方はまず、プログラミングがどのようなものなのか、簡単に触れてみましょう!ProgateではWebブラウザ(Google Chromeなど)上で、プログラミングが学習できるサイトになっています。有料プランもありますが、無料で十分にプログラミングがどのようなものか学べるので活用してみてください。

何かしらのプログラミングの本

Progateを通じて、よりプログラミングを学びたい!と思えた方は、使用する言語を1つ決めて、本を買ってみましょう!この段階では、本を読み切ろうとしなくても大丈夫です。こんな感じなんだ〜とフワッみてみましょう。以下では、Python, Java, JavaScritの本を一冊ずつピックアップしたので、参考にしてみてください。以下で紹介する本は初学者には難易度が高いと思うので、まずは、Webで基本を抑えて、体系的な学習を行いたくなった時に読むことをおすすめします。(ステップアップする際に役立つと思います)

綺麗なコードを意識しよう

他人が見て、わかりやすいコードを書くことはプロジェクト開発においてとても重要な要素です(個人開発でも数ヶ月後の自分は赤の他人なのでとても大事)。綺麗なコードを書くために具体的に解説されてる本を紹介します。

この本はめちゃめちゃ有名な良書です。とりあえず、プログラミングを書き出すようになったら読んでみましょう。

Pythonプログラマに読んでほしい本となっており、ダメな例、どこがダメか、ベストプラクティスのようにわかりやすくまとめられています。通勤時間などの隙間時間に読める本となっています。

開発環境について

実際に仕事として、プロジェクトに参加すると、git、github、Docker、AWSという言葉を耳にすると思います。コードの共有方法や開発環境への理解は仕事を行ううえで必須の知識となるため、以下の書籍を参考にして勉強してみてください。

Linuxについて

仕事で急にLinuxに触れるという方は基礎をこの一冊で習得することをおすすめします。

コンピュータの基礎知識

コンピュータの仕組みを理解することで、今後、学ぶ技術に対する吸収力が変わってくるので基礎の知識を抑えることをおすすめします。この本では、コンピュータの仕組みがわかりやすく解説されています。

Webの基礎知識

Webの歴史とともに、 URLや、HTTPについて学ぶことができます。エンジニアであれば是非とも読んで欲しい1冊となっています。

"プログラミング"への理解を深める

プログラミング言語における各概念(関数、エラー処理、並行処理など)が'なぜ'あるのかと言った点に着目して解説した本となっています。なぜを理解することで、その概念を使いこなすのに役立つと思います。

オブジェクト指向に触れる

システム設計やコーディングにおいて、オブジェクト指向は重要な知識となっています。エンジニアなら必ず通る道と言っても良いでしょう。そんなオブジェクト指向について、以下の2つの書籍で入門として触れてみるのをおすすめします。

データ構造とアルゴリズムを学ぶ

データ構造とアルゴリズムを学びたい場合は、競技プログラミングに挑戦することをおすすめします。競技プログラミングはデータ構造とアルゴリズムを題材としたゲームなので、理解の役に立つはずです。

競技プログラミングはやってみたいけど、何をすればいいかわからないという方はまず、この問題集を解くことから始めてみるのをおすすめします。競技プログラミングの流れが掴めると思います。

ジャンルごとで問題と内容がまとめられているため、自身の足りてない箇所をピンポイントで学ぶことができます。本を購入せずとも、演習問題だけならこちらから取り組むことが可能です。

初心者でも、Pythonと基本的なアルゴリズム(ソートなど)とデータ構造について学ぶことのできる、美味しい欲張りセットです。

計算量やアルゴリズムについて、コラム的に書かれているため読みやすい本となっています。プログラムがある程度書けるようになったら、早めに読むことをおすすめします。

こちらはより実践向きなアルゴリズムとデータ構造の書籍となっています。珠玉のプログラミングと合わせてここまで取り組んだら、とりあえずデータ構造とアルゴリズムについては十分だと思います。

AIについて学ぶ

基礎的な数学の知識

AIについて学ぶ上で、数学の知識は必要不可欠なため、学習を検討されている方は早めに数学の勉強に取り組むことをおすすめします。トピックとしては、これらは最低限触れておきましょう。

・確率統計
・関数
・微積分
・線形代数

理論がコンパクトにまとめられている"理論"入門の本となっています。

コードベースでディープラーニングについて学ぶことができます。また、ブラックボックスとなっているような外部ライブラリを用いないでモデルの構築を行なっているのも特徴となっています。

データ分析にいて学ぶ

データ分析云々と考える前に、データを扱う上で大事なことが列挙されているため、エンジニアに限らずデータを扱う人にはおすすめな1冊です。

経験のある方は共感し、経験のない方はこれから訪れるであろう危機に備えるor回避するために読んでおきたい本です。事例ごとに紹介されているので、隙間時間に読めます。

手を動かしながら、データ分析について学べる、インプットとアウトプットを両方兼ね備えた本となっています。100本行えばすぐに実践で活躍できる!というわけではありませんが、現場に自然に入れる力を養うことができると思います。

フロントエンドエンジニア向け

フロントエンドエンジニアを目指す方は、HTML、CSS、JavaScriptの基本的な知識を以下の本でインプットすることをおすすめします。インプットしたら、サイトやらを作成してアウトプットしていきましょう。

バックエンドエンジニア向け

技術的な解説のみではなく、サーバー/インフラエンジニアにとって必要な考え方から、学習方法など、初学者にとって丁寧にわかりやすく解説されています。サーバ/インフラの運用・管理などに携わるエンジニアはぜひ読んでください。

データベースやSQLを初めて学ぶ方はこの本から始めることおすすめします。右も左もわからない状態でも、わかりやすく解説されているので、読み進められると思います。

ネットワークやサーバーに関する基本的な知識を丁寧に解説してくれています。今後AWSに触れる予定のある方にもおすすめです。

こちらの本はUNIXを仕事で扱う方向けの本です。初心者には難易度が少し高い本になっていますが、すべてを理解しなくとも、持っておいて、確認したいときに使用するといった使用方法でもよいと思います。

Webアプリケーション開発

初学者にとってわかりにくい、Webアプリケーション開発の全体像が各フェーズ(開発・デプロイ・運用)にわけて体系的に解説しています。

Ruby on Rails、PHP、NoSQLデータベース、フロントエンド、ログの取り扱い、これらの技術や知識を分野ごとにわかりやすくまとめられており、Webアプリケーション開発をこれから行う方におすすめです。

Web開発に必要な技術がコンパクトにまとめられています。演習形式で進んでいくため、テンポよく進めていくことができます。

脱新米エンジニア

上記で、紹介された本が読むのが辛かったという方もいるかもしれません、正直、本当の初学者に勧めるには難易度の高い本が混じっています(すみません)。ここには紹介されていない、丁寧に解説された本もたくさんあるので、自信の理解に合わせて本を探してみましょう。一方で、もし上記で紹介した中から、数冊でも読むことができてたら、技術書を読むことに対する耐性は十分についていると思います。あるいは、もっと読みたいと知識欲が生まれてくるかもしれません。そんな方は、さらにどんどん読み進めていきましょう。

綺麗なコードを意識しよう

リーダブルコードの中~上級者向けの本といったようなイメージになっています。チーム開発の際のコードの書き方などがリーダブルコードに比べても豊富に解説されています。分厚いので、電子書籍版の購入をおすすめします。

Linuxについて

Linuxの入門書となっています。Linux以外のインフラ知識も学ぶことができるため、Linuxを扱うエンジニア以外にもおすすめできる本となっています。

入門書を読んだ上で、この本に取り組むとLinuxへの理解がさらに深まると思います。

開発・設計

開発環境について

実務での運用において、役立つポイントがまとまっています。

クラウド開発

プロジェクトがクラウド開発を採用している方が多いのではないでしょうか?各クラウド環境に関する本を選んだので、ご自身の開発環境に合わせて、一読してみてください。

Webアプリケーション開発

JavaScriptに一歩踏み込んだ内容の書籍となっています。console.log(x)を実行する際の「Object」ってなんだろう?と思ったことがある人は読むと勉強になります。'プログラミング言語'を勉強する楽しさが味わえます。

本自体少し古く、策定中とされているものもありますが、一通りのAPIについて触れたい方はおすすめです。解説とサンプルコードが掲載されているためわかりやすいです。

Web APIの設計・開発・運用の解説書となっています。APIをどのように設計し運用すればより効果的なのかを解説しています。XML over HTTP方式やJSON over HTTP方式のAPIを対象としています。

オブジェクト指向を理解する

この3冊はオブジェクト指向の三種の神器です。この3冊を読んで、オブジェクト指向を理解しましょう。

並行処理を学ぶ

並行処理をしっかり学びたい方は以下の2冊をおすすめします。特に2冊目はGo言語に限らず、平行処理について学ぶことができます。並行と並列、聞いたことあるけどわっかんね~という方におすすめです。

アーキテクチャ

ソフトウェアアーキテクチャってなんだ~?という方は、この本を読んでみてください。ソフトウェアアーキテクチャが何か、その役割、設計、構築、維持に必要な知識を解説しています。

古典的なパターンについて解説されており、アーキテクチャの理解をさらに一歩深めるためにおすすめです。

設計原則の解説の元、維持のしやすいクリーンアーキテクチャの設計に関して実践的に学習することができます。

下に紹介するのドメイン駆動設計(DDD)の原典を読む前にこちらの入門書を読んで概要を掴むことをおすすめします。

DDDの哲学本です。一読はおすすめしますが、深堀するかどうかは各自の自己責任でお願いします。

インフラ

インフラエンジニアがどのような仕事なのか、インフラエンジニアに求められる知識、スキル、インフラエンジニアになる方法が解説されています。今後インフラエンジニアを目指す方は早めに読むことをおすすめします。

面接試験の対策本として、売り出されているが、システムのアーキテクチャ集としても読むことが可能です。awsやgcpだったらこのサービスだな、と関連付けながら読むと理解がより深まると思います。

ネットワーク

ネットワークに入れましたが、ネットワークエンジニア以外のエンジニアも最低限知っておきたい内容になっています。

DNSの仕組みからDNSの運用ノウハウまで、幅広くカバーしています。各ステップ順を追って説明してくれるため、読みやすい技術書となっています。図が豊富なのも特徴です。

実際の構成例を元に、VALN設計、アドレス設計、冗長化、仮想化など、オンプレミスなサーバーサイトの構築の技術や設計のポイントを解説しています。

セキュリティ

ハッカーの技術云々ではなく、ハッカーの考え方、行動規範が記された1冊です。この本の中でホワイトハッカーの学習教材が示されているので、それを元に学習に取り組んでみるのもよいと思います。

こちらの本もエンジニアなら最低限、読んでおきたい技術書となっています。暗号技術の概要を知りスタートラインに立つことができると思います。

Webアプリケーションにおける脆弱性の発生原因や、脆弱性を解消するためのプログラミング手法について、体系的に学習することができます。PHPサンプルを通じて学習が行えるため、わかりやすい内容となっています。

ハッカーやセキュリティエンジニアにとって、情報数学(離散数学)の知識は重要であるため、セキュリティエンジニアを目指す方は情報数学の基礎をこの本を通じて学習しましょう。

品質保証・テスト

ソフトウェアテストにできることできないこと、初心者が知っておきたい基礎的な知識が簡潔にまとめられている、ソフトウェアテストの入門的な本になっています。隙間時間で読むことができます。

テストの概要を知る上で、とても参考になる本となっています。単体テストや受入テストなど、テスト工程の全体像と実施方法を知ることができます。

タイトル通り、ソフトウェアの品質保証の基本的な考え方を学ぶことができます。品質保証について学ぶ際はこの本から始めてみるのはいかがでしょうか。

シンプルかつ具体的な実装コードが書いてあるのと、汎用性が高くて比較的読みやすいコードが書いてある良書です。テスト駆動開発における鉄板書です。

データベース操作

達人に学ぶシリーズです。この2冊はどちらも、あなたのデータベース・SQLに関する知識、技術をさらに一歩前進させてくれることでしょう。また、振り返る際の本としても、中級者以上のプログラマにもおすすめです。

DB設計やクエリ実装のやっちゃダメ(だけど割とやりがち)なパターンが書いてあります。自身がアンチパターンを行っていないかどうか確かめるためにも一読してみてください。

SQLの本ではないため、購入する際には要注意です。SQLが一通り書けて、テーブル設計もできるようになった際に、この本を読んでみることをおすすめします。リレーショナルモデルについて学ぶことができます。

データ分析

データ分析において、数学の知識、特に確率統計の知識は重要になってきます。この本を通じて、確率統計を学んでおきましょう。

データ分析を行う方にはKaggleに挑戦されている方も多いのではないでしょうか?Kaggleを今後、しっかり取り組みたいという方の最初の一歩を助けてくれる、そんな本となっています。データ分析における考え方、実践的な分析手法について体系的にまとめられています。

「機械学習モデルを作る」ということを図やグラフを用いてわかりやすく解説されています。精度を上げるためのヒントも掲載されています。

機械学習等において、その効果を適切に計測することは当たり前です。つまり、自身の仕事の評価は効果検証により左右されます。この本では、効果検証における重要な要素である、「因果推論」を行うための基礎となる知識が解説されています。

AIについて学ぶ

機械学習エンジニアの仕事は「精度の高いモデルを作る」だけ、ではありません。「モデルをシステムに組み込む」、「本番環境でモデルが上手く機能しているか」、「運用中の監視をどのように行うのか」など機械学習以外のエンジニアリングが関わってきます。この本ではそんな「機械学習エンジニア」の仕事の一連の流れを学ぶことができます。

機械学習プロジェクトにおいて、実験環境と本番環境で、精度が異なってしまうという問題は往々にして存在します。この本では、その原因として、機械学習のテクニックよりも前の前提条件に注目をして解説をしています。「機械学習に解かせるべき問題なのかどうか」、「そもそも機械学習が必要なのかどうか」この本では、そんな前提条件に重きを置いて、機械学習における必要な手順について解説を行なっています。

機械学習プロジェクトにおいて、モデルを振る舞いを把握し、その説明を求められることは頻繁に発生します。この本では、そんなモデルの解釈性に焦点を当てて解説を行なっています。予測精度と解釈性のトレードオフを克服するための手法についても、直感的にわかりやすく説明を行なっているため、数式が苦手な方にも読みやすいと思います。

深層学習におけるさまざまなトピックがまとめられています。理論的な話しがメインなので、偏微分、線形代数の知識を学んだ上で取り組むことをおすすめします。これから論文を読んで、理解を深めたいという方には最適な1冊だと思います。

今話題の自然言語処理に関する本・サイトの紹介

自然言語処理モデルは、昨今の技術トレンドにおいて最もホットなテーマでしょう。今後の仕事にも直結してくる分野であることが考えられるので早めの内に取り組むことをおすすめします。

みなさんご存じの通り、流星のごとく現れた、とんでもないAIです。自然言語処理という言葉を知らなくてもChatGPTは知ってるという方も多いのではないでしょうか。難しい理論は一旦おいといて、まずはChatGPTに触れてみて、感動を覚えましょう。

ChatGPTを通じて、自然言語処理について興味を持てたら、この本を通じて、基礎を学んでみましょう。自然言語処理の解析ステップと応用例がまとめられている教科書です。

ゼロから作るシリーズの第二弾となっており、第一弾と同様に非常にわかりやすくまとめられています。今回もゼロからコードともに学習できるので、手を動かしながら理解したい方にはおすすめな本となっています。

Googleが2018年に発表した自然言語処理モデル「BERT」を題材にした本となっています。理論の学習とともに、BERTを用いてさまざまなタスクを解いていくような構成となっています。

LLM(Large Language Model)を学びたい方の入門としておすすめな本です。プログラミングコードと共に手を動かしながら学ぶことができます。

さらにAIを学ぶために...

AIをさらに深く学ぶために必要なことを紹介します。

数学の準備

本腰を入れて、AIを学ぶためにも数学の勉強を行いましょう。エンジニア向けということで、あまり紹介を行いませんでしたが、AI強いては機械学習の理論を理解する上で必要となります。こちらの本で、機械学習で取り扱われる数学の基礎を押さえましょう。

論文を読もう

最新トピックは論文で追う
AIは世界中で研究が行われるため、最新の情報は常に変化します。そういった最新の変化を追うためにも論文ベースで知識を得る習慣を身につけましょう。

・Google Scholorの活用

Google Scholorは論文の検索に特化した検索エンジンとなっています。知りたいキーワードを入力して論文にアクセスしてみましょう。

・arXivの活用

arXivでは、数多くの論文が毎日投稿されており、どの論文もフリーでアクセスできます。AIに関する論文も数多く投稿されているため、情報を追うためにも参考にしてみてください。

・Paper with Codeの活用

Paper with codeでは、さまざまなタスク(画像処理、自然言語処理、音声解析など)に対して、最も性能の良い機械学習モデルやコード付き論文をランキング形式で紹介してくれるサイトです。ジャンルごとで分けられているため、探しやすくなっています。

国際学会の種類を掲載しておくので、論文を探す際の参考にしてみてください。

機械学習系: NeurIPS / ICML / ICLR / AISTATS
人工知能系: AAAI / IJCAI
データマイニング系: KDD / ICDM
画像系: CVPR / ICCV / ECCV
自然言語処理系: ACL / EMNLP
音声・信号処理系: InterSpeech / ICASSP

こちらの記事で読むべき最新論文が紹介されているので興味あるトピックなどを選んで、参考にしてみてください

その他(ビジネス本など)

その他では、ビジネス本など、社会人として読んでおきたい本や、エンジニアとしてためになる本をいくつかご紹介いたします。

コンサルに限らず、ビジネスマンとして必要な「相手の目線に立って仕事を進める」ということが書かれています。

ロジカルシンキングについて学ぶことができます。

認知科学の観点から、プログラマの思考プロセスについて解説されています。うまくコードの読み書きできないのは「自分の頭が悪いから」ではなく「認知的負荷が高いから」と分かるようになる、自分に少しだけ優しくなれる、そんな本です。

見積もりの基本から、正しく見積もりを実践するための知識を学ぶことができます。

交渉術の基本をこの1冊で学ぶことができます。

エンジニアリングマネージャーの行動規範などが具体的に解説されています。エンジアリングマネージャーに不安があるといった方におすすめです。

有名な本ですね。ビジネスに関わらず周りの人との関係性について考えることのできる本となっています。

「ゴッドタン」やNetflixの「LIGHTHOUSE」などのプロデューサの佐久間宣行さんが執筆した仕事のtipsになっています。仕事のテクニックなどがあるので、通勤前に軽く読んでみてはいかがでしょうか

最後に

ここまで、多くの本を紹介してみました。ご自身の興味、仕事で扱うものなど、該当する分野があればぜひ参考にしてみてください。また、コメント欄等にここに掲載されていないおすすめの本があればコメントをお願いします!今後勉強を進めてく上で参考にさせていただきます!

弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。

1908

Go to list of users who liked

2358
6

Go to list of comments

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1908

Go to list of users who liked

2358

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?


[8]ページ先頭

©2009-2025 Movatter.jp