Ruby リファレンスマニュアルの読み方1(メソッド)

https://www.ruby-lang.org/ja/documentation/

Ruby をやるなら一番お世話になるのが、公式ドキュメントである Ruby リファレンスマニュアル。愛称は「るりま(rurema)」。るりまを読むシリーズをブログで始めようかなと思っている。

docs.ruby-lang.org

日本語というだけでもありがたいのだが、プログラミング初心者には少々難しいところもあるかもしれない。最初の頃は、リファレンスを読んでもよくわからずに、他のブログ記事を探すなんてこともあった。

しばらくしてから、このヘルプページがわかりやすいことに気づいたのだが、さらに初心者(半年前の自分)向けに噛み砕いてみる。

このマニュアルのヘルプ (Ruby 2.7.0 リファレンスマニュアル)

リファレンスで使われる記号

あくまでもリファレンス上で使う記号であって、コードに書くときとは違うので注意する。以下、引用元のリンクがないものはヘルプページからの引用。

インスタンスメソッド

String#size の # って何?
「#」はインスタンスメソッドであることを表します。

Stringは、文字列クラスのこと。

コード上では文字列オブジェクト.sizeのように書く。

例)"apple".size

ちなみに、String#sizeString#lengthは同じ意味で、どちらを使ってもよい。

String#length (Ruby 2.7.0 リファレンスマニュアル)

インスタンスメソッドの他の例

Integer#even?

even?は Integer(整数クラス)のインスタンスメソッド。コードでは整数オブジェクト.even?のように書く。

例)10.even?

Integer#even? (Ruby 2.7.0 リファレンスマニュアル)

クラスメソッド(特異メソッド)

Dir.chdir の . って何?
「.」はクラスメソッドであることを表します。

クラスメソッドは、クラス名.メソッドの形で呼び出す。

コードではDir.chdirと書く。クラスメソッドはリファレンスの表記とコードが同じ書き方になる。

クラスメソッドは、リファレンスでは「特異メソッド」と書かれている。ここ大事。ちなみに英語では singleton method。

f:id:masuyama13:20200908235708p:plain

Dir.chdir (Ruby 2.7.0 リファレンスマニュアル)

モジュール関数

Kernel.#require の .# って何?
「.#」はモジュール関数であることを表します。
「Kernel.#require」は「Kernel のモジュール関数である require 」という意味です。

Kernel のモジュール関数としては他に、putspなどがある。Kernel のモジュール関数は、コード上ではメソッド名だけ書けばOKだが、Kernel 以外であればモジュール名.メソッドになる。

Kernel.#puts (Ruby 2.7.0 リファレンスマニュアル)

ところでモジュール関数って何?

モジュール関数とは、プライベートメソッドであると同時にモジュールの特異メソッドでもあるようなメソッドです。
Module#module_function (Ruby 2.7.0 リファレンスマニュアル)

ほほう。簡単にいうと、特異メソッドとして使う方法(モジュール名.メソッド)と、他のクラスに include などをした上でメソッド内から呼び出して使う方法とがあるということかな。

標準出力

p a #=> 1 の #=> って何?
「#=>」は標準出力に出力されるということを表しています。「p a #=> 1 」は「p a」を実行すると標準出力に「1」が出力されるという意味です。

返り値

size -> Integer の「-> Integer」って何?
size メソッドは整数を返すという意味です。

irb で確認してみる。

irb(main):001:0> "テスト".size
=> 3

"テスト".sizeを実行すると、3という整数オブジェクト("テスト"の文字数)が返ってくることがわかる。

ちなみに、sizeというメソッドは String 以外にもいろいろなクラスにある。

そんな風に、メソッド名がわかっているときは、るりまサーチで検索!

最速Rubyリファレンスマニュアル検索! | るりまサーチ

masuyama13.hatenablog.com