『研鑚Rubyプログラミング』β版 を読んだ
タイトルどおりラムダ書籍さんから大好評発売中の『研鑚Rubyプログラミング』β版を読んだ。
翻訳がまだ途中なのでβ版。内容が3部構成なんだけど最初の一部のみ翻訳が完了していて、他の二部は翻訳作業中とのこと。とはいえその翻訳中の部も正式ではないものの日本語化された文章が存在するので一応内容を全て日本語で把握することは可能。 ざっと読み終えたので良かったところを書いていく。
トレードオフを理解しろと書かれている
この本にはRubyの実践的なテクニックがたくさん書いてあるのだけれど、そのテクニックに対してちゃんとトレードオフが言語化してある。例えばActiveRecordとSequelどちらを使うかといった話なら、ActiveRecordには外部ライブラリが数多く存在して開発が捗るし、Sequelなら実行性能やエラー検知に優れている、という様にメリデメがしっかり書かれていた。
URL構造をネストにする時フラットにする時のメリデメ比較もウェブサービス作っているなら参考になると思う。より具体なメソッドの数と複雑性やテストの抽象化等、コードに対してプログラマが悩みがちなことについても書かれている。
技術のトレードオフをちゃんと理解しろという強いメッセージを感じた。
ライブラリを開発する人向けの助言が多い
Module#autoloadの実践例や後方互換性を意識したコード等Rubyでライブラリを書く人向けの助言も多かった。自分でライブラリを書いている人は読むとライブラリ設計に関する道具箱が格段に増えると思う。
またプラグイン設計や定数探索についても詳しく記載されていて、普段プラグインが導入されているような大きめのライブラリを開発で使っている人なら仕組みを知っておくと業務でのデバックも捗りそうだと感じた。
VM、メモリ、実行性能に関する技術
正直デフォルト引数のオブジェクト生成コストを気にしたことはなかったしSetの中身Hashなこと知らなかったし
raiseに空配列渡してバックトレースを消して実行性能を向上させようと考えたこともない。
それらの選択が絶対的に良いものだとは思わないが選択肢の一つであることには違いないので、Rubyを書く時の選択肢をもっと増やしたいと思っている人にはオススメできる。
まとめ
Rubyのコードをもっと良くしたいと思っている人は読むといいんじゃなかろうか。
ライブラリ開発やウェブ開発以外にも引数や変数の使い分けといった原則にも触れられているので普段の開発におけるRubyのコードにも活かせる点が数多く存在すると思う。
とりあえず自分も自作Gemを磨き治すぞo(^-^)o