「プロを目指す人のためのRuby入門」を読んだ感想

はじめに

Rubyの勉強のために、プロを目指す人のためのRuby入門 という本を読んでみました。
難しい内容も多く、読むのに時間がかかりましたが、
本を読んでの感想を「良かったと思う点」、「学んだ点」、「難しいと思った点」の
3点に分けて、まとめていきたいと思います。

感想

良かったと思う点

「プロを目指す人のためのRuby入門」を読んで良かったと思った点は以下の3点です。

  1. サンブルコードが多い
  2. 幅広く網羅されている
  3. テスト(駆動)について触れられている

1. サンプルコードが多い

各説明でサンブルコードが多く用いられており、理解がしやすいと感じました。
また、具体的な使用例が書かれていることで、
実際使用する際に応用しやすいのではないかと感じました。

2. 幅広く網羅されている

入門書等だと基本的な文法にしか触れられていないケースが多いですが、
この書籍では後述するテストやライブラリに関しても触れられており、
幅広く網羅されている印象を持ちました。

3.テスト(駆動)について触れられている

実際ソースコードを書いてテストを行う場面が多いですが、
テストの使い方・考え方の説明が具体的にされており、
とても実用的だと感じました。

学んだ点

書ききれないほど、沢山学ばさせていただきましたが、
ここでは特に印象に残った内容についてまとめていきたいと思います。

%記法について

Rubyには%記法と呼ばれるものがあります。
他言語ではあまり見ない構文であるため、本を読んでいて印象に残りました。
具体的には以下の通りです。

  • %q!文字列 !'文字列' (シングルクォートで囲んだものと同等)
  • %Q!文字列!,%! 文字列 !"文字列" (ダブルクォートで囲んだものと同等)
  • %s!文字列 !:文字列 (シンボルと同等)
  • %i(文字列1 文字列2 文字列3) →[:文字列1, :文字列2, :文字列3] (シンボルの配列と同等)
  • %w!文字列1 文字列2 文字列3! → `["文字列1", "文字列2", "文字列3"] (配列と同等)
  • %x{文字列}`文字列` (バッククォートと同等)

範囲を表すオブジェクトについて

Rubyには値の範囲を表すオブジェクトがあります。
以下のように記述します。

最初の値..最後の値(最後の値を含む)
最初の値...最後の値(最後の値を含まない)

可変長引数について

メソッドの引数名の前に*をつけることで可変長引数となります。
可変長引数は配列として受け取ることができます。

def メソッド名(*可変長引数名)
    メソッド処理 
end

クラスメソッドの定義について

クラスについては、他言語とそこまで大きく差異はないと感じましたが、
クラスメソッドの定義は少し違うかなと感じましたので、
簡単にまとめておきたいと思います。
Rubyでクラスメソッドを定義するには以下のように記述します。

class クラス名
    def self.クラスメソッド名
        クラスメソッドの処理
    end
end

また、以下のように記述してもクラスメソッドを定義することができます。

class クラス名
    class << self
        def クラスメソッド名
            クラスメソッドの処理
        end
    end
end

モジュールについて

モジュールの用途としては以下の5点が挙げられます。

  • 継承を使わずにインスタンスメソッドを追加する
  • 複数のクラスに対して共通の特異メソッドを追加する
  • クラス名や定数名の衝突を防ぐために名前空間を作る
  • 関数メソッドを定義する
  • シングルトンオブジェクトのように扱って設定値などを保存する

モジュールの定義方法は以下の通りです。

module モジュール名
    モジュールの定義
end

また、ミックスイン(モジュールをクラスにincludeする)を使用することで、
多重継承のような形を実現することも可能です。

例外処理について

他言語では、try-catchを使用して例外処理を定義するものが多いですが、
Rubyで例外処理を定義するには、begin-rescure-endを使用します。

begin 
    例外が起きうる処理
rescue
    例外が発生した場合の処理
end

難しいと思った点

本を読んで、Rubyで難しいと思った点は以下の2点です。

  • 一貫性がない点
  • Ruby独特な書き方がある点

一貫性がない点

エイリアスがあったり、別の書き方でも同じ動きを実現できたり自由度が高い反面、
個人によって書き方がばらつく恐れがあるので、読みづらく感じてしまうのではと思いました。

Ruby独特な書き方がある点

例外処理の書き方等、他言語と書き方が違う部分がしばしば見受けられたので、
その点は慣れが必要だなと感じました。

終わりに

Rubyについて深く学ぶことができ良かったと感じました。
少し長くなってしまいましたが、感想は以上となります。
ここまで記事をご覧いただきありがとうございました。

参考

プロを目指す人のためのRuby入門[改訂2版] 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plus) | 伊藤 淳一 |本 | 通販 | Amazon