30歳からのプログラミング

30歳無職から独学でプログラミングを開始した人間の記録。

『なるほどUnixプロセス―Rubyで学ぶUnixの基礎』を読んだ

Unix プロセスとはどのようなもので、どのような特徴を持つのか、平易な文章と簡潔なコードを使って解説していく一冊。

tatsu-zine.com

プロセスID、プロセスの親子関係、標準ストリームといった、プロセスに関する基本的な概念について説明していきながら、プロセスに対する理解を深めていく。

あくまでも入門的な内容だから、ということもあるだろうけど、とにかく読みやすい。
各章が短いので少しずつ読み進めていくことができるし、本書全体も 100 ページ超なので、気付いたら読み終えていた。

実際にコードを実行して確認できるのもいい。
forkで子プロセスを作ってそのpidppidを確認したり、forkが値を 2 回返すことを確認したり、シグナルを送ってプロセスを終了させることができることを確認したり、といったことを繰り返していくことで、理解が深まっていく。
環境構築が簡単なのもよい。Unix 系の OS で、ターミナルと Ruby さえあればいい。Mac だったら、何もしなくても揃っているのではないだろうか。

ただ残念ながら Spyglass を動かすことはできなかった。
Spyglass とは本書のために書かれたウェブサーバで、付録としてついてくる。ウェブサーバとして機能させるためにプロセスがどのように動いているのかを知り、理解を深めることを目的としている。
ネット上の情報も参考にしながらビルドを試みたが、上手くいかなかった。原書が出版されたのはかなり昔のようなので、仕方ないかもしれないが。

本文中に出てくるコードが簡潔なのも素晴らしい。
主題とは無関係な記述が多くサンプルコードが冗長になってしまっている事象を見かけるが、本書ではそのようなことはない。
どのコードもシンプルさを保っており、ほとんどのサンプルコードが 10 行以内に収まっている。
そのため、Ruby を全く知らなくても、何をしているのか概ね理解できる気がする。今なら ChatGPT に聞いてもいいわけだし。

そしてもちろん、本書の説明そのものが分かりやすい。
私のような初学者でも理解できるように、とても丁寧に説明されている。著者が文章が上手いというのもあるだろうし、それが自然に翻訳されているというのもある。訳書にありがちな読みづらさは全くなかった。
専門書を母国語で読めるのは本当にありがたい。いろんなニュースを見ていると、訳書に限らず専門書の出版は難しくなっているようだけど、何とか頑張って欲しい。

以下は訳者の一人が執筆された記事なのだが、この記事自体もかなり分かりやすい。
本書の一部を抜粋したような内容なので、これを読むと本書の雰囲気を掴めると思う。

magazine.rubyist.net