生産性向上ブログ

継続的な生産性向上を目指すエンジニアのためのブログ

2020 年読んで良かった本 6 選

今年もそろそろ終わりなので、2020 年に読んでよかった本をまとめておきます。

www.kaizenprogrammer.com

↑去年のまとめです。

目次

OAuth 徹底入門

OAuth 2.0 とその周辺知識について解説した本です。"OAuth2 in Action" の翻訳本です。筆者は、OAuth の RFC に関わっている人なので、安心して読めます。

内容としては、OAuth 2.0 について体系的に書かれています。仕様だけでなく、なぜそうなっているのか、どういう場合にセキュリティリスクが起こるのかといったことも書かれており、思想を理解するという面では最高の本です。OAuth 2.0 だけでなく、その拡張である OpenID Connect についても解説されています。

OAuth 2.0 のクライアント、認可サーバー、保護リソースの実装例も載っており、ハンズオンも楽しめます。ただ、JavaScript で書かれてるので、ちょっとわかりづらいところもあります。

タイトルからすると入門本という位置づけですが、かなり詳細に OAuth 関連の内容が詰め込まれています。概要を理解したいだけならネット上の記事を読むほうがいいと思います。また、特定のサービスについて解説されてるわけではないので、明確に特定のサービスについて知りたいだけならそのサービスのドキュメントを読むのがいいと思います。

難点としては、とにかくボリュームが多いことと、これは翻訳の問題かもしれませんが文章が読みづらいという点です。しかし、それらを含めても、OAuth について体系的に日本語で学びたいとなればこの本は素晴らしい一冊だと思います。

通しで読むのはかなり大変ですが、気になる章だけ読むということもできます。OAuth に関わる人であれば、手元に置いておいて間違いない一冊だと思います。

データ指向アプリケーションデザイン

データを信頼性高く、スケーラブルにするためのアプローチについての知識が詰まった一冊です。特に、近年のマイクロサービスのような分散システムでデータをどのように扱えばいいか知りたい人におすすめです。今年読んだ中で一番学びの多い技術書でした。

ただし、書かれている内容は具体的な実装よりも抽象的な話が多いです。なので、実際のサービスである程度データを扱った経験がある人でないと理解が難しい部分があるかもしれません。また、分量が多く、内容もかなり理解に頭を使わされるので、読み切るには時間がかかるとは思います。自分の場合、読み終わるのに 3 ヶ月かかりました。

ドメイン駆動設計入門

ドメイン駆動設計の入門書です。コードのパターンの解説が中心で、紙面の大半がコードなので、コードが読める人であればとても理解しやすいと思います。C# で書かれていますが、オブジェクト指向が最低限理解できれば大丈夫です。逆に、コードが全然理解できない初心者向きではないです。

本の最後あたりにも書かれていますが、モデルをどのように作るかという部分についてはほとんど書かれていないので注意が必要です。おそらく、この本を読んだあとにエリック・エヴァンスの本や、実践 DDD あたりを読むとより理解できるのだと思います。

TCP/IP ネットワーク入門

Linux で手を動かしながら TCP/IP ネットワークに関わる基本的なことを学習できる本です。macOS や Windows 向けにも VM で Linux を動かす方法が書かれているので、一通りの環境で試せるはずです。

開発経験はあるけど、ネットワークに関する知識はとても曖昧という自分みたいなエンジニアにはおすすめだと思います。ただし、Linux のコマンドラインの知識はある程度ないと読むのは厳しいと思います。プログラミングについても最低限の知識がないと、最後のあたりは厳しいです。

一通り TCP/IP を学ぶために最低限の知識を説明したあと、手元で手軽に実験できるように Network Namespace の解説から始まり、Ethernet、トランスポート層(UDP、TCP)、アプリケーション層(HTTP、DNS、DHCP)、NAT(Source NAT、Destination NAT)、ソケットプラグラミングといった項目を学べます。知ってることでも手を動かしながら学ぶと、やはりこれまで知らなかった発見があります。例えば、traceroute がどのように実現されているのかとか知らなかったので、勉強になりました。

ネットワーク系の技術書は重い本が多い一方、この本は入門者向けに手軽におすすめできる本だと思いました。

Design It! プログラマーのためのアーキテクティング入門

Design It! ―プログラマーのためのアーキテクティング入門

Design It! ―プログラマーのためのアーキテクティング入門

  • 作者:Michael Keeling
  • 発売日: 2019/11/25
  • メディア: 単行本(ソフトカバー)

ソフトウェアアーキテクチャについて書かれた一冊です。ソフトウェアアーキテクトの役割、設計の基礎、品質特性、アーキテクチャパターン、アーキテクチャのドキュメント化、評価、チームへの共有、そしてそれらに関するアクティビティ一覧など、幅広く書かれています。

特定のパターンについてではなく、アーキテクチャというテーマで一冊書かれており、勉強になる内容が多かったです。ステークホルダーやチームとの関わりについても書かれているのが実践的でよかったです。ただ、どうしても抽象的な話が中心にはなるので、開発の初心者にはわかりづらいかもしれません。また、途中で出てくる例が正直わかりづらいです。

アクティビティ一覧はおもしろそうと思いつつ、実際にやってみないことにはなにも得られないままになってしまうので、なにかしらチームでやってみるといいと思います。と書きつつ、自分はどのアクティビティも試せておらず、どうやって実際のプロセスに組み込むかは難しそうです。

ここから始める政治理論

ここから始める政治理論 (有斐閣ストゥディア)

ここから始める政治理論 (有斐閣ストゥディア)

タイトル通り、政治理論の入門書です。政治理論とはなにか、政治とはなにかというところから始まり、リベラリズム、分配的正義論、民主主義、グローバル、権力、フェミニズム、ナショナリズム、多文化主義、公共性、シティズンシップ、などなど、さまざまなトピックについての考察がまとめられています。

アメリカ大統領選挙をきっかけに、自分は政治についての知識が全然ないので、読んでみました。現在の世の中について考える上で参考になる考察が多かったです。これだけですべてを網羅されているというわけではないですが、目次を見て気になる内容だと思う人には向いてると思います。

一方で、入門書とはいっても言葉の選択が難しいものが多い印象です。大学の教科書的な本ではあるのでしょうがない部分もあるでしょうが、さすがにもう少し平易な文章にできたのではと思うところがあります。自分は読んで勉強になりましたが、他人におすすめするかというと、もっと簡単な本を読んだほうがいいと言うと思います。

まとめ

今年は通しで読んだ冊数が 10 冊ぐらいで去年より減ってしまいましたが、読書量が減ったというよりは『データ指向アプリケーションデザイン』が重すぎた感じです。

引き続き読みたい本は増えていく一方なので、来年もどんどん読書していきます。