書籍紹介 『パーフェクト Ruby』

書いた人:ryopeko (@ryopeko)

書籍紹介『パーフェクトRuby』

perfect-ruby-cover-s.jpg
書名
パーフェクトRuby
著者
Rubyサポーターズ (@sugamasao @takkanm @hibariya @udzura @joker1007 @ryopeko)
発売日
2013 年 8 月 10 日
体裁
大型本
定価
3,360 円
ISBN
978-4774158792

書籍の概要

本書は 1 冊で Ruby の言語仕様から最新の技術までを網羅した内容となっています。また、網羅的に解説されているだけでなく各技術に関しては基本からしっかり解説しており、体系的に知りたい初心者はもちろん中級者以上の方にも Ruby を書く際に手元に置いておくと重宝する内容です。

オススメポイント

本書は Ruby 1.9.3 と Ruby 2.0 に対応した書籍となっているため、普段の Ruby を書く上で最新の Ruby を使用していても通用する内容です。また、組み込みクラス・モジュール・ライブラリについては非常に詳細に解説しているため、普段利用しているときには気が付かないような新しい発見が得られると思います。Ruby は強力なメタプログラミングを行うことができますが、それをサポートする様々な機能があることは知られているようで知られていないと思います。本書ではパートを丸々 1 つ利用してメタプログラミングを支える技術について詳細に解説しています。ここに書かれている内容は Rubyist としてもう一段レベルを上げたいという人には必見です。

本書では組み込み以外にも昨今デファクトスタンダードとなっているような gem パッケージについても踏み込んで解説しています。特に BundlerYARDCapistrano については普段からお世話になっている方も多いと思いますが、これらの内容も幅広く取り扱っているためすぐに役に立つような内容も満載です。

最後に、近年 Web アプリケーションを開発する上では Ruby on RailsSinatraPadrino の裏側で使われ、意識することが少なくなってきた Rack についても詳細に解説しています。Rack という仕組みは Ruby で Web アプリケーションを開発する上では無くてはならない仕組みです。本書に書かれている内容をきっかけに Rack を理解し、更にはもっと根幹の技術や仕組みに触れるきっかけにしていただければと思います。

Ruby サポーターズからのひとこと

sugamasao

本書は、Ruby の基礎や標準ライブラリの使い方、そして Gem パッケージの作成方法など、なんとなくわかるんだけど詳細は毎回ググってるわーという内容を含めて、網羅的にまとまった本だと思っています(とはいえ、誌面の関係上泣く泣く削った所もあります)。本書では Ruby on Rails については扱っていませんが、Web アプリケーションフレームワークの基礎部分となる Rack について、ある程度理解を深めることができるような構成にしたつもりです。気になる方は是非手にとって、見てみてください。

初めての執筆ということもあり、苦労もありましたし掛けましたが、ここまでたどり着くことができたのは Ruby サポーターズのみんなのおかげです。本当にありがとう。

takkanm

本書の特徴は、「言語仕様だけ」、「ライブラリの紹介だけ」というわけではなく、それらが 1 冊にまとまっているということだと思います。

また本書では、prepend やキーワード引数等、Ruby2.0 での機能も多く紹介しています。リリース前からソースを読んだりして機能を追っかけて書いていたので、書いた後に機能や使い方が変更になったものもあり、それに追随するために書き直したりしたのがよい思い出です。

hibariya

本書は、Ruby 本体とよく使われるライブラリ・ツールについて幅広く扱っています。 また、本のはじめには Ruby の概要をおおざっぱに紹介した章があり、全く Ruby に触れたことがない方にも、なるべく理解しやすいようになっています。

udzura

Ruby は Ruby on Rails を始めとした Web プログラミングで利用されることが多いですが、本書はその用途も踏まえつつ、コマンドラインツールなどの幅広い用途での使い方を紹介しています。 また、意外と網羅的にまとまった資料となると少ない、標準クラス、標準添付ライブラリの使い方も解説しています。特にメタプログラミングに関する章が多めになっており、写経をすればそのような API を駆使したプログラミングの練習になるのではないでしょうか。

Ruby を、深く知り、自分で考えて、しっかり使えるようになるためにお役に立てる本だと思います

joker1007

パーフェクト Ruby では、広く使われている割に日本語でまとまった情報が余り無い Capistrano や YARD のちょっと凝った使い方までしっかり解説しています。

サンプルコードや出力例付きでこの辺りを解説している書籍は余り無かったと思います。 実行できるコードと出力結果を用意するのはかなり大変だったので、この辺りに注目していただけると嬉しいです。 その他にも Gem の作り方やメタプログラミングの裏側など入門本では解説し切れないような範囲もカバーしているので、本格的に業務で Ruby を活用したい人にもオススメできる一冊になっています。

ryopeko

この書籍には「使っていて実は良くわかっていない」というものや、「一度使ったことあるんだけど詳細忘れた」等、何かあったときに手に届く範囲に置いておくと重宝する書籍です。

個人的に特にオススメなのが一つのパートを割いて解説されている Part3 のメタプログラミングと Part5 内の YARD についてです。 メタプログラミングについては Ruby が言語としてメタプログラミングをしやすい環境を提供するためにどんな機構が用意されているかという点についてに触れることができます。一部トリビア的な内容を含んでいますが、そのためもあってかこのパートに書かれている内容が日々の作業にジワジワ効いてきます。 YARD については手前味噌ですが私自身が担当した箇所ということもありますが、執筆にあたって YARD のバグを見つけ Pull Request を送ってマージされたという思い入れのある内容です。個人的な思い入れだけではなく、実際に YARD でどんな記述ができるのかという点において実際のレンダリングイメージをスクリーンショットを用いて丁寧に解説している点もポイントです。

書籍の目次

1.Ruby概要
        1 Rubyについて
        2 本書の読み方
        3 Rubyドキュメントの歩き方
        4 Ruby処理系の入手方法
        5 Rubyを使ってみよう
        6 コーディングスタイル
        7 たくさんのRuby実装
        8 Rubyのコミュニティとの関わり方
        9 Rubyの開発について知る
2.Rubyの基礎
        1 Hello, Ruby
        2 変数と定数
        3 条件分岐と真偽値
        4 式
        5 クラス
        6 モジュール
        7 主な組み込みクラス
        8 様々な代入式
        9 例外
        10 外部ファイルの読み込み
        11 予約語
        12 組み込みの変数・定数
3.制御構造・メソッド・組み込み関数
        1 演算子
        2 基本的な制御構造
        3 例外処理
        4 大域脱出
        5 メソッドの定義と呼び出し
        6 基本的な組み込み関数
4.クラスとモジュール
        1 クラス
        2 モジュール
        3 オブジェクト
5.主な組込みクラス・モジュール
        1 Numeric
        2 String
        3 Regexp
        4 Comparable
        5 Enumerable
        6 Time
        7 IO・File
        8 Dir
        9 Thread
        10 Fiber
        11 Process
        12 Struct
        13 Marshal
        14 ObjectSpace
6.Rubyのクラスオブジェクト
        1 Classクラスからクラスを作る
        2 クラスオブジェクト
        3 特異クラス
        4 メソッド探索方法
        5 Module#prepend
        6 Refiments
7.動的なプログラミング
        1 オープンなクラス
        2 Object#method_missing
        3 eval
8.Procオブジェクト
        1 Procクラス
        2 Proc#new以外のProcオブジェクトの作り方
        3 Proc.new, Kernel.proc, Kernel.lambda
        4 Rubyでのクロージャ
9.Methodクラス
        1 Methodオブジェクト
        2 MethodクラスとUnboundMethodクラス
        3 MethodオブジェクトとProcオブジェクト
10.Rubyでのリフレクションプログラミング
        1 オブジェクトについて調べる
        2 クラスについて調べる
        3 イベントをフックする
11.ライブラリ編
        1 マルチスレッドプログラミング ( thread )
        2 より手軽な非同期プログラミング ( fiber )
        3 ファイル/ディレクトリ操作を極める ( pathname, fileutils, tmpdir, tempfile )
        4 特定のフォーマットのテキストデータを手軽に扱う ( yaml, json, csv )
        5 上級者のための文字列オブジェクト ( stringio )
        6 集合で遊ぶ ( set )
        7 もっと詳しく、日付と時刻 ( time, date )
        8 シンプルなHTTPクライアント ( net/http )
        9 最も基本的なテンプレートライブラリ ( erb )
        10 Rubyのベンチマークを簡単に ( benchmark )
        11 ログファイルを取り扱う ( logger )
12.組み込みツールたち
        1 irb
        2 RDoc
        3 Rake
        4 RubyGems
13.gemパッケージの作り方
        1 雛形の生成
        2 gemspecについて
        3 gemパッケージの作成
        4 Rakeタスク
        5 C言語でライブラリの作成
14.よく使われる標準外のツール
        1 Bundler
        2 Capistrano
        3 YARD
        4 Pry
15.コマンドラインアプリケーションを作ろう
        1 作成するTodo管理アプリケーションについて
        2 Todo管理アプリケーションを作成する前に
        3 CLIアプリケーションの作成
        4 データベースアクセス処理とCommandクラス
        5 コマンドラインからの引数解析
        6 Commandクラスとの結合
        7 Todo管理アプリケーションの完成とgemパッケージ化
16.Webアプリケーションを作ろう
        1 Webアプリケーションを取り巻く環境
        2 Todoアプリケーション2.0.0で利用するライブラリ
        3 Todoアプリケーション2.0.0の新機能、Webインターフェイス
        4 再び todo コマンド
        5 Todoアプリケーション 2.0.0 の完成

書籍紹介者について

ryopeko。仕事では世界に名を馳せる Perl ハッカー達に囲まれ Perl のコードを書いている。 Perl を知ることで Ruby を知り、Ruby を知ることで Perl を知る毎日。Ruby を用いて日々の仕事を少しでも 楽しく便利にするための工夫は怠らない。