ツナワタリマイライフ

日常ネタから技術ネタ、音楽ネタまで何でも書きます。

「Effective Ruby」を読んだ

はじめに

最近capistranoを使ったツール(Ruby)で1kぐらいがっつりコードを書いて、自分でもイケてないのはわかるけどどうすりゃいいかわかんないしなーと漠然とモヤモヤしてたので1step上のRubyコードが書けるようにと買ってみました。

Effective Ruby

Effective Ruby

1つの項目のサイズもちょうどよく、読んでるだけでも面白いのでどんどん読みたい!と思って進められました。良い本です。

1章 Rubyに身体を慣らす

  • Rubyは何を真と考えているか
  • nilガードせよ
  • 定数はミュータブル
  • 実行時警告には従え

どれもコードを書くときに頭に入ってないといけない内容ですね。

2章 クラス、オブジェクト、モジュール

この章が自分のレベルでも理解できた上で、勉強になった。これまで謎の存在だった「特異クラス」の存在がやっと腑に落ちた。

これまでもクラスを考えたRubyプログラムを書いたことがないので、それはやらないといけないなと思いました。

あとはついついHashを使ってしまいますが、Struct(はじめて知った)を使ったほうが可読性が良いという話も初耳でした。

3章 コレクション

Array,Hash,Set,Range...コレクションはRubyコードを書く上で欠かせないですね。

mapやreduceを使った叩き込みも最近知ったばかりだし、nilを除くArrayメソッドははじめて知った。

4章 例外

例外の扱い方がまったく分かってなくて、この本を取ったところもある。begin/rescueして自らraiseするのって意味あるんだっけとか、何のために例外起こすんだっけとか、そういうところが理解できていないので。

まさにこの本に書かれている通り、ただの文字列をraiseで渡していたので、カスタム例外を作ることを今後は意識したい。

5章 メタプログラミング

ここは難しかった。今の自分では理解できなかったので出直す。メタプログラミングRubyの初版でも挫折してしまったので、最近出た2版で再チャレンジしたい。

メタプログラミングRuby 第2版

メタプログラミングRuby 第2版

#6章 テスティング テストは大切だ。rpecはrailsアプリで少し触ったことがある。モックの作り方は今後役に立つと思う。ただ自分が求めてるのは、リモートへコマンドを実行するcapistranorubyスクリプトのテストのやり方。実行コマンドごとにモックを作るのはやはりつらい。。。capiのexecuteの変わりに0または1を終了コードとして返すモックを書けばいいのかな。

7章 ツールとライブラリ

gemやbundlerの依存関係についての話題。この辺もそもそもの理解が足りていないので、必要なときに読み返す。

8章 メモリ管理とパフォーマンス

ガベージコレクタの動作が中心となった章。ここもRubyの内部実装をまったく理解していない自分には少しレベルが高かった、いけないなぁこれじゃあ。

rubyのプロファイリングツールの存在ははじめて知った。これまでrubyスクリプトのパフォーマンスの問題にぶつかったことはないが、今後必ずぶつかるだろう。そのときには役に立つ。

終わりに

scanして必要なときに読み返したいと思う。良い本でした。