初級者を脱したいRubyistが読むべき、今年のRuby本を紹介します。
この記事は、Ruby Advent Calendar 2015 の16日目の記事です。
勢いで、Advent Calendarに登録したのでネタを調べていましたが、人に誇るプロダクトなどもないので、Rubyに関して今年出た(or 私が読んだ)ものについてまとめてみます。
独断と偏見になってしまいますが、私のように文法やライブラリはある程度理解して、初級者から中級者へレベルアップしたい方にオススメしたい順に並べてみました。
さらに遡れば良い本もたくさんあると思いますが(例:青木さんのRHG)、Rubyの仕様は常に変わっていくこともあって、比較的新しい本の中でより有益な本を見つけていくということも、大事だと思います。何より楽しいですし。
- [★★★★★] Rubyのしくみ -Ruby Under a Microscope
- [★★★★★] メタプログラミングRuby 第2版
- [★★★★☆] パーフェクト Ruby
- [★★★★☆] Effective Ruby
- [★★★☆☆] リファクタリング:Rubyエディション
- [★★☆☆☆] Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例
※ 今年出版ではないものも含みますが、今年”私が読んだ本”ということでまとめています。
総じて、今年はRuby本としては濃い書籍が出版された一年だったと思います。素晴らしい。
では、各本の紹介や感想をつらつらと書いていきます。
Rubyのしくみ -Ruby Under a Microscope
オススメ度
★★★★★
所感
文字通り、Rubyのしくみを解説した本。古くは、青木さんの完全解説が有名であったが、1.8以前だったこともあり、1.9で入った笹田さんのVMこと、YARVの解説も含めた貴重なランタイム解説本。
当たり前のことだが、RubyはCで書かれているため、この本の大部分もC言語での実装の解説になっているのが、Rubyほんと思って買った初心者に対する、わかりやすい落とし穴。
そうは言っても、あまりCに詳しくない人に対しても、あまり実装の詳細に踏み込むことなく全体的に分かりやすく説明しているのは、素晴らしいと思う。
字句解析から始まり、VMに対するコンパイルや、その他の主だった実装、例えばクラスとかハッシュとか、GCとか、一通りの概要が理解できて、とても楽しかった。
内部の実装がわかれば、なんとなくソースをコピペしていたことが腑に落ちることも多いし、ぜったいのよんでおいたほうがよい一冊。
メタプログラミングRuby 第2版
オススメ度
★★★★★
所感
とても有名な初版が絶版になってしまって、個人的には手に入らなくて困っていたところに、渡りに船の第2版。
Rubyistとして中級以上になると必ず必要になると言われるメタプログラミングの手法が、所狭しと書かれている。
かなり黒魔術的な感じがして、簡単に使いこなせるものじゃないけど、ライブラリのソースを読むときなどには必ず必要になるので、黙って読み進めるのが吉。
他にはない内容で、かつ普通のRubyコードでは物足りなくなってきた私みたいな初級者からすると、とても挑み甲斐があって、奥の深いRubyの世界を垣間見れる一冊。
第二版が出てくれてすごく嬉しい。
パーフェクト Ruby
オススメ度
★★★★☆
所感
古くはオライリーの本なども人気があったように思うが、今では古くなりすぎていて、きちんと勉強したい人が買うとしたら、パーフェクト一択なのでは。
言語の仕様を一通り語りつつ、周辺ライブラリや、メタプログラミングの概要など、幅広く扱っていて、経験のあるRubyistが読んでも多くの発見があると言われる名著。
重かったのが唯一の欠点だったが、それも電子書籍版が出て解決。
若干、リファレンスで使おうとすると、どこに載っているか探すのが、目次だけだとちょっと大変だと思うときがある。ま、でも、どっかに書いてあるという安心感は大事。
Effective Ruby
オススメ度
★★★★☆
所感
古くは、JavaやC++、最近ではPythonでも出ているEffectiveシリーズ。関係性はあるんだよね、きっと。
構成も似ていて、細かなTipsがグルーピングされた章ごとに紹介されている。
全部が全部当てはまるわけじゃないけど、ちょっとしたコツなどは目から鱗のようなものが多いし、なかなか学ぶ機会がないので、楽しく最後まで読める
他のEffectiveでも似たようなものだと思うが、どうしてもレベル感や粒度がまちまちになりやすく、ところどころ戸惑うところも多かった。
個人的な好みで言えば、structを積極的に使おうという点はとても説得力があってよかった反面、テストに関するところはもうちょっと具体的な部分に踏み込んで語ってくれたらと物足りなくもあった。まぁ、この本のスコープとはずれる気もするが。
目次を眺めて、章や項目を決めて、そこだけ拾い読みするだけでも、結構得るものは多い。
リファクタリング:Rubyエディション
オススメ度
★★★☆☆
所感
有名なリファクタリング本のRuby版。出たのはずいぶん前だったけど、本家の方がリメイクされたので気になっていたので、せっかくならとRuby版を購入。Ruby版だから、ということはあまり期待していなかったけど、実際のリファクタリング例では、Rubyならではの良くない表現が随所に示されており、リファクタリングの指南書としては有用。
とはいえ、一般論としての悪い例と改善指針などが紹介されているが、網羅的であるがゆえに具体性に欠ける部分があり、リファレンスとしては良いが、良いコードを書くための指南書という観点からは期待はずれな部分もあった。
リファクタリングを課題にした場合には、一度は読んで見て、その後必要に応じてリファレンス的に読むのが良いのだろう。
Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例
オススメ度
★★☆☆☆
所感
具体的なユースケースにおいて、どうRubyや周辺のライブラリを使っていくかについて、ケーススタディを示したという意味で、貴重な本。
Rubyを使う場合には、大体のことはライブラリが充実しているので、細かいロジックを知らなくても、gem installをすれば解決してしまう。
それでも、Webサービスの利用などは細かい技術が必要になることも多く、取得やパースの基本知識がないといざという時に困る、というのもよくある話。
ケーススタディがマッチすればとても有益な本だが、万人受けではもちろんない。
でも、こういう具体的な使い方に踏み込んで解説してくれる本が、もっともっと増えると嬉しい。
ちょうど裏で作者の方が語っているが、やはりニッチだからこそ価値のある本であって、私はその意味でスコープではなかったように思う。
ターゲットがマッチすれば、これ以上有用な本はないことを追記しておこう。