なるほどUnixプロセス - Rubyで学ぶUnixの基礎を読んだ
先日ISUCONが行われていた。
ボクは出場してなくて、Twitterから観戦しているだけだったんだけどisuconタグを眺めていると以下のスライドが流れてきた。
今回2位だったpixivチームのkatatsuyさんがisucon前に作っていた神資料らしい。
読んでみたが、なるほど、広告サーバーの構築時の苦労や知見が素晴らしくまとまっている。
で、スライドの最後のほうにおすすめの書籍が記されててそこに『なるほどUnixプロセス - Rubyで学ぶUnixの基礎』があったので購入して読んでみた。
親プロセス、子プロセス、fork、ファイルディスクリプタ、ゾンビプロセス、デーモンプロセス、プロセスグループ、セッショングループ、シグナル、ストリーム、パイプ、IPC、ソケット、コピーオンライト
これらの用語の中で説明できない言葉があるRubyエンジニアはこの本を読むと良い。
どれもUnixプログラミングの世界では基本で入り口部分だ。
しかしながら基本こそ何よりも大事。
深い理解を得るためには基本の原理を心得ていないといけない。
その点でこの本はUnixという世界に足を踏み入れたいRubyエンジニアにとっては格好の入門書になるはず。
特にCでのプログラミングをあまりやってこなかったボクのようなwebエンジニアは便利なライブラリやフレームワークの活用に目が向きがちだ。
そうなると便利さの裏にある隠蔽された原理についての理解がおろそかになる。
Kernel#system,Kernel#exec,Kernel#`の違い
UnicornとMogrelではなぜUnicornのほうがリソース効率が良いのか
これをただそういうものとして暗記しているのと原理まで理解しているのとではisuconのような地力が試される場で大きな差となってくる。
各言うボクも複雑な部分がブラックボックス化されているツールをただ便利!として使うことが多いタイプなので原理の理解を疎かにしてしまいがちだった。
実はこの書籍を購入した理由は、冒頭のスライドを読んでいてUnicornの説明やCircusの説明でわからない言葉があってこれはいかんと思ったから。理解が甘いことに危機感を覚えさせてくれたわけだ。
その後、この本をひと通り読んでからあのスライドをもう一度読み返してみた。
最初とは全然違って見える。
「理解できる」とは霧のようなモヤっとしたものがクリアになることである。
そして気持ち良いものだ。
そんなことを久しぶりに思い出した。
ところで一つ難点があって、Kindleで手軽に読めればもっとよかったなーと思った。
mobiに変換してkindleに突っ込めば良いだけの話なんだけどさ。