この記事は、「積読 Advent Calendar 2023」6日目の記事です。
昨日の記事は @hanhan1978 さんの記事でした。
『[試して理解]Linuxのしくみ ―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】』を読みました。発売日は2022年10月17日で、発売されて割とすぐに買った記憶がある(現在は3刷までは少なくとも出ているようだが、手元にあるのは1刷)のですが、1年経ってようやく読みました。
なぜ買ったのか
自分の主戦場とする領域の1つ下のレイヤの知識を知っておきたかったからです。
自分は普段、Webアプリケーションの開発をしていて、バックエンドを主に触っています。学生時代の専門は情報系ではなく、成り行きでソフトウェア開発の会社に就職することになってからプログラミングを学びました。
就職してからは、コードの書き方や設計の考え方、あるいは開発プロセスについて関心が強く本をよく読んでいたほか、仕事で使うミドルウェアやツールをユーザーとして学ぶ(ex. MySQLのインデックスの使われ方や最適化がどうとか)ことはあったものの、インフラのレイヤのことをちゃんと学ばない(仕事で接するたびにその部分だけ調べる程度)まま生きてきてしまいました。目の前の仕事をこなすだけならそこまで困るわけではないのだけど、技術者としてはやはりそこもわかるようになっておきたいなという思いを持っていました。
同じ背景で、少し前(2022年1月に読み終わっているようです)に『コンピュータアーキテクチャのエッセンス』は読んだものの、ハードウェアの話が中心なので正直ピンと来ず、自分の普段触っているレイヤとの隣接性も感じられなかったため、消化不良のままになっていました。
そんな中で、『Linuxのしくみ』の増補改訂版が出るよ、カラーになって読みやすいよ、プログラマにもおすすめだよ、というのをTwitterで見かけて、これだったら興味を持てるかもしれないと思って買ったのでした。
なぜ1年間積んでいたのか
ここ1年、単純に本を読む量が減ってしまっていたというのがまず大きいです。理由は色々とありますが、これを書き始めると長くなるので省きます。
他には、やはり「仕事に短期的に直結しない本なので後回しになってしまった」というのもあります。そもそもの動機からして、「毎日の仕事をこなす分にはそこまで困っていないんだけど、読んでおきたい」という切迫感の弱いものだったし、仕事に直結する勉強(たとえば、アプリケーションの認証認可の部分を実装するにあたって、OAuthやOIDCの勉強をしたり、『暗号と認証のしくみと理論がこれ1冊でしっかりわかる教科書』を読んだり)と比べて具体的なきっかけを普通に仕事をしているだけで得ることが少ないので、一度積読になってしまったあとは手付かずになっていました。
なぜ今になって読んだのか
直接のきっかけは、最近仕事をしている中でスレッドやコンテキストスイッチの話を同僚とする機会があったからです。
幸いなことに現在同じチームで働いている同僚には低レベルのことをよくわかっているシニアなメンバーがいて、チーム内のコードレビューやモブプログラミングでそこの知識も踏まえて話をしてくれるのですが、「おっ、今この人の言っていることがわからないぞ」と思わされることが時折ありました(その都度説明してもらったり調べたりはする)。
そんな中で、先日スレッドやコンテキストスイッチの話になり、ぼんやりとはわかっているが理解度が全然足りないなということを改めて感じたので、重い腰を上げて読み始めました。
感想
非常に読みやすかったですし、自分が知りたいなと思っていたところを知ることができました。
「実験と図解で学ぶ」とあるように、文章での説明に加えて実験と図解が豊富にあるのですが、特に実験のパートが「サンプルコードとその出力」というプログラミング言語の書籍でよくあるものに留まっておらず、レイテンシやリソースの使用量などのデータを表やグラフにして掲載していたのが良かったです。仕組みを図や文章で説明するだけでなく、「その結果として、実行した際にどのような挙動になるのか」まで理解させてくれるのがこの本の良さだと感じました。
終章では、この本を読んだ後にどんな勉強をするとよいかという紹介がありましたが、自分の場合はWebアプリケーションの運用と開発のための知識・スキルをつけていきたいので、巨大積読である
- Brendan Gregg『詳解システム・パフォーマンス 第2版』*1
を次は消化していきたいと思います。来年は積読を増やさず、これまでに積んできた書籍を着実に読んでいくぞ……!
『Linuxのしくみ』と前後して、関連する内容のある以下の本も読みました!積読を解消しているぞ!!!
- Takenobu Tani 『プログラマーのためのCPU入門 ― CPUは如何にしてソフトウェアを高速に実行するか』
- Liz Rice『コンテナセキュリティ』
*1:原書が『Linuxのしくみ』の終章でも紹介されていました。翻訳が出たのは今年になってからですね。