📚

まだ翻訳されてないけど読みたい、技術書3選

2024/06/19に公開

ムーザルちゃんねるのムーです。今回は、おすすめの洋書の技術書について zaru さんと話しました。

  • 技術書として抜群に面白いし
  • 英語の勉強にも適している(と思う)

おすすめの3冊をセレクトしていますので、この記事でも一部ですが簡単に紹介したいと思います。

https://www.youtube.com/watch?v=UUWIQxXT9Wo

ちなみに、zaru さんも僕も英語をマスターしたくて、勉強中です。洋書技術書は、英語も技術も同時に学べるので最高の教材ですね。英語をできるようになりたいプログラマにとっては本当におすすめの書籍なので、興味のある方はぜひ!(英語に興味がなくても、良い本なので... そうでない方もぜひ!)

1. Tidy First ?

まず、薄いです。一章が1ページくらいだったりします。99ページです。ですので、英語が得意ではない人にとっては、最高です。

tidy は片付けるという意味です。この本は要はコードの整理整頓術が書かれたようなものです。

gateway of refactoring と書いてあるように、リファクタリングの手前の整理整頓です。プログラマならみんな大好きな整理整頓ですが、そのテクニックや、管理方法、理論がまとまっています。

面白い話しはたくさんあるのですが、その中でひとつ紹介すると、変更には

  • befavior change
  • structure change

の2パターンがあり、これらを一つの PR に混ぜるのはおすすめしないという話。PR や commit の粒度、レビューの工数についてはチーム開発で悩ましいテーマかと思いますが、それに関して参考となる考察が書かれています。

「PR が大きければ、Review に時間がかかり、より PR は大きくなる。小さければ Review は早く、小さくするモチベーションになる。」 という話しもあります。僕個人は、PR はできるだけ小さく merge までの時間が短いのが好きなので、とても共感する内容でした。

個人的なパンチランは以下の文章です。

Once you get comfortable with tidyng, with working in small steps, with working with absolute safety, I encourage you to experiment with not requireing reviews for tidyng PRs.

「...なら、レビューを必須にしないことを試してみなよ。」 と言っています。

僕はこの本を読んで

  • ほぼレビューしないでマージを試したり

また

  • PR の分割ルールとして、ささいな変更とそうでない変更(behavior change)は、より強く分けることを好むようになりました。

チーム開発をよりスムースにしてくれる本ですので、チームで輪読も良いかもしれませんね!

2. A Philosophy of Software Design

これは僕が2024年上半期で読んだ技術書で一番面白かった本です。

ソフトウェアデザインの本はたくさんありますが、この本は 2018年出版で、この領域では比較的あたらしい本です。個人的にはソフトウェアデザインについては新しい本の方が好みです。そして Amazon のレビューの評価がすごく高いです。今見たら Computer Programmingの売れ筋ランキングの 1位がこの本で、2位が上で紹介した『Tidy First?』 でした。

ソフトウェアデザインの考え方は時代とともに変化していると思います。そういう意味で、この本は「これまではこう思われていたけど、そんなことはない」というような主張もはっきりとしていて、楽しさがあります。

たとえば、

  • 良いコードはコメントをする必要がない
  • 関数は小さい方が良い

など、聞いたことのあるような話しがあると思いますが、そうではないよと主張しています。Robert C. Martin の書いた Clean Code の以下の記述を引用して、別の視点を展開したりします。

The first rule of functions is that they should be small.

上の考えは僕も漠然と関数は長くない方が良いと思っていたので、それに対して別の視点を得ることができて学びになりました。

本書の中で、

  • Deep modules と shallwow modules

という考え方が紹介されています。これまで、こんな言葉を聞いたこともなかったのですが、設計の考え方としてとても勉強になりました。この本を読んでから、僕の設計方針はかなり影響を受けて変化しました。ソフトウェアデザインに興味のある方はぜひ!

3. Fluent React

もしも、React を使っているのであれば、絶対楽しいと思います。

この本を読まなくても、React を使うことはできます。ただ、普段使っている React の仕組みを知りたい、より React と仲良くなりたいという気持ちがある人にとっては最高の本です。

Reconciliation, hydration など、React を使っていても普段は意識しないような概念があると思いますが(ときどき Error で目にしたりしますよね)、これらについて丁寧に解説されています。「仮想DOM」という言葉を聞いたことがあるけど、なんなのかわからないという人も多いと思います。正直にいうと僕は、この本を読むまで、仮想DOM も hydration もよくわかりませんでしたし、Reconciliation なんて言葉すら聞いたことがありませんでした。

React が、よくわからないけど使えているツールから、仕組みを理解した上で使えるツールになると思います。

気になること

実は、今回動画をとるにあたって、Reconciliation について確認しておこうと思って公式ドキュメントを漁ったのですが、legacy にはあるけど、最新からは無くなっていました。

そして、あたらしいドキュメントへの飛び先は「Preserving and Resetting State」となっていて、Reconciliation については全く触れられていませんでした。

これは、どういう意図なのか、気になっております...。

ちなみに、話は逸れますが、上の「Preserving and Resetting State」のドキュメントは、最高に面白い内容ですので、未読の人は一読の価値があります。

おわりに

zaru さんも僕も、英語をマスターしたいと思って日々勉強中です。他にも、おもしろい英語技術書あれば、ぜひ教えてください!

ムーザルちゃんねる

Discussion