『Eloquent Ruby』でRubyistになるための文化を吸収できた気がする
Date: 2023-09-23『Eloquent Ruby』というRuss OlsenによるRubyについての本を読みました。
https://www.amazon.co.jp/dp/0321584104
僕の所属するSmartHRではRubyをメインのバックエンド言語としており、もっとRubyについて知りたかったのと、redditなどでおすすめの本としてよく挙がっていたというのが読むに至った動機です。
2011年出版の本であり、ターゲットRubyバージョンは1.9と古いですが、今でも十分に役立つことが多く書いてありました。
著者のRuss Olsenは他にDesign Patterns in Rubyなども書いています。
https://www.amazon.co.jp/dp/0321490452
本の構成
構成としては、以下の通りです:
- PART I: The Basics
- PART II: Classes, Modules, and Blocks
- PART III: Metaprogramming
- PART IV: Pulling It All Together
PART Iでは、Rubyの基本的な書き方や、制御構造、コレクション、文字列、正規表現、シンボル、オブジェクト、ダック・タイピング、テストについて書かれています。
PART IIでは、クラスについて、演算子のオーバーライドや特異メソッドの使い方。また、モジュールについて、名前空間としての使い方と、ミックスインとしての使い方。そして、ブロックについて、イテレートでの使い方と、「execute around」での使い方と、あとで実行するための使い方について書かれています。
PART IIIでは、メタプログラミング的なところで、フックについて。また、method_missingについて、柔軟なエラーハンドリングに使う場合と、委譲に使う場合と、柔軟なAPIを作る場合について。そして、モンキーパッチや、自身やサブクラスを変更するクラスの作成方法について書かれています。
PART IVでは、内部DSLや外部DSLの作り方、Gemの作り方、Ruby実装について書かれています。
各章は、それぞれのトピックについて、全体を通してドキュメントを扱うプログラムをメインにコードも交えて説明し、In the Wildというコーナーで、RailsなどのgemやRubyビルトインコードでその章で紹介したトピックが実際にどのように使われているかを書き、Staying Out of Troubleというコーナーでトラブルを避けるためのtipsを紹介し、最後にWrapping Upというコーナーでまとめるという構成になっています。
感想
良いRubyプログラムを書くにはどうすればいいかということから始まり、privateなメソッドも send
を使えば呼ぶことができたり、クラスがオープンであることなど、プログラマーが責任を負うことを重視しているといった、Rubyの哲学まで知れた気がしてとても良い本でした。
前書きで、Rubyを使いこなすには言語の構文といった基礎だけでなく、文化を吸収することが大事ということが書かれていました。この本を読むことで、Rubyの文化を知り、Rubyを使いこなすにあたってどのような姿勢で取り組めばいいかが少しつかめたような気がします。
あとは、In the Wildというコーナーが特に面白かったです。魔法のように使わせてもらっているgemやRuby自体も、当たり前だけど1つ1つあの手この手を使って人の手で書かれているのだなぁと再認識しました。
今後も必要な時に参照して、良いRubyのコードを書く一助になってくれる気がしています。良い本でした。
Takayuki Nagatomi (永冨 隆之)
1985年に生まれて以来ずっと福岡在住。高校を1年で中退後、引きこもって海外ゲームばかり遊んでいたら英語が得意になり、TOEICスコア960を獲得。
英語が得意なら言語を扱うプログラミングも向いているのではないかという恩師の勧めにより26歳の時に情報系の専門学校に入学。
30歳でソフトウェアエンジニアとしてのキャリアを開始したweird programmerです。
家族を何よりも大事にしたい、最高の妻の夫であり2児の父でもあります。
現職: 株式会社SmartHR