新卒から2年間で読んだお勧め本

![dokusyo.png](https://qiita-image-store.s3.amazonaws.com/0/258841/84aeb9cb-0adf-2fb1-3283-2f2100a1fe59.png)

#### ■ イントロダクション

まずは簡単な自己紹介から
エンジニア歴2年目のペーペーです。
主な技術領域は組み込み
言語はCとPerlを使ってます。
趣味でPythonだったりJavaだったり書いてgithubで公開だったりしてます。
学生自体のプログラミング経験は0

#### ■ 対象技術領域
OS : Linux
言語 : C言語, Java, Python
その他 : ネットワーク

#### ■ この記事の対象の読者
・学生時代は非情報学系
・趣味でプログラミングやってない人

# 完全に未経験だった自分が読んでよかった本
読んでみて率直に思った難易度を記載しています。
横に書いてあるのは自分が実際に読んだ入社時期からのカウントです。

##【難易度 ★☆☆☆☆】 対象：入社1年目(前半)

#### ◆[スッキリわかるJava入門](https://www.amazon.co.jp/%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8BJava%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E4%B8%AD%E5%B1%B1-%E6%B8%85%E5%96%AC/dp/484433638X/ref=sr_1_1?s=books&ie=UTF8&qid=1530800720&sr=1-1&keywords=%E3%81%99%E3%81%A3%E3%81%8D%E3%82%8A%E3%82%8F%E3%81%8B%E3%82%8Bjava)

Javaに関してだけではなくプログラミングについて学べます。
本を通してコーディングするだけで作品が出来上がりモチベーションの維持もできる
初心者にはもって付けの1冊

#### ◆[プログラミング言語図鑑]()

プログラミング言語がたくさん載っています。
学習というよりはこんなのあるんだ程度での読み物です。

#### ◆[TCP/IPの絵本 ネットワークっておもしろい!](http://amzn.asia/0UL8lB4)

エンジニアとして最低限知っておきたいネットワークの技術が得られます。
このくらいは知っておかないと現場出て苦労するだろうレベルなんで必須レベルの本です。

#### ◆[Cの絵本―C言語が好きになる9つの扉](https://www.amazon.co.jp/Cの絵本―C言語が好きになる9つの扉-アンク/dp/4798101036/ref=sr_1_2?s=books&ie=UTF8&qid=1531569869&sr=1-2&keywords=C言語の絵本)

配列、ポインタ、構造体の基礎の基礎がわかります。
実際他の言語を学ぶ際もCの基礎知識があるのと無いので習熟スピードは格段に変わると言われているので実際に見ておいて損のない一冊です。

#### ◆[1週間でLPICの基礎が学べる本](https://www.amazon.co.jp/1週間でLPICの基礎が学べる本-第2版-徹底攻略-中島-能和/dp/4844335308/ref=sr_1_1?s=books&ie=UTF8&qid=1531570253&sr=1-1&keywords=Linux+1週間)

現場で見ることは少ないかもしれないLinuxですが、実際触れる機会は必ずあると思います。
その際の基礎の基礎の部分がこちらの本で補えます。

#### ◆[ゼロからわかる UML超入門](https://www.amazon.co.jp/ゼロからわかる-UML超入門-河合-昭男/dp/4774143952/ref=sr_1_2?s=books&ie=UTF8&qid=1531572416&sr=1-2&keywords=uml超入門)

UMLの入門書です。基本情報を取得するつもりで勉強していればあまり必要のない本ですが
設計書などを読む際に必須中の必須の知識なのでこれは読むべきですね。

##【難易度 ★★☆☆☆】 対象：入社1年目(後半)
#### ◆[大滝みや子先生のかんたんアルゴリズム解法 ~流れ図と擬似言語~](https://www.amazon.co.jp/基本情報技術者-大滝みや子先生のかんたんアルゴリズム解法-流れ図と擬似言語-第3版-みや子/dp/4897979668/ref=sr_1_10?s=books&ie=UTF8&qid=1530800919&sr=1-10&keywords=アルゴリズム)

ぜひとも1年目のうちに取得したい基本情報のアルゴリズムの分野に特化した1冊
アルゴリズムとは何なのかから試験合格レベルまでたどりつける1冊

#### ◆[インフラエンジニアの教科書](https://www.amazon.co.jp/%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8-%E4%BD%90%E9%87%8E-%E8%A3%95/dp/4863541333)

エンジニアとして最低限のハードウェアの知識が得られます。
OSだったりネットワークの基礎中の基礎が学べます。インフラエンジニア以外の方でも
ぜひ読んでいただきたい一冊

#### ◆[Pythonチュートリアル](https://www.amazon.co.jp/Pythonチュートリアル-第3版-Guido-van-Rossum/dp/4873117534/ref=sr_1_1?s=books&ie=UTF8&qid=1531570007&sr=1-1&keywords=Pythonチュートリアル)

今はやりのPythonの基礎の基礎を学べます。
Pythonが書けると何がいいって普段の評価業務の自動化だったり
自宅での定常作業を自動化できたりします(自宅では主にいろんなサイトからデータ収集)
これ1冊で何か作れるわけではないですがPythonのコーディングスタイルなんかだったり
ほかの入門書にはない情報が得られたりするので是非お勧めです。

#### ◆[スッキリわかる Java入門 実践編](https://www.amazon.co.jp/スッキリわかる-Java入門-実践編-第2版-スッキリシリーズ/dp/4844336770/ref=sr_1_1?s=books&ie=UTF8&qid=1531570114&sr=1-1&keywords=スッキリわかる+Java入門+実践編)

入門編より若干難易度が高いですが必須の一冊。テスト手法だったりテストのやり方自動化。工数だったりバグ摘出率だったり業務で使うオンパレードの用語も丁寧に解説してくれます。

#### ◆[スッキリわかる サーブレット&JSP入門](https://www.amazon.co.jp/スッキリわかる-サーブレット-JSP入門-スッキリシリーズ-国本/dp/4844335804/ref=sr_1_1?s=books&ie=UTF8&qid=1531570684&sr=1-1&keywords=サーブレット+%26+JSP)

上記と同じ会社が出している本です。JSP&サーブレットは趣味でしか使ったことが無いですがwebに関しての基礎知識が得られるって意味で読みました。

#### ◆[ベタープログラマ]()

プログラマがあるべき姿や名言などが書かれているオライリーの本です。
値段の割に内容は薄いですがエンジニアとして頑張ろうという意識が再度出てくるような
いい本でした。


##【難易度 ★★★☆☆】 対象：入社2年目(前半)
#### ◆[Java言語で学ぶデザインパターン入門](https://www.amazon.co.jp/増補改訂版Java言語で学ぶデザインパターン入門-結城-浩/dp/4797327030/ref=sr_1_1?s=books&ie=UTF8&qid=1530801482&sr=1-1&keywords=デザインパターン)

現場でオブジェクト指向を使うことはない自分ですがJavaの勉強をしていると必ず出てくるワード「デザインパターン」。なぜ必要な知識なのかを学べかつ使用方法に関して丁寧に書いてあります。自分がこの本を読んだのは入社して3カ月目とかで正直何言ってるからわかりませんでしたがぜひ年度が替わるころにもう一度読んでいただきたい一冊

#### ◆[Java言語で学ぶデザインパターン入門 マルチスレッド編](https://www.amazon.co.jp/増補改訂版-Java言語で学ぶデザインパターン入門-マルチスレッド編-結城-浩/dp/4797331623/ref=sr_1_3?s=books&ie=UTF8&qid=1531572222&sr=1-3&keywords=Java+デザインパターン)

スレッドの概念/スレッドを意識したプログラミングの基本能力が身につきます。
フレームワークオンリーの開発だけだと欠如しやすい領域ですのでぜひ一度はしっかり理解を深めてほしいのでオススメします。

###【難易度 ★★★★☆】 対象：入社2年目(後半)
#### ◆[C言語 実践プログラミング](https://www.amaon.co.jp/C実践プログラミング-第3版-Steve-Oualline/dp/4900900648)

C言語を実務で使うなら必読の1冊。アルゴリズムやリストなどの考え方を理解した上でどう実装するのが効率がいいのかなど詳しく書かれています。

#### ◆[TCP/IPソケットプログラミング C言語編](https://www.amazon.co.jp/TCP-IPソケットプログラミング-C言語編-Michael-Donahoo/dp/4274065197/ref=sr_1_2?s=books&ie=UTF8&qid=1531570787&sr=1-2&keywords=TCP%2FIP+ソケット)

自分がたまたまネットワークの組み込み系の業務で必要となった知識だったので読みましたが、普段Javaなどの言語でネットワークプログラミングをやってる人だと必要のない知識ではなりますが、まあ参考までに紹介します。

#### ◆[Docker/Kubernetes 実践コンテナ開発入門]()

流行のDocker/Kubernetesの入門から実運用まで学べます。
割と最近出た本の中でも大変評価が高いのでおすすめです。

#### ◆[UNIXという考え方]()

この本は全エンジニアにおすすめの本です。
これはUNIXの設計哲学が書かれていますが、WindowsやMacユーザやソフトウェア開発者にも読んでもらいたい一冊です。
UnixというOSに関して前提知識はほぼ無く読みやすい本となっています。

## 【難易度 ★★★★★】 対象：分かりません(専門職強め)
#### ◆[詳解 Linuxカーネル](https://www.amazon.co.jp/%E8%A9%B3%E8%A7%A3-Linux%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB-%E7%AC%AC3%E7%89%88-Daniel-Bovet/dp/487311313X/ref=sr_1_1?s=books&ie=UTF8&qid=1530801783&sr=1-1&keywords=%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB+LINUX)

いただいた本です。正直いまだに内容は難しくほとんど読めていません。
読むための知識が大量にある本。Linuxカーネルについて書かれています。

引用：必要な知識
1.C言語（ポインタを完全に理解する必要あり）
2.LINUXの仕様の知識
3.LINUXプログラミングの知識。特にプロセスやスレッド関係。
4.x86アーキテクチャの知識。特にアセンブラとMMU関係。

#### ◆[Linuxデバイスドライバ 第3版](https://www.amazon.co.jp/Linux%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90-%E7%AC%AC3%E7%89%88-Jonathan-Corbet/dp/4873112532/ref=sr_1_1?s=books&ie=UTF8&qid=1530801929&sr=1-1&keywords=%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90)

読めてないですが紹介だけ。デバイスドライバについて設計からいろはがわかるとのこと
本棚の隅に置いてあります（いつか読めるようになろう！）

---

まだ執筆中ですが、良書に関してはどんどん追記していきたいと思います。