研修中エンジニアが読んでいる本

# わたしの現在

私は4月に新卒で入社した会社の研修を受けている新人エンジニア（実務経験なし）です。
隙間時間や通勤時間に本を読み始めて少し経ったので、今読んでいる本と読み終わってためになった本をいくつか紹介したいと思います。
有名な本しかないので知っている方も多いと思いますが、読んでいない人はぜひ確認してみてください！

## プログラミング全般

### 1. リーダブルコード

![readableCode 2.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/371529/bfe186c7-f1af-40da-aed7-5106125c629a.jpeg)
言わずと知れた名著です。
具体的なコードが書いてあるというよりは、どんなコードをどんな思想で描いていけばいいのかということが書いてあるので、通勤・通学中にも読みやすいと思います。
個人で開発学習をしているときにはあまり気にしなかったコードの保守性・可読性といった視点を持たせてくれました。

### 2. プリンシプル オブ プログラミング

![principleOfProgramming.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/371529/88c1f365-dd9d-4d78-beb1-75afc338389f.jpeg)
プログラミングの101の原則をそれぞれ解説してくれています。
個人的に印象に残っているのは、DRYとSOLID、KISSの原則です。
また、「コンピュータはコードを読まない、人間がコードを読む」という言葉に目から鱗でした。
先ほど紹介した原則以外にもたくさんの原則があるのでそれぞれ少しずつ意識できるようになりたいです。

### 3. Tidy First？

![tidyFirst.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/371529/4ec834b3-6d64-45fe-97e4-44e94c09f434.jpeg)
O'Reillyから出版されている本です。
「整頓」という概念を用いて、いつ整頓をするのか、どうやって整頓をするのかということが書かれています。
コードの整頓をすることが、結果的にチームの生産能力を向上させるという話につながっており、これからの実務に活かせる情報がたくさんあると感じました。

### 4. AI支援プログラミング

![AISupportedProgramming.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/371529/0a574e3f-e1a7-4cb2-864f-e33d7229f972.png)
O'Reillyから出版されている本です。
機械翻訳されている本だったので少し読みづらい日本語が所々ありましたが、基本的には問題なく読めました。
現在話題に上がっている生成AIを用いたコーディングの方法について書かれています。
やはり生成AIを使用した方がチームの生産能力が向上するといった話や、具体的にどういったプロンプトを書けばいいのかというプロンプトエンジニアリングの触り程度のことが書かれていました。

## Java関係

### 1. 良いコード/悪いコードで学ぶ設計入門

![iiCodeWaruiCode.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/371529/d8389860-704b-44ee-b954-94f318ae5e2c.jpeg)
良いコードと悪いコードの具体例を用いながら良いコードとはいったいどのようなものなのかという議論をしています。
今までなんとなく行なっていた「設計」というものについて考えるきっかけになるような本でした。

### 2. Java言語で学ぶデザインパターン入門

![JavaDesiginPattern.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/371529/d8f65695-974c-4ab1-ac20-4e39ec6ef264.jpeg)
私がJavaにハマるきっかけになった本です。
オブジェクト指向がふわっとしかわかっておらず、じゃあどうやってJavaっぽい、オブジェクト指向言語っぽい言語を書くの？という疑問に答えてくれると思います。
具体的なコードと練習問題がついているので、自分で手を動かしながら学習できるのも非常に魅力的です。

### 3. JavaGoldSE11 (紫本)

![JavaGoldPurple.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/371529/8671a8dc-5c01-41b9-9fe9-357a997e7874.jpeg)
JavaGoldの勉強用に購入しました。
Javaの基本的な機能と、SE11までの新機能について網羅的に学習するのにちょうど良いと感じました。
試験を受ける前に研修に入ってしまい、まだ試験が受けれていないので研修が終わる前までにJavaGoldの試験を受けたいと思っています。

### 4. Effective Java

![EffectiveJava.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/371529/2a55e6dd-70bb-4089-bba8-bcd111b6055f.jpeg)
私がJavaへの理解が最も深まったと感じた本です。
89の項目に分かれており、それぞれがほとんど独立した内容になっており、どこから読み始めても良いのが魅力です。
項目1の「コンストラクタの代わりにstaticファクトリメソッドを使う」という内容から、すでに「これは入門書ではなく、初級者から中級者以上に必要な知識を教えてくれるものなんだ」という印象を抱かせてくれます。

### 5. ソフトウェアテスト実践入門

![JavaTest.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/371529/04d4c9a5-672b-484b-8dd0-4a80aee0b3a5.jpeg)
JUnit5を使った実践的なテスト技法について書かれている本です。
個人開発だとおざなりになりがちなテストですが、実務では必須だろうと思い購入しました。
今までおざなりになっていたテストというものの書き方と、どんなテストをかけるのかということを知っておくことで、テストに対する印象が変わりました。

### 6. Javaによる関数型プログラミング


![FunctionalProgrammingByJava.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/371529/5c7ee85f-bf3a-4018-879a-dc90dd7df9f8.jpeg)
O'Reillyから出ている本です。
JavaSE8から追加されたラムダ式とStreamを使ったJavaによる宣言型のプログラミングについて解説されています。
これまでの手続型プログラミングから意識を変えることができるきっかけになりました。
連鎖的に処理が続く楽しさ、後から見たときにどのようなことを行なっているのか確認もしやすく、非常に面白かったです。

## データベース関係

### 1. 達人に学ぶSQL徹底指南書

![TatujinSQL.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/371529/480e697f-ae78-4775-9902-308b86a5f5d7.jpeg)
言わずと知れた名著だと思います。
まだ途中までしか読めていないのですが、序盤だけでもウィンドウ関数の使い方や集合演算の強力さを体感しました。

### 2. 達人に学ぶDB設計徹底指南書

![TatujinDB.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/371529/b1142465-93ec-48bb-bd31-fa50a7710c4a.jpeg)
同じく達人に学ぶシリーズの本です。
普段ソフトのことしかあまり考えていなかったので物理層よりの話が展開されており非常に面白かったです。
また、今まであいまいだった正規化という概念についてもより理解が進んだと思います。

## これから読もうと思っている本

### 1. アーキテクトの教科書

![architect.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/371529/947992f9-73c0-45bd-b36e-fcfd02e06b53.jpeg)
ソフトウェアアーキテクチャに関しての基本的な知識が得られると思い購入しました。
知らない単語が多く調べながらだと電車の中でなかなか読み進められないのでGWで腰を据えて読んでみようと思います。

### 2. ドメイン駆動設計を始めようーソフトウェアの実践と事業戦略を結びつける実践技法

![DDDforBeginer.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/371529/3b5e5b0a-faae-409d-9328-815b8ad3475d.jpeg)
いわゆるDDDについての本です。ドメイン駆動設計という言葉を聞いたことはあるけどじゃあ一体なんだろうと思い読んでみました。
理論的な内容から実践、実装まで書かれておりドメイン駆動設計とはなんなのかを知るのに良い本だと思います。
まだ読んでる途中なので最後まで読んでいきたいです。

## さいごに

他にも紹介したい本はいくつかあるのですが、多くなりすぎるのでこの辺にしておきたいとおもいます。
技術書は非常に高く、また内容を完全に理解するとなると一冊読むのも非常に苦労します。
ですが、そういった自分への投資は惜しむべきではないというのが個人的な考えなので自分が興味のある、面白そうだと思った本は迷わずに読むようにしています。
また、最近O'Reillyのサブスクに加入してO'Reillyの本が無料で（？）読み放題にり、色々な本に気軽に手を出せるようになったのも嬉しいです。
O'Reillyのサブスクについては<a href="https://qiita.com/kabuakantech/items/641f8f0d5dd90ef929e9">このQiitaの記事</a>を参考に加入したので興味のある方はぜひ加入を検討してみてください。1ヶ月に2冊ほど読むと多分元が取れます。

ぜひみなさんが良い本に出会えますように。