Effective Ruby 電子書籍(Peter J. Jones 長尾 高弘 arton)|翔泳社の本
  1. ホーム >
  2. 電子書籍 >
  3. Effective Ruby

Effective Ruby


翻訳
監修

形式:
電子書籍
発売日:
ISBN:
9784798140933
価格:
3,520(本体3,200円+税10%)
カテゴリ:
プログラミング・開発
キーワード:
#プログラミング,#開発環境,#開発手法,#Web・アプリ開発
電子書籍

C++やJavaで開発している一線級のプログラマたちが座右の一冊としている「Effective」シリーズ。そのシリーズの最新刊となる本書は言語にRubyをとりあげ、小手先の対処法ではない骨太のRubyプログラミング技法を解説します。
ごくカンタンに実装できるがゆえに、無駄なオブジェクトを配置して見通しの悪いプログラムになっていたり、アクセスしにくいコレクションを作っていたり、機能的ではない例外処理を施していたり、知らず知らずのうちに実行速度を犠牲にしていたりなどなど、自己流では解決しない問題に正しい道筋を示してくれます。


とくに、誰か他のプログラマーに利用されるコードを、どう書くことで堅牢さや使い易さを確保するかという観点が多いことが、本書の特徴といえるでしょう。


Rubyの良さを殺しているプログラミングを撲滅し、より美しくRubyを輝かせるためのノウハウを、各種サンプルを交えてわかりやすく提示する、中級~上級者向けの一冊です。

第1章 Rubyに身体を慣らす
項目1 Rubyは何を真と考えているかを正確に理解しよう
項目2 オブジェクトを扱うときにはnilかもしれないということを忘れないようにしよう
項目3 Rubyの暗号めいたPerl風機能を避けよう
項目4 定数がミュータブルなことに注意しよう
項目5 実行時の警告に注意しよう

第2章 クラス、オブジェクト、モジュール
項目6 Rubyが継承階層をどのように組み立てるかを頭に入れよう
項目7 superのふるまいがひと通りではないことに注意しよう
項目8 サブクラスを初期化するときにはsuperを呼び出そう
項目9 Rubyの最悪に紛らわしい構文に注意しよう
項目10 構造化データの表現にはHashではなくStructを使おう
項目11 モジュールにコードをネストして名前空間を作ろう
項目12 さまざまな等値の違いを理解しよう
項目13 ""<=>""とComparableモジュールで比較を実装しよう
項目14 protectedメソッドを使ってプライベートな状態を共有しよう
項目15 クラス変数よりもクラスインスタンス変数を使うようにしよう

第3章 コレクション
項目16 コレクションを書き換える前に引数として渡すコレクションのコピーを作っておこう
項目17 nil、スカラーオブジェクトを配列に変換するには、Arrayメソッドを使おう
項目18 要素が含まれているかどうかの処理を効率よく行うために集合を使うことを検討しよう
項目19 reduceを使ってコレクションを畳み込む方法を身に付けよう
項目20 ハッシュのデフォルト値を利用することを検討しよう
項目21 コレクションクラスからの継承よりも委譲を使うようにしよう。

第4章 例外
項目22 raiseにはただの文字列ではなくカスタム例外を渡そう
項目23 できる限りもっとも対象の狭い例外を処理するようにしよう
項目24 リソースはブロックとensureで管理しよう
項目25 ensure節は最後まで実行して抜けるように作ろう
項目26 retryでは回数の上限を設け、頻度を変化させ、オーディットトレイルを残そう
項目27 スコープから飛び出したいときにはraiseではなくthrowを使おう

第5章 メタプログラミング
項目28 モジュール、クラスフックを使いこなそう
項目29 クラスフックからはsuperを呼び出そう
項目30 method_missingではなくdefine_methodを使うようにしよう
項目31 evalのさまざまなバリアントの間の違いを把握しよう
項目32 モンキーパッチの代わりとなるものを検討しよう
項目33 エイリアスチェイニングで書き換えたメソッドを呼び出そう
項目34 Procの項数の違いに対応できるようにすることを検討しよう
項目35 モジュールのprependを使うときには慎重に考えよう

第6章 テスト
項目36 MiniTest単体テストに慣れよう
項目37 MiniTest仕様テストに慣れよう
項目38 モックオブジェクトで決定論をシミュレートしよう
項目39 効果的なテストを追求しよう

第7章 ツールとライブラリ
項目40 Rubyドキュメントの扱い方を覚えよう
項目41 irbの高度な機能を使えるようになろう
項目42 Bundlerでgemの依存関係を管理しよう
項目43 依存gemのバージョンの上限を指定しよう

第8章 メモリ管理とパフォーマンス
項目44 Rubyのガベージコレクタの動作に慣れよう
項目45 Finalizerでリソースリークを防ぐセーフティネットを作ろう
項目46 Rubyプロファイリングツールを使おう
項目47 ループ内ではオブジェクトリテラルを避けよう
項目48 コストの高い計算をメモ化することを検討しよう
本書は付属データの提供はございません。

お問い合わせ

内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。

正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。

利用許諾に関するお問い合わせ

本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。

追加情報はありません。

ご購入いただいた書籍の種類を選択してください。

書籍の刷数を選択してください。

刷数は奥付(書籍の最終ページ)に記載されています。

現在表示されている正誤表の対象書籍

書籍の種類:

書籍の刷数:

本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。

対象の書籍は正誤表がありません。

最終更新日:2015年01月26日
発生刷 ページ数 書籍改訂刷 電子書籍訂正 内容 登録日
1刷 124
ページ内最下段コード
class Widget
  attr_accessor(:name, :quantity)

  def initialize (&block)
    instance_eval(&block) if block
  end
end
irb> w = Widget.new do |widget|
       widget.name = "Elbow Grease"
       @quantity = 0
     end

irb> [w.name, w.quantity]
---> ["Elbow Grease", 0]
irb> class Widget
  attr_accessor(:name, :quantity)

  def initialize (&block)
    instance_eval(&block) if block
  end
end

irb> w = Widget.new do |widget|
       widget.name = "Elbow Grease"
       @quantity = 0
     end

irb> [w.name, w.quantity]
---> ["Elbow Grease", 0]
2015.01.26
1刷 169
3番目のリスト
source"https://rubygems.org"
source "https://rubygems.org"
2015.01.05

感想・レビュー

baboocon さん

2015-01-15

Ruby中級者向けの様々なTipsを紹介している本。いまの自分には少々難易度が高めだったかも。「構造化データの表現にはHashではなくStructを使おう」、「method_missingではなくdefine_methodを使うようにしよう」など。あと著者のポリシーとしてメソッド呼び出し時の引数の括弧を省略しないというのが特徴的といえば特徴的かな。また折にふれて読み返してみたい。

miwarin さん

2015-05-19

すいません、メタプログラミングruby読んでも分からなかった点が若干分かった。。。ような気がします。修行します。

river125 さん

2016-03-20

全48項目の半分以上が、rubyのトリッキーな仕様の解説や落とし穴からの回避術だった気がする。これは残念なことだ。rubyはもっとストレスの少ない楽しい言語のはず。たしかに書いてることは正しいし大事なことなんだけど……。読み終わって、やっぱrubyっていいな、もっと使おう、という気にはならなかった。