TIL blog

Data Mining(Machine Learning) Engineer 3年目 技術ネタ, その他学んだことのアウトプット用

新卒(ML)エンジニアにオススメの書籍・Web サイト等

 新卒だった頃の自分に薦めたい本の一覧とそれらに対してのコメントを書いていきます。 自分が新卒だったのは2年前なので最近だともっと良い本があるかもしれません。
 まとめていった結果MLに限らず一般的な新卒webエンジニアに薦めたい本になりました。

 ちなみに 自分がここ数年で読んだ本一覧はこちらにまとめています。https://booklog.jp/users/schumi543

想定読者

自分と同様, 大学の研究で簡単な数値計算機械学習のコードは書いたことがあるが, 大きめのソフトウェアを書いたことがない新卒MLエンジニア。

ソフトウェア基礎

Linux, shell

 IDE (Matlab, Rstudio, Pycharm)) などに慣れていてまともに Linux触ったことなかったので最初厳しかった気がします。 以下の2冊は自分で実際にCやgo で低レイヤのAPI触りながら仕組みが理解できるのでオススメです。

[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識

[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識

Goならわかるシステムプログラミング

Goならわかるシステムプログラミング

 スクリプトを書くのはad-hocになりがちですが, 別のコマンド, APIを知っていると より効率的に書ける ということは割とよくあります(shell以外も)。 一度リファレンスをざっと通読しておくとよいかなと思います。

git

 学生の時はバージョン管理システムをまともに使ってなかったので, 慣れるのに苦労しました。。。 概念に慣れるまでが一番厳しかったのですがとっつきやすかったのは以下の本でした。 マンガだと逆に抵抗感ある方もいるかも知れませんが, 内容と説明両方の面から今見ても十分オススメできる本です

わかばちゃんと学ぶ Git使い方入門

わかばちゃんと学ぶ Git使い方入門

正規表現

 コードやログを読むときに普通に検索するより正規表現の知識があると効率がとても良くなります。

正規表現辞典 改訂新版 (DESKTOP REFERENCE)

正規表現辞典 改訂新版 (DESKTOP REFERENCE)

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

 情報系あるいはそれに近い分野が専門だった場合, 大学で理屈は学んでいるかと思いますが, 実際にコードに落とすには慣れが必要なので オンラインジャッジ系の競技プログラミングの問題を解いてみるのはオススメです。
 今だと AtCoderがとっつきやすくて良いかなと思います。

以下の入門記事から初めてステップアップしていくのが良さそうです。

qiita.com

集団開発の基礎

 テスト, コードの書き方, 開発手法というトピックで何冊か選びました。
 個人的にはここが会社で開発するうえで一番知識のギャップがあったなと感じます。 実際に仕事やってレビューしてもらう過程で知識は身についていくかと思いますが, 並行してこの辺りの書籍で勉強しておくとよさそうです。

テスト

テスト駆動開発

テスト駆動開発

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

コードの書き方

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)

新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)

開発手法

 見積もりとコミュニケーションのための本です。
 手を動かす側の職だったとしても, プロジェクト or プロダクトマネージャがどう考えているか知ることは有用だと思います。

アジャイルサムライ−達人開発者への道−

アジャイルサムライ−達人開発者への道−

設計

 小規模なコードだといきなり書き始めてもなんとかなりますが, ある程度以上のコードは設計せずに書き出すと論理の不整合などで厳しくなってきます。 運良く完成できたとしても, 保守性が厳しいコードになりがちなので設計は少し勉強しておいたほうが良いでしょう。
 設計の経験がない場合 コード書き始める前に設計や方針を先輩方にレビューしてもらうと良いと思います。

UMLモデリングの本質 第2版

UMLモデリングの本質 第2版

 また、オブジェクト指向のSOLID原則の解説について学ぶには, 最近技術書典で出されていた以下の本がオススメです。 (自分が今まで見た中で一番わかり易いと感じました)

booth.pm

web開発基礎

 開発するソフトの全体像掴むためにもwebの基礎技術については勉強しておいたほうが良いかと思います。

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

ドメイン知識

 自分の場合はアドテクなので以下をオススメします。web業界は特に変遷激しいので各々の会社の先輩に聞くのが良いかと思います。

アドテクノロジーの教科書 デジタルマーケティング実践指南

アドテクノロジーの教科書 デジタルマーケティング実践指南

 上記はどちらかと言うとビジネス職の人向けの話が多いので, 個人的にはこちらのほうがわかりやすかったです。 booth.pm

SQL

 データベースの利用者としてみるか, 設計者としてみるかでオススメの本変わってきますが, 利用者の場合以下2冊がおすすめです。

ビッグデータ分析・活用のためのSQLレシピ

ビッグデータ分析・活用のためのSQLレシピ

エンジニアとしての心構え的なもの

 エンジニアの哲学, 仕事の作法や向き合い方, キャリアなどの話題に触れているもので今も度々読み返している書籍たちです。

SOFT SKILLS ソフトウェア開発者の人生マニュアル

SOFT SKILLS ソフトウェア開発者の人生マニュアル

ベタープログラマ ―優れたプログラマになるための38の考え方とテクニック

ベタープログラマ ―優れたプログラマになるための38の考え方とテクニック

xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com