エンジニアのインターンが技術書を30冊くらい読んでみたので、ゆるくまとめてみた

株式会社Global Mobility ServiceでソフトウェアエンジニアのインターンをさせてもらっているShirubaです。グローバルな環境で利用されている社会的サービスの開発の一端を担いたい志ある方は、ぜひ緩くお話ししましょう〜🙋‍♂️→ [採用ページ](https://www.wantedly.com/companies/company_8204706/projects)

-----



2ヶ月間のフルタイムインターンを通して、「知識量」が圧倒的に不足していることを実感しました。「知識をコードに落とし込む力」に関しては今後の業務を通して補っていけると思うこともあって、4月になるまでにできる限り「知識量」をつけておきたいと思いました。

知識があると、会社のミーティングとかでの話にもついていけるようになるし、コーディングの幅も広がると思います。そういう経緯で、空き時間に興味のある本を図書館から借りて読むことにしました。その時読んだ本をゆるく紹介していくコーナーです。

- 興味の赴くままに読んだので、ジャンルは絞っていない
- 実践的な本を求めていたので、啓蒙的な本・心構え的な本・チーム作法的な本は今回は手をつけていない

# Linux
「[普通のやつらの下を行け！  NewsPicks CTOが新人エンジニアに伝えたい3つのこと](https://www.wantedly.com/companies/newspicks/post_articles/21591)」を読んだことがきっかけ。「低レベルな技術を身につけておきなはれ。おすすめはLinuxカーネルなんやで。」的なことが書いてあったので、Linuxカーネルを見ておきたいなと思った。

またDockerの記事を読み漁っていると、「[コンテナ技術入門 - 仮想化との違いを知り、要素技術を触って学ぼう](https://employment.en-japan.com/engineerhub/entry/2019/02/05/103000)」の記事を見つけたのだけど、cgroupとかLinuxカーネルの技術が出てきて少ししんどかったので、Linuxを体系的に学んでおきたいなと思ったこともきっかけの1つ。

## [試して理解-Linuxのしくみ-実験と図解で学ぶOSとハードウェアの基礎知識](https://www.amazon.co.jp/試して理解-Linuxのしくみ-実験と図解で学ぶOSとハードウェアの基礎知識-武内-覚/dp/477419607X/ref=sr_1_1?__mk_ja_JP=カタカナ&keywords=linuxの仕組み&qid=1582551888&s=books&sr=1-1)

![51r+eNsY2fL._SX395_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/201748b5-6c00-4969-7deb-e19c27b8d59f.jpeg)

スラスラ読める良書。こういったLinux入門書を１冊読んでからLinux Kernel Developmentに入ったらスムーズに入れると思う。

## [Linux-Kernel-Development](https://www.amazon.co.jp/Linux-Kernel-Development-Developers-Library/dp/0672329468/ref=sr_1_1?__mk_ja_JP=カタカナ&keywords=linux+kernel+development&qid=1582551966&s=books&sr=1-1)

![51YDdkSnjaL._SX387_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/229c06a2-318e-ec66-d9e8-c788e21468cc.jpeg)

良書。和訳がないのがネック。

# コンピュータ

大学でコンピュータサイエンスを学んだわけでもないので、コンピュータの知識もつけておきたいなと思った。

## [コンピュータの構成と設計](https://www.amazon.co.jp/コンピュータの構成と設計-第5版-上-ジョン・L-ヘネシー/dp/4822298426)


![51Jyc8kcmDL._SX384_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/35468274-6142-2783-7557-06cb578b84c1.jpeg)

情報量が多く難易度が高かったため、途中で挫折。ただネットでは名著的な紹介が多いので、今後読んでいきたい本。

## [CPUの創りかた](https://www.amazon.co.jp/CPUの創りかた-渡波-郁/dp/4839909865)

![51ATDABNHEL._SX369_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/0928aa53-6cb5-7ed5-930b-f85921ed44b9.jpeg)

スラスラ読めた。良書。

## [コンピュータシステムの理論と実装](https://www.amazon.co.jp/コンピュータシステムの理論と実装-―モダンなコンピュータの作り方-Noam-Nisan/dp/4873117127/ref=sr_1_1?qid=1584324806&refinements=p_27%3ANoam+Nisan&s=books&sr=1-1&text=Noam+Nisan)

![514ifs4Y5bL._SX352_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/92ceee90-9e74-432e-56d0-e79759ba6319.jpeg)

PC内でプログラムが動くまでの仕組みについて一通り知ることができる。すごく簡潔にまとまっていて読みやすく、非常に良書。

# ネットワーク

## [ネットワークはなぜつながるのか-第2版-](https://www.amazon.co.jp/ネットワークはなぜつながるのか-第2版-知っておきたいTCP-IP、LAN、光ファイバの基礎知識-戸根/dp/4822283119/ref=sr_1_1?__mk_ja_JP=カタカナ&keywords=ネットワークはなぜ&qid=1582552124&s=books&sr=1-1)

![51xzk4tjGgL._SX351_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/b06035bc-4f69-9083-ec75-eb86697024d8.jpeg)


良書。「ブラウザでWebサーバにアクセスする」という視点を持って説明してくれているので、具体的にどのようにTCP/IPが利用されているのかが分かる。恐らくTCP/IP系だと「マスタリングTCP/IP」をオススメされることが多いのかもしれないが、その本とはまた異なる視点を持っていて良い。

## [マスタリングTCP-IP―入門編―-第6版](https://www.amazon.co.jp/マスタリングTCP-IP―入門編―-第6版-井上-直也/dp/4274224473/ref=sr_1_1?__mk_ja_JP=カタカナ&crid=2L7FU2L1LBT40&keywords=マスタリングtcp%2Fip+入門編+第5版&qid=1582422571&s=books&sprefix=マスタリングtcp%2Fip+入門編+第6版%2Cstripbooks%2C636&sr=1-1)

![41fQf8MI9AL._SX352_BO1,204,203,200_-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/c721b5df-0a83-5bdb-7b90-3a5c6171de69.jpeg)


非常に良書。読みやすい。

## [インフラ-ネットワークエンジニアのためのネットワーク技術-設計入門-](https://www.amazon.co.jp/インフラ-ネットワークエンジニアのためのネットワーク技術-設計入門-第2版-みやたひろし/dp/4797396806/ref=pd_sbs_14_t_0/356-0505261-5408620?_encoding=UTF8&pd_rd_i=4797396806&pd_rd_r=69370fa7-a680-4393-aa7a-84bae7969b3a&pd_rd_w=De38E&pd_rd_wg=G02Iy&pf_rd_p=ca22fd73-0f1e-4b39-9917-c84a20b3f3a8&pf_rd_r=JRKDXE3M02RHXRSX3NNA&psc=1&refRID=JRKDXE3M02RHXRSX3NNA)

![517yPTiUHeL._SX392_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/65c0551b-a405-9fe4-8e05-4c7bad8a2183.jpeg)


マスタリングTCP/IPよりも実践に即した内容だった。インフラ・ネットワークを実際に触り出したら再度手を出したい本。（なので、TCP/IPを実践で触っていない方は、前者２冊で入門すると良いと思う。）

## [UNIXネットワークプログラミング](https://www.amazon.co.jp/UNIXネットワークプログラミング%E3%80%88Vol-1〉ネットワークAPI-ソケットとXTI-W-リチャード-スティーヴンス/dp/4894712059)

![213B9PVJD1L._BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/c5b1780d-0c29-54f2-123e-497456d4392b.jpeg)

第６章を読むのが目的だったので、第６章で読むのを終えた。図解してくれている部分も多く、TCP/IPの基礎を抑えていたら、特に苦しむことなく読み進めていける。

驚異的に分厚い。

# オブジェクト指向

株式会社Global Mobility Serviceでは一部typescriptを使って開発している。システム内部のリファクタの一環として、クラスを用いた抽象化を適用することになったのだけど、そこで「しんぐるとん」とかが話に出てきてKOされた。今後このような事態をなくすために基本だけ抑えておこうと思い、オブジェクト指向について評判の良い本を数冊読んでおくことにした。

## [オブジェクト指向でなぜつくるのか-第2版-](https://www.amazon.co.jp/オブジェクト指向でなぜつくるのか-第2版-平澤-章/dp/4822284654/ref=sr_1_1?__mk_ja_JP=カタカナ&keywords=オブジェクト指向で&qid=1582551167&s=books&sr=1-1)

![51s3936d+kL._SX364_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/6cd6e209-126b-3d27-b440-550d95b6a129.jpeg)

「オブジェクト指向とは何ぞや」的な本。オブジェクト指向が求められた歴史的背景なども説明してくれている。良書。オブジェクト指向についての副読本的立ち位置だと思う。

## [増補改訂版Java言語で学ぶデザインパターン入門](https://www.amazon.co.jp/増補改訂版Java言語で学ぶデザインパターン入門-結城-浩/dp/4797327030)

![51QsmvkObML._SX392_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/8f81d1d9-65fb-30ed-ff9f-7a4011baa08f.jpeg)


劇的に読みやすい。
GoFのデザインパターンに基づいて、全て簡潔にサンプルコードを交えて紹介してくれている。自分で使いこなすことはできないが、Singletonとか抽象クラスとかInterfaceとかって何なのかが朧げながら理解できた。

Javaを学習したことがなかったので、ハードルを感じていたが、別段JavaJavaしているわけではなかったので安心した。オブジェクト指向言語を学んだことがあるなら読み進められるかと思われる。

## [リファクタリング 既存のコードを安全に改善する（第2版)](https://www.amazon.co.jp/dp/B0827R4BDW/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)

![41XPB3t7-qL.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/c6628b3f-29e1-d569-87c6-c202faf0a802.jpeg)

現在進行形で読んでいる。4月までに読み終えられるだろうか。

# プログラミング全般

純粋に興味があったから読んでみた本たち。

## [定本 Cプログラマのためのアルゴリズムとデータ構造](https://www.amazon.co.jp/定本-Cプログラマのためのアルゴリズムとデータ構造-SOFTBANK-BOOKS-近藤/dp/4797304952/ref=asc_df_4797304952/?tag=jpgo-22&linkCode=df0&hvadid=295686767484&hvpos=&hvnetw=g&hvrand=3936805100970098348&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9053264&hvtargid=pla-531953659875&psc=1&th=1&psc=1)

![51WFeOUjsuL._SX352_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/4ea215de-abcf-335d-4c11-02ef3d785024.jpeg)

アルゴリズムを学んだことが無い方は、この本から読み始めると良いと思う。良書。

## [珠玉のプログラミング-本質を見抜いたアルゴリズムとデータ構造-](https://www.amazon.co.jp/珠玉のプログラミング-本質を見抜いたアルゴリズムとデータ構造-ジョン・ベントリー/dp/4621066072/ref=sr_1_1?__mk_ja_JP=カタカナ&crid=35J8UANFYF559&keywords=珠玉のプログラミング&qid=1582551198&s=books&sprefix=珠玉の%2Cstripbooks%2C253&sr=1-1)


![51uc1auqQoL._SX347_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/07258bb6-3df5-0e9b-b7c3-054d4ad78014.jpeg)


初心者の自分には読んでも身にならない本だと判断し、途中で読むのをやめた。ある程度アルゴリズムについて実践をこなした段階で読むと、目から鱗なんだと思う。初心者の自分には、まだ早かった感。

## [計算機プログラムの構造と解釈-第2版-](https://www.amazon.co.jp/計算機プログラムの構造と解釈-第2版-ハロルド-エイブルソン/dp/4798135984/ref=sr_1_1?__mk_ja_JP=カタカナ&crid=MVZ3P71ACLQS&keywords=計算機プログラムの構造と解釈&qid=1582552019&s=books&sprefix=計算機プログラムの%2Cstripbooks%2C288&sr=1-1)


![41Gc+EPIVPL._SX356_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/524a0848-54e3-0b14-fb3c-470404684bf2.jpeg)


良書だと思う。MITで使われてきたプログラミングの教科書だそう。自分は本を読んだことが無いので分からないが、原著SICPの翻訳版である「計算機プログラムの構造と解釈」の和訳が酷いらしく、見兼ねた方が「計算機プログラムの構造と解釈」の和訳の和訳をネットに挙げていたので、そちらを読んだ。とても読みやすく、「関数型プログラミング」や「代入」、「環境」など色々学べた。下に貼ってるのがリンク。

https://takeda25.hatenablog.jp/entry/20151030/1446174031
http://vocrf.net/docs_ja/jsicp.pdf

# Haskell

某プログラマに、自分がこれまで使ったことがある言語（Ruby,PHP）を伝えると、「関数型言語をやってないから、そっちやってみたらいいよ。」「色々なパラダイム知ると1つのパラダイムを俯瞰できるよ。」「Haskellのこの本（すごいHaskellたのしく学ぼう）オススメだよ。」的なことを言われたので、それを読んでみた。

ちなみに、Javascriptを用いて関数型言語の特徴について理解するなら以下の動画とか良かった。
[Learning Functional Programming with JavaScript](https://www.youtube.com/watch?v=e-5obm1G_FY)



## [すごいHaskellたのしく学ぼう](https://www.amazon.co.jp/すごいHaskellたのしく学ぼう-Miran-Lipovača/dp/4274068854/ref=sr_1_1?__mk_ja_JP=カタカナ&keywords=すごいhaskell&qid=1582551260&s=books&sr=1-1)

![51OngKln1ZL._SX350_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/af5dbbd5-b08c-7f36-2184-382513a7b9b9.jpeg)


非常に良書だった。再帰関数とか高階関数とか関数のカリー化とか関数型言語特有の概念を理解することができた（と思う）。ファンクターとかモナドとかも概念的には分かったよ程度なので、今後実践でも応用できるくらいに理解するまでは踏み込んでいきたい。

## [プログラミングHaskell](https://www.amazon.co.jp/プログラミングHaskell-Graham-Hutton/dp/4274067815/ref=sr_1_2?__mk_ja_JP=カタカナ&keywords=プログラミングhaskell&qid=1582551698&s=books&sr=1-2)

![41pybn9bpCL._SX346_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/4f556d49-71f9-e64a-aeda-245e102aa774.jpeg)


「すごいhaskell」には書かれていない内容もあったので良かった。遅延評価についても詳しく紹介されていたり。

> ポインターによる共有を用いた名前渡しは、「遅延評価」と呼ばれる。Haskellで使われているのは、この評価戦略であり、そのためHaskellは遅延プログラミング言語と呼ばれる。遅延評価は名前渡しに基づいているので、停止し得るなら評価を必ず停止できるという性質を持つ。また、ポインターによる共有を用いているので、簡約の回数が値渡しよりも多くなることはない。

# Go

正直、いろいろなプログラミング言語の触りだけを触っていくのは、良い勉強法では無いと思ったが、C言語系列（低レベルな言語）は経験がなかったので見ておきたかった。先に紹介した「Unixネットワークプログラミング」とかを読んでいても、C言語で書かれていたりしたので、ある程度知っておいた方が良いんだろうなとは思う。

ただC言語が古い感もあったので、どうせならということで、C言語の特徴を取り入れていて時流な言語であるGoを見ておくことにした。（ちなみにDockerも内部はGoで書かれていたりする。）

## [プログラミング言語Go](https://www.amazon.co.jp/プログラミング言語Go-ADDISON-WESLEY-PROFESSIONAL-COMPUTING-Donovan/dp/4621300253)

![41meaSLNFfL._SX382_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/82fdcbd2-58ab-7895-584b-4c784ed6fba4.jpeg)


某会社のCTO曰く「言語を学ぶ際には、その言語の呼吸を知ることが大事。」「C言語でいうとカーニハン」とかって話していたので、そのカーニハンとやらが共著者であるこの本を読むことにした。

実際、カプセル化の利点とかエラー処理の戦略とか、色々Go言語に留まらない知識を与えてくれる本だった。ただ、レベルは高めだったので、身につくまで読み返して行きたい本。

## [Go言語による並行処理](https://www.amazon.co.jp/Go言語による並行処理-Katherine-Cox-Buday/dp/4873118468/ref=pd_sbs_14_t_2/356-0505261-5408620?_encoding=UTF8&pd_rd_i=4873118468&pd_rd_r=4af99a8d-4e4e-4d22-81b8-5557848f2c4a&pd_rd_w=U5IPe&pd_rd_wg=rFiwn&pf_rd_p=ca22fd73-0f1e-4b39-9917-c84a20b3f3a8&pf_rd_r=A7EPBJDMQQAMGW6SXX1X&psc=1&refRID=A7EPBJDMQQAMGW6SXX1X)

![51pUKQajnaL._SX389_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/e15a9641-b02c-f34f-dbdc-5b64d140fe23.jpeg)

並行処理を使うタスクのGithub上のレビューで「悲観ロック」とかいう単語が書かれていて、分からなすぎて爆死。並行処理の知識をつけておきたいと思った。ので、Go言語を見たついでにこの本も読んでおいた。
全部は読んでいないが、メモリアクセス同期に関する知識やゴルーチンとチャネルに関する知識を深めることができた。

# 機械学習

Webエンジニアとはいえ、明らかにAI関連の話題を将来的に避けては通れないと思うので、今のうちに概観をざっと眺めておいた。

[MarI/O - Machine Learning for Video Games](https://www.youtube.com/watch?v=qv6UVOQ0F44)が面白くて、機械学習に興味を持ったというのもある。


## [Kaggleで勝つデータ分析の技術-](https://www.amazon.co.jp/Kaggleで勝つデータ分析の技術-門脇-大輔/dp/4297108437/ref=sr_1_1?__mk_ja_JP=カタカナ&crid=2Z6LAZGMJX2JE&keywords=kaggleで勝つデータ分析の技術&qid=1582551354&s=books&sprefix=kaggleで%2Cstripbooks%2C111&sr=1-1)

![41zp6hN7f+L._SX394_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/43067ac4-99cb-c065-a5a9-f6a2f8285fc7.jpeg)


機械学習に関して、ざっくりと全体像を知ることができる。良書。

## [機械学習スタートアップシリーズ-ベイズ推論による機械学習入門-](https://www.amazon.co.jp/機械学習スタートアップシリーズ-ベイズ推論による機械学習入門-KS情報科学専門書-須山-敦志/dp/4061538322/ref=sr_1_1?__mk_ja_JP=カタカナ&crid=24XUPGPK2RWKA&keywords=機械学習スタートアップシリーズ&qid=1582551331&s=books&sprefix=機械学習スター%2Cstripbooks%2C275&sr=1-1)

![5101MP2WobL._SX352_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/09e91e1e-b769-78d9-26ee-5e057465b5c8.jpeg)


なんとなく手を出してみたけど、難しい。途中で読むのをやめた。

## [ゼロから作るDeep-Learning-―Pythonで学ぶディープラーニングの理論と実装-](https://www.amazon.co.jp/ゼロから作るDeep-Learning-―Pythonで学ぶディープラーニングの理論と実装-斎藤-康毅/dp/4873117585/ref=pd_bxgy_img_2/356-0505261-5408620?_encoding=UTF8&pd_rd_i=4873117585&pd_rd_r=54902dbe-3d24-433e-b8b5-a76d7112269f&pd_rd_w=uuzHS&pd_rd_wg=jaSni&pf_rd_p=587b16be-0f5e-4017-ba4e-8771a0be2909&pf_rd_r=AQYF7GV85KM2BAQMWZ7V&psc=1&refRID=AQYF7GV85KM2BAQMWZ7V)

![51aFEr4SG4L._SX350_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/83920232-842c-594f-9efd-49e68fc17469.jpeg)


ニューラルネットワークについて知識を深めることができる良書。ただこの本を、帯に書かれている「入門書」と表現するのには違和感を感じる。

## [ゼロから作るDeep-Learning-―自然言語処理編-](https://www.amazon.co.jp/ゼロから作るDeep-Learning-―自然言語処理編-斎藤-康毅/dp/4873118360/ref=sr_1_1?__mk_ja_JP=カタカナ&keywords=自然言語処理へん&qid=1582551386&s=books&sr=1-1)

![512wqsxOrsL._SX350_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/d7930bbb-d369-4110-1a6e-2f097c12f20e.jpeg)


word2vecやembeddingレイヤ、RNN、seq2seq、Attentionなど、自然言語処理の触りが非常に分かりやすく体系的にまとまっていた。オススメ。

## [scikit-learnとTensorFlowによる実践機械学習-](https://www.amazon.co.jp/scikit-learnとTensorFlowによる実践機械学習-Aurélien-Géron/dp/4873118344/ref=pd_aw_sbs_14_13?_encoding=UTF8&pd_rd_i=4873118344&pd_rd_r=e24d5f41-f98e-482e-af81-720ab829da11&pd_rd_w=MJnTX&pd_rd_wg=rstlc&pf_rd_p=1893a417-ba87-4709-ab4f-0dece788c310&pf_rd_r=2NQGA1DZ6G1H55H9HZSQ&psc=1&refRID=2NQGA1DZ6G1H55H9HZSQ)


![517-1c7-gVL._SX389_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/0f169b9f-1c68-392e-6188-97c146ae92b4.jpeg)

和訳されてないけど第2版が出ているので、そちらを読むと良いと思う。良書。

## [Python-機械学習プログラミング-達人データサイエンティストによる理論と実践-](https://www.amazon.co.jp/Python-機械学習プログラミング-達人データサイエンティストによる理論と実践-impress-gear/dp/4295003379/ref=pd_aw_sbs_14_3/356-0505261-5408620?_encoding=UTF8&pd_rd_i=4295003379&pd_rd_r=e24d5f41-f98e-482e-af81-720ab829da11&pd_rd_w=MJnTX&pd_rd_wg=rstlc&pf_rd_p=1893a417-ba87-4709-ab4f-0dece788c310&pf_rd_r=2NQGA1DZ6G1H55H9HZSQ&psc=1&refRID=2NQGA1DZ6G1H55H9HZSQ)

![61qCGR2QqGL._SX390_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/3ba7770d-205c-c35b-b6e5-75c8e1ed080c.jpeg)


非常に読みやすい。良書。「[scikit-learnとTensorFlowによる実践機械学習-](https://www.amazon.co.jp/scikit-learnとTensorFlowによる実践機械学習-Aurélien-Géron/dp/4873118344/ref=pd_aw_sbs_14_13?_encoding=UTF8&pd_rd_i=4873118344&pd_rd_r=e24d5f41-f98e-482e-af81-720ab829da11&pd_rd_w=MJnTX&pd_rd_wg=rstlc&pf_rd_p=1893a417-ba87-4709-ab4f-0dece788c310&pf_rd_r=2NQGA1DZ6G1H55H9HZSQ&psc=1&refRID=2NQGA1DZ6G1H55H9HZSQ)」とこの本の両方を読む必要はないように思う。

## [強化学習](https://www.amazon.co.jp/強化学習-Richard-S-Sutton/dp/4627826613/ref=sr_1_6?__mk_ja_JP=カタカナ&keywords=強化学習&qid=1582551531&s=books&sr=1-6)

![51PNPA99TZL._SX327_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/589d8041-d6a4-6160-c6a8-c992f6b68472.jpeg)


強化学習の原典的な感じで紹介されていたので英語版で読んでみたけど、挫折。
良書だとは思うし、自分が読んだのが英語版だったので日本語版については知らないけど、機械学習に入門したいなら次に紹介する「[機械学習スタートアップシリーズ-Pythonで学ぶ強化学習-](https://www.amazon.co.jp/機械学習スタートアップシリーズ-Pythonで学ぶ強化学習-改訂第2版-入門から実践まで-久保/dp/4065172519/ref=sr_1_4?__mk_ja_JP=カタカナ&keywords=強化学習&qid=1582551531&s=books&sr=1-4)」の方が読みやすいと思う。

## [機械学習スタートアップシリーズ-Pythonで学ぶ強化学習-](https://www.amazon.co.jp/機械学習スタートアップシリーズ-Pythonで学ぶ強化学習-改訂第2版-入門から実践まで-久保/dp/4065172519/ref=sr_1_4?__mk_ja_JP=カタカナ&keywords=強化学習&qid=1582551531&s=books&sr=1-4)

![5124MXduAyL._SX350_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/d0dc6152-965d-69d2-ea50-5c9903691124.jpeg)


めちゃくちゃ分かりやすかった。強化学習を学びたい方の最初の１冊としてオススメ。

## [はじめてのパターン認識](https://www.amazon.co.jp/はじめてのパターン認識-平井-有三/dp/4627849710/ref=sr_1_1?__mk_ja_JP=カタカナ&crid=36SQER30AASRF&keywords=初めてのパターン認識&qid=1582551602&s=books&sprefix=初めてのパターン%2Cstripbooks%2C461&sr=1-1)

![51M+waQwldL._SX353_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/57575cd1-bd65-173c-fe36-cb3f330f5cf6.jpeg)


機械学習に関して数学の面から知識を深める本。（ネット曰く入門書。）劇的に難しかった。ネットに落ちている解説記事を参考になんとか通し読みできたが、ほぼ文系卒の自分には難しすぎた。

# その他

## [体系的に学ぶ 安全なWebアプリケーションの作り方](https://www.amazon.co.jp/dp/B00E5TJ120/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)

![51FDUj5aGRL.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/f2afd880-afdf-6abf-c31c-85012c0ef39f.jpeg)

非常に読みやすい。良書。

## [暗号技術入門](https://www.amazon.co.jp/暗号技術入門-第3版-結城-浩/dp/4797382228/ref=sr_1_1?__mk_ja_JP=カタカナ&keywords=暗号技術入門&qid=1582551762&s=books&sr=1-1)

![51V6l3panVL._SX350_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/a969e03a-27c8-1c1d-a9b5-de96f2de2927.jpeg)


セキュリティ関連でネットを調べていると、この本がよくオススメされていたので読んだ。暗号技術について１通り学ぶことができたと思う。図解が多く非常に分かりやすい。スラスラ読める良書。

## [はじめて学ぶソフトウェアのテスト技法](https://www.amazon.co.jp/はじめて学ぶソフトウェアのテスト技法-リー-コープランド-ebook/dp/B00HE8082Q/ref=sr_1_6?__mk_ja_JP=カタカナ&keywords=ソフトウェアテスト&qid=1582551833&s=books&sr=1-6)

![51Y38qQBfSL.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/ef69082b-0e6b-b828-464d-eed9f77e5ae3.jpeg)


Githubのレビューで「ぶらっくぼっくす」とか「ほわいとぼっくす」とか話しが出ていて、分からなすぎて脳死。よくよく考えたらテストについて体系的に学習したことがないことに気づいたので、とりあえず本書を読んでみることにした。

簡潔に書かれていて読みやすいが、デシジョンデーブルとか状態遷移テストとか、何やら実際にコードに落とし込むものではなくテスト設計に重きを置いている本だったので、自分が求めていた本ではなかった感。

良書なんだとは思う。

## [リーダブルコード-―より良いコードを書くためのシンプルで実践的なテクニック](https://www.amazon.co.jp/リーダブルコード-―より良いコードを書くためのシンプルで実践的なテクニック-Theory-practice-Boswell/dp/4873115655/ref=sr_1_1?__mk_ja_JP=カタカナ&keywords=リーダブルコード&qid=1582552084&s=books&sr=1-1)

![51MgH8Jmr3L._SX352_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496251/285610e6-93a3-f631-7bdf-d9b5197e7ad3.jpeg)

あらゆる先輩方に読んどけと勧められたように思う。言わずもがな良書。何回も定期的に読み返さないと身につかない感。

# 最後に

まだ読んでみたい本が沢山あるので、ここまでの本を今後コーディング実践を通して消化しつつ新しいものにも手をだしていきたい。