2024年 読んで良かった技術書5選+α
2024年も残すところわずかになったので、今年読んで印象に残った技術書+αを挙げていきます。
ここに載せなかった書籍も含めて、2024年も良書に出会うことができました。書籍を生んでくれた筆者や関係者の皆様に感謝です🙏🙏🙏。今年は、技術書を軸に勉強する期間が短かったため、骨太な技術書よりも読み物的なものが多くなってしまったのがちょっと残念です。
主観バリバリの感想文なので、その点はご了承ください🙏
技術書
1.単体テストの考え方/使い方
- 単体テストとは何か?
- 単体テストの目的は何か?
- 良い単体テストを作成するには?
など、開発者が知っておきたい単体テストに関する話題を網羅した1冊です。
「普段テストは書いてはいるけど、ほんとにこれでいいのかな...」とテストの質に悩む方には必読の1冊だと思います。
ボリュームのある内容ですが、4章まで理解して実践するだけでも、これから作る単体テストの質が格段に向上するはずです。
個人的に一番参考にさせてもらっているのは、システムの扱う領域に詳しい非開発者でも理解できるテストケース名をつけるという考え方です。これに沿ってテストを作成すると、特定の実装に依存して壊れやすいテストになるのを回避できるだけでなく、テスト自体がシステムの仕様を明確にするドキュメントのような役割を果たすようになります。
実際、これを実践することで、テストの可読性や堅牢性が向上したのを実感しています。
2.Googleのソフトウェアエンジニアリング
単体テストの考え方/使い方を読んでいる際に、本書の「12章 ユニットテスト」を並行して読みました。この2冊には共通の見解が多く、一緒に読むことで単体テストに関する理解が深まったと思います。単体テストの考え方/使い方よりも、本書の方が分かりやすいと感じる部分も多くありました。
また、本書の「9章 コードレビュー」も印象に残っています。コードレビューについて、具体的なやり方からマインド面に至るまで網羅しており、自チームや自分自身のレビューを振り返る良いきっかけになりました。
ユニットテストやコードレビューに限らず、幅広いジャンルのGoogleのベストプラクティスが書かれています。Googleの開発現場で培われた知見に興味がある方はぜひ。
3.Microsoft Azure アプリ開発入門ガイド
マイクロソフトの公式のドキュメントや「Microsoft Learn」を利用して、.NETやAzureの学習を進めることもできます。本書はそれら膨大な資料から、アプリ開発者にとって特に重要なポイントを抽出し、学習しやすい順に整理していますので、迷子にならずに、効率よく学習を進められます。
まさに書籍概要に書いてある通りの1冊です。
.NET
やAzure
の環境に飛び込んで数年が経ちましたが、いまだにMicrosoft
の公式ドキュメントがちょっと苦手です。本書を読むまでは、手元で少しAzure
の実験をしたいだけなのに「どこから手を付けたものか...」と悩んでいる時間が多かったです。
本書を読んで以降、Azure Functions
,Azure Storage
, App Service
,Container instance(ACI)
などのリソースを手元でサクッと試すことに躊躇がなくなったのは間違いないです。
また、.NET
,C#
での開発の基本にも触れられており、「.NET / C#
を始めたときにこれを読みたかったなー」と感じました。
個人的には、以下のような方に特にオススメできます。
-
Azure
や.NET
迷子の方 -
AZ-900
やAZ-104
は取ってみたけど「Azure
なんも分からん...」な開発者 - もっと
Azure
で遊んでみたいけど、どこから触っていけば...と思っている方
4.良いコード / 悪いコードで学ぶ設計入門
変更容易性を高め、ソフトウェアの成長性を向上させることを目的に書かれた1冊です。
本書を読んで設計や実装上の問題(本書では「悪魔」と表現されている)に対する嗅覚が向上したのを感じています。これまでなんとなく「読みづらい」「改善したい」と感じていた問題を、明確な言葉で説明できるようにもなりました。アンチパターンを知るのは本当に大事ですね。
開発チーム全体で本書を共通言語にできると、設計についての議論が捗りそうです。読書会に取り上げる書籍としても良いのかな?と思いました。
本書の批評記事である良いコード/悪いコードで学ぶ設計入門の感想と注意点も参考になります。
5.改訂新版 プロになるためのWeb技術入門
10数年ぶりに大改訂された本書。旧版には大変お世話になりました。
開発者を目指していた頃、色んな本に手を出しては挫折していました。自分が初めて「理解できるかも...!?」と思えたのが旧版プロになるためのWeb技術入門でした。
- 今からWeb系システムの開発者を目指す人
- 駆け出しWebシステム開発者
の方々には全力にオススメできる1冊です。
旧版はお金がなくて中古で買ったので、そのお礼も兼ねての購入でした。ですが、内容も充実していて、初心者に限らず役立つ内容だと思います。
技術関連書籍(読み物)
1.世界一流エンジニアの思考法
今年、本書の読書会に参加しました。他の人の感想を聞いて感じたのは「人によって響くポイントが全然違うんだな」ということです。ソフトウェア開発に携わる方であれば、何かしら参考になる点が見つかると思うので、ぜひ一読をオススメしたいです。
個人的に響いたのは2点です。
1つは優秀な人でも理解するのには時間掛けている。理解することにたっぷり時間を掛けて大丈夫だと気付けたこと。私は30代になってからソフトウェア開発の仕事に就いたこともあり、周りに比べて相対的に知識やスキルが遅れているという意識があります。そして、その遅れを取り戻したいという焦りが常にあります。そのため、理解するのに時間が掛かったり、全然分からないことに直面すると、全然前に進めてない感覚に陥り、とても不安になってしまいます。本書を読んで、その不安が和らぎました。「腹決めて理解するのにじゃぶじゃぶ時間を使おう!」と吹っ切れることができた感じです。これが1番の収穫でした。
もう1つは、アウトプットの話です。著者の師匠が良いプログラマになるコツとして以下の2つを挙げているそうです。
・新しいことを学んだらブログに書く
・ブログを書くとき、サンプルコードそのままではなく、少し変えて試してみる
これは今年自分がやってきたことで、確かに手応えがありました。進んでる方向が間違ってないと言ってもらえた気がして、少し自信になりました(もうちょっとたくさん記事を書きたいですが😅)
2.情熱プログラマー
アウトプット熱が落ちてきた時に
「ブログを始めろ!ブログを書け!」
と書いてあるページを読み直したりしています。
3.プログラマが知るべき97のこと
本書の内容はすべて公開されており、Webで読むことができます。ただ、何度も読んでいるお気に入りのエッセイがいくつもあったので、書籍も購入しました。
個人的には、90.コードを見る人のためにテストを書くの考え方が好きです。良いテストはドキュメントとしての役割も果たす。その通りだし、そういうテストを書こうと思いました。
また、33.オープンソースプロジェクトで夢を実現すると101.プログラマが持つべき3つのスキルでは、OSSコントリビューションを勧めています。これを読んでOSSコントリビュートへのモチベーションが爆上がりしました。つい最近読んだので、まだプルリクエストは出せていませんが、OSSのコードリーディングをしたり、環境準備などを始めるきっかけにはなりました。
さらに、67.コードを読むでは、他人(過去の自分を含む)のコードを読むことがいかに学びになるかが語られています。なかなかOSSにプルリクエストを出せなくても、「コードリーディングだけでもめちゃくちゃ効果あるよなー!」と自分を励ますのに使ってます😅
4.はじめてのOSSフィードバックガイド
プログラマが知るべき97のことを読んで、「OSSやってみたい」という気持ちになったので購入しました。
「OSSコントリビュータになるための道筋」に焦点を当てた書籍は非常に珍しく、OSSコントリビュートに興味がある方には大変参考になる1冊かと思います。
番外編
ここからの2冊は全く技術関連書籍ではありません。
ですが、生活全体の質を上げてくれて、結果として開発者人生にとってもプラスなった書籍です。
1.スマホ断ち
"スマホ依存"の恐ろしさとそこからどうやって脱却するかについて書かれた本です。
スマホから得られる情報を無抵抗に受け入れることの恐ろしさを改めて感じました。本書を参考にスマホとの付き合い方を見直したところ、だいぶ頭がスッキリした感覚があります。自分は"ながらyoutube"が習慣になっていたのですが、それが相当頭を疲れさせていたんだろうと思います。おそらく、自分は軽度のスマホ依存と言って差し支えない状態だった気がします。ダラダラとyoutubeを見た後のなんとも言えない虚しさを感じない人生は快適です。
とはいえ、油断するとyoutubeの海に溺れそうになることもあるので、引き続き気を付けて行かねば...と感じています。
無駄にスマホを触る時間が減って学習時間が増えたことは、開発者人生にも大きなプラスとなりました。
スマホ依存解消に役立つツールとして、StayFreeとminimalist phoneというアプリがあります。これらを使って、youtubeを1日30分に制限したり、アイコンを非表示にしてスマホの魔力を軽減したりしています。
スマホに時間吸われてる自覚のある人には、StayFreeとminimalist phoneもオススメです。
2.先送り0(ゼロ)
未来でも、過去でもなく、現在にフォーカスし、目の前のことに安心して全集中する。
そのための習慣形成やメソッドについて書かれています。
結論から言うと、本書のおかげで、時間に追われる感覚が和らぎました。結果として、目の前のことに集中する時間が増えた気がしています。
様々な時間術系の書籍を読んできましたが、どれも基本的な考え方はだいたい同じです。「時間は大変貴重なリソースである。命そのものと言っていいでしょう。この貴重な時間を有意義に過ごすことが充実した人生に繋がるのです...」的なやつです。自分も大変影響を受けてきた考え方です。
が、この考え方には落とし穴があると思っています。時間を"超貴重なリソース"と捉えると、めちゃくちゃ不安になってしまうのです。お金とは違い、時間は使わないことで節約できるような代物ではありません。時間が"超貴重なリソース"であるという価値観を持つと、大事なものが刻一刻と減っていくという大変辛い状態に陥ります。
私は、この価値観を信じて疑わなかったので、
「もう30歳なのに、◯◯◯すらもできていない...」
「まだ◯◯◯すらできていないのに、30代後半になってしまった」
など、時間が減っていくことに恐れ慄いていました。
が、本書は、時間はあると主張します。そして、いま現在に集中するためのメソッドを紹介しています。様々な時間管理の書籍を読んできましたが、かなり異色な存在だと思います。
いつも時間に追われているような不安感がある方にはぜひオススメしたい1冊です。
これも全然技術書ではありませんが、生活全体の質が上がり、開発者人生にもたくさんのプラスがあったのでご紹介しました。
最後に
単体テストの考え方/使い方やGoogleのソフトウェアエンジニアリングは、目に見えて自分のテストコードやコードレビューの質を向上させてくれたと感じています。良書と呼ばれる技術書は、逃さず読み、どんどん実践していきたいものだなと再認識しました。
とはいえ、当たり前なのですが、書籍に書いてあることが全てが正しいわけではありません。特にソフトウェア開発においては、ある知識が絶対的に正しいなどということはなく、最終的にはケースバイケースで判断していく必要があると思います。書籍に書いてあることを盲目的に適用したりせず、「本当にこのケースでもそう言えるのか?」という視点を忘れないようにしたいものです。
ついつい書籍の権威に負けて、読んだことを全部試したくなっちゃう人間なので自戒をこめて。
来年はもっと読みたいです📕📗
Discussion