【Ruby】irbについて徹底解説!

Ruby

irbとは

irbとは「Interactive Ruby」の略で、対話形式でプログラムを実行できるようになるコマンドです。 このコマンドを入力するとターミナルでrubyのコードを動かすことができるようになります。 ちょっとしたコードの動作確認を行いたいときに使います。

rubyのプログラムを実行するにはまずはrubyファイルを作成して、そのファイルにコードを書き、ターミナルでrubyコマンドを実行してコードを動かす流れが一般的です。

irb

上の例のようにたった1行のコードを実行するのにファイルを作成してターミナルでそれを実行するのは大変めんどくさいですよね。

そんなときirbコマンドでirbモードにするとターミナル上で直接rubyのコードを実行できます。

実際にirbコマンドを使ってみよう

それでは実際にirbコマンドを実行してirbモードにしてみましょう。
ターミナル

shell
1
2
$ irb
irb(main):001:0>

すると$マークの代わりに「irb(main):001:0>」という文字が表示されます。
この状態がirbモードです。
実際にputs "hello world"と入力してみます。

puts hello world

このようにすぐに実行結果が出力されるのが確認できます。
これなら気軽にコードを実行することができますね!

irbモードを終了するには「exit」または「quit」、「irb_exit」と入力します。

数行に渡るコードを実行してみよう

irbモードでは1行のコードだけでなく、複数行に渡るコードも実行することができます。
試しに簡単なif文を実行してみます。

if文の実行

if分のようにコードが続いている場合は上の例のように「0」が「1」になります。
コードが続いている中に複数行のコードが入った場合はその部分が「2」と表示されます。

shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
irb(main):001:0> num1 = 1
=> 1
irb(main):002:0> num2 = 2
=> 2
irb(main):003:0> if num1 == 1
irb(main):004:1> if num2 == 2
irb(main):005:2> puts "num1は1でnum2は2です"
irb(main):006:2> else
irb(main):007:2* puts "num1は1です"
irb(main):008:2> end
irb(main):009:1> else
irb(main):010:1* puts "1か2以外です"
irb(main):011:1> end
num1は1でnum2は2です
=> nil

間違って実行してしまった時

間違えてenterキーで実行してしまった時、
コードが実行されず、「exit」と入力しても何も起こらない時があります。
そんな時は閉じるべき文字を打ち忘れている可能性があります。

puts hello

上の例は文字列オブジェクトを定義する「"」の閉じる部分が入力されずに実行されてしまっています。

つまりコンピュータはまだコードが続いていると認識します。
なので「exit」を押しても文字列の中の文章と扱われて何も起こらないわけです。

このような時は「irb(main):002:0"」と言ったように最後に閉じるべき文字が表示されます。
この場合は「"」がまだ入力されていないので「"」が表示されています。

また間違えて入力してしまったコードは1回enterが押されてしまうと修正はできません。
そんな時は一度「exit」で抜けてから再度実行してみましょう。
また「controlキー + c」でも途中のコードをキャンセルすることができます。

外部で定義したコードを読み込んでみよう

irbモードでは外部で定義したメソッドやクラスもそのファイルを読み込むことで使えるようになります。

例えばディスクトップに下記のファイルを作成し、コードを記述します。
classCar.rb

ruby
1
2
3
4
5
class Car
  def initialize(name)
    @name = name
  end
end

このCarクラスをirbモード内で使用したい場合はこのファイルがあるディレクトリをカレントディレクトリにした状態でirbコマンドを実行します。

irbモードになったら下記のコマンドでファイルを読み込みます。

shell
1
load("classCar.rb")

これで外部で定義したCarクラスがirbモードの中で使用できるようになります。

shell
1
2
3
4
irb(main):001:0> load("classCar.rb")
=> true
irb(main):002:0> car = Car.new("BMW")
=> #<Car:0x00007f809da88020 @name="BMW">

簡単にクラスやメソッドの動きを確認することができるので覚えておくと便利です。
carclass

サブirbモード

irbモードの中でirbコマンドを実行するとサブirbモードになります。
サブirbモード内では通常のirbモードで定義した変数はスコープ外になるので呼び出すことができなくなります。

すでにirbモード内に定義した環境を残したまま、新たな環境でコードを実行したいときなどに便利です。

shell
1
2
3
4
5
6
7
8
irb(main):001:0> num = 1
=> 1
irb(main):002:0> irb #サブirbモードへ
irb#1(main):001:0> puts num
Traceback (most recent call last):
        1: from (irb#1):1
NameError (undefined local variable or method `num' for main:Object)
# 定義されていない変数と表示される

サブirb

サブirbはいくつでも起動させることが可能です。
irbモードは手軽にrubyのコードを実行できるので、初期の学習に非常に役立ちます。
プログラミングの学習はインプットだけでなくアウトプットが非常に大事になってきます。

新しくハッシュを学んだら実際にirbモードでハッシュオブジェクトを定義したり、そこからキーを指定してバリューを取り出してみたりと新たに学んだ知識は実際irbモードで実行して動きを確かめると身につき方も変わってくるので、ぜひirbモードを使ってみましょう。

まとめ

irbコマンドはrubyのコードをターミナルで簡単に実行することができるようになるコマンドです。