はじめに
こんにちは!今年4月にLITALICOに新卒入社した@mihotoyamaと申します。
LITALICO Engineers Advent Calendar 2021を盛り上げたい気持ちから、
勢い余って1日目に記事を書かせていただくことになりました。
今回は、エンジニア人生を踏み出したばかりの私がこの1年間に読んだ(+積ん読した)技術書を紹介したいと思います✨
前提
私のバックグラウンド
医学系大学院で6年ほど研究していました。
RやPythonによるライブラリを利用したデータ解析や、シェルスクリプトでの作業の自動化はよく行っていましたが、
チームでプロダクト/サービスを開発するという経験はありませんでした。
そのため『自力で調べてなんとかする』のは慣れていても、
プログラミングの基本やセオリー、開発の工程、また情報工学についての知識がほとんどなかったため、
そのあたりは本を読んで積極的にインプットしていこうと考えていました。
選書
この一年間で読んだ技術書15冊をかんたんに紹介します。(うち何冊かは研修の課題図書でした)
それぞれの期間で以下の目的のために本を読んでいました。
- 研修期間
- Ruby (+ Rails)でWebアプリケーションを作成できるようになる
- チーム開発に耐えうるコーディングをできるようになる
- 配属後
- 要求定義や設計の段階から貢献できるようになる
- 幅広い知識を身につける
本紹介
プログラミング(Ruby)
プロを目指す人のためのRuby入門
この一冊でRubyのことを基礎からしっかり学ぶことができます!
想定読者は別のプログラミング言語経験のある人や、Rubyをある程度独学した人向けとなっています。
実際、私は他の言語でなら一通りコーディングはできるという状態でこの本を読んだからか、難易度はちょうどいいと感じました。
説明もはっきりとしていて、初めてRubyを勉強するのにとても良い本だったと思っています。
これとRuby公式のドキュメントを読み込めば、正確な理解を積み重ねていけそうです!
Git/Github
Github実践入門 ~Pull Requestによる開発の変革
Gitでよく使うコマンドと、Githubを用いた開発の進め方がわかりやすく書かれています。
『Github実践入門』という名前の通り、Git自体を深く知るというよりは、Githubの機能を使いこなすのに役立つ本です。(Git自体についてしっかり理解したいときはPro Gitを読むのが良いかな〜と思います)
実際によく用いられているGithubの開発フローが多く紹介されているので、チーム開発未経験の私にとってチーム開発の流れをイメージするのにも役立ちました。
テスト
知識ゼロから学ぶソフトウェアテスト[改訂版]
名前の通り、『ソフトウェアテストって何?』という状態の人でもわかりやすい本です。
平易な文章で、テストの意義から代表的な手法、テストの実運用まで説明されており、テストを学ぶ最初の一冊にとても良いと思います。筆者の意見もしっかり書かれているので参考になります。
一方で、もう少し深く理解しようとすると、厳密な用語の定義や説明のある書籍があると良いと思いました。
(おすすめの書籍がある方、ぜひ教えてください!)
データベース
達人に学ぶDB設計徹底指南書
評判の良いデータベース設計の本。とても良い本です。大好きです!
最初はかなりとっつきづらいと感じましたが、パートごとに着実に読み進めていくと、説明の正確さと充実っぷりに感動しました。
なんとなくではなく、ちゃんとデータベースのことを理解できている...ような気がします。
今でもことあるごとに読み返しています。大好きです!
インターネット/Web
Real World HTTP 第2版 ―歴史とコードに学ぶインターネットとウェブ技術
こちらもとても評判の良いインターネット/ウェブ技術の本です。
情報量が非常に多い上説明が明確なので、わからないことがあったときに辞書のように使っています。
(逆に言うと、一冊丸々熟読はできていません...)
分厚い本ですが、持っていると安心できる一冊です❤️
Webを支える技術 -HTTP、URI、HTML、そしてREST
Real World HTTPがけっこう重たかったので、Webの全貌を一通り把握するためにこの本を買いました。
こちらもしっかり情報量はありますが、前述の本より多少読みやすいです。
個人的には、最後の方のWebサービスの設計のパートがかなり実用的に感じました。
オブジェクト指向
オブジェクト指向でなぜつくるのか(第2版)
研修中『オブジェクト指向でなぜつくるのか』よくわからなかったところ、Kindle Unlimitedにこの本があったので読みました。
『たい焼き』の例えなど、オブジェクト指向の説明ではいろいろなたとえ話が使われていますが、どうにもわかったようなわからないような微妙な感じで何年も経ってしまっていました。
この本ではオブジェクト指向の利点はもちろん、どうしてオブジェクト指向プログラミングが生まれたのかということから、メモリの使われ方まで説明されており、
オブジェクト指向という概念をプログラミングの世界の文脈で理解するための説明がわかりやすくしっかりと書かれています。
これすごいな〜と思いました。最新版の第3版買おうかな🤔
オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方
オブジェクト指向の良さはわかったけど、じゃあどうやって活かせばいいんだろう...と思ったので買いました。
コード例を用いながら、段階を踏んでオブジェクト指向設計にもとづいたコーディングができるように書かれています。
ちょっと日本語訳が不自然な箇所が気になりつつも、コードがあるとぱっと頭に入ってくるのがいいですね。
コーディングの作法
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック
名著ですね。
実は学生時代に『きれいなコードを書きたい...』と思って一度読んだことがあります。
当時は『へー』という感じでしたが、今読んでみるとけっこう切実な内容だったんだなと思います。
とても読みやすいですが、自分がしっかり実践できている自信はまだないので、これからも繰り返し読んで身に染み込ませていきたいです。
良いコードを書く技術 ── 読みやすく保守しやすいプログラミング作法
いいコードの書き方が本当にわからなかったので買いました。
リーダブルコードは読み物としておもしろくまとまっていますが、こちらは実際に良いコードを書くステップが充実している印象です。私がコード書きながら読むのはこっちです。
パートごとに普通/中級/達人の3人のプログラマーがコメントしているのも『あるある』感があってかわいいです。
インフラ
インフラエンジニアの教科書
いままで(Web)アプリケーションしか開発を試みたことがないので、最低限インフラ周りのことも知りたいと思い買いました。
基本的な用語について押さえることができます。
この本は説明もわかりやすくさらっと読めてしまうのですが、どう考えてもインフラってとっても難しいものだと思うので、これを導入にして少しずつ勉強していきたいです...。
TCP
TCP技術入門 ――進化を続ける基本プロトコル
モチベーションとしては↑のインフラエンジニアの教科書と似た感じです。
2章まではなんとかいけましたが、3章以降はものすごく難しく、ほぼ理解できていません...ここまで来ると数理的に理解しないと本質的に理解できないので仕方ないですね。
数年以内に理解するぞ!という決意表明をしておきます。
プロダクト開発
ソフトウェア要求 第3版
大好きな本です!!
要求(要件)定義の流れや具体的な手法がみっちり700ページ近く書いてあります。
要求を定義するために必要な各ステップにおける心得やドキュメントの書き方を網羅しているので、配属されてから何回も読み返しています。
紙の書籍は中古でけっこう高値がついていたのですが、勇気を出して買ってよかったです...。えっ今見たら40,000円近いんだけどなにこれは
プロダクトマネジメントのすべて
『すべて』と言うので買ってみました。プロダクト開発の技術書ということでこの記事に含めています。
読みやすい!でも内容は充実しているし網羅されている!(と思いました)
配属されてから要求〜仕様検討の段階の議論に参加することが多いのですが、
この本を読んでからは『自社が提供すべき価値か』などの観点でもプロダクトのあり方を考えられるようになりました。
この本の知識を土台にして、プロダクトの生み出し方・育て方をしっかり学んでいきたいです。
ドメイン駆動設計
ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本
ドメイン駆動設計の入門書ということで、同じグループのエンジニアの先輩に教えていただきました。
ドメイン駆動設計をすることで何がどうなるのか、具体的にどのようにドメイン駆動設計を実践できるのか、というところを(比較的)やさしく説明しています。
すでにドメイン駆動設計にもとづいたコード群をある程度見ていたこともありますが、この本の内容はイメージが湧き、理解しやすく感じました。
自分で実践しようとすると、もうちょっと深く知らないと難しいかもしれません。この本の次は、積ん読している実践ドメイン駆動設計を読み進めたいと思います。
おわりに
今年入社した新卒エンジニアが今年一年に読んだ技術書を紹介しました。
先人の知恵が詰まった本を読むのは本当に楽しいし、一気にたくさんの知識を得ることができるしで、本当にすばらしい体験です。
一方で、この一年で私が成長できた部分については、周りの方々の支えの上でたくさんの経験を積ませていただいたことが大きいと感じています。
いつも本当にありがとうございます!
これからもっとインプットして、もっともっとアウトプットできるようになっていきたいと思います✨
明日はステキな同期の @shinekobe が担当でーす👋