0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Ruby】irbとbinding.irbとは

Posted at

はじめに

こんにちは!現在アメリカの大学で語学を学びながら、ソフトウェアエンジニアを目指して独学しているものです。
本日は、Rubyでデバッグに使われる irbbinding.irb について詳しく解説していきます。実務で使われる機会が多いかはわかりませんが、irbは教材でよく登場する基本的なツールですので、使い方を知っておいて損はありません。

irbとは

irb(Interactive Ruby)は、Rubyの対話型シェルです。
対話型シェルとは、ターミナル(黒い画面)に入力された内容をすぐに実行し、結果を表示する環境のことです。
irbではRubyコードを1行ずつ実行し、即座に結果を確認できるため、コードの学習や動作確認、デバッグにとても役立ちます。

通常のプログラム実行では、コードエディタ(例:Visual Studio Codeなど)でスクリプトを書き、コマンドラインでファイルを指定して実行しますが、irbではターミナル上で直接Rubyコードを入力し、結果をその場で確認できます。

irbの基本的な使い方

ターミナルで次のコマンドを入力すると、irbが起動します。

$ irb

起動後、以下のようなプロンプトが表示され、コードを入力してEnterキーを押すと即座に結果が出力されます。

irb(main):001:0> puts "Hello, Ruby!"
Hello, Ruby!
=> nil

=> nil は、putsメソッドの返り値が nil であることを示しています。
また、irb(main):001:0> というプロンプトは、irbの行番号を示しています。

irbを終了するには、exit または quit と入力します
Windowsの場合はCtrldでも同様に終了することができます。

irb(main):002:0> exit

binding.irbとは

binding.irb は、プログラムの任意の場所でirbセッションを開始するメソッドです。
コードの途中に binding.irb を挿入すると、その場所で実行が一時停止し、周囲の変数やメソッドの状態を確認できるようになります。
特にデバッグの際に便利で、変数の値や計算の結果をその場でチェックすることが可能です。

debug.rb
sum = 0 
outcome = {"参加費" => 1000, "ストラップ代" => 1000, "懇親会会費" => 4000}
outcome.each do |pair|
    sum += pair[1]
    binding.irb  # ここで実行を一時停止して、sumやpairの状態を確認できる
end
puts "合計 : #{sum}"

このコードの例で言うと、outcomeハッシュの中身をeachメソッドで1要素ずつ処理し、binding.irbの位置で実行を一時停止できます。
1回目の繰り返しでの pair の値は["参加費", 1000]で、pair[1]には1000が代入され、これがsumに加算されます。

binding.irbがあると、その場でコードを検証でき、変数の値や状態を即座に調べられます。

bind.rb
# 実行時のイメージ
 1: sum = 0 
 2: outcome = {"参加費" => 1000, "ストラップ代" => 1000, "懇親会会費" => 4000}
 3: outcome.each do |pair|
 4:     sum += pair[1]
=>5:     binding.irb
 6: end
 7: puts "合計 : #{sum}"

irb(main):001> sum # binding.irbで止まっている状態
=> 1000
irb(main):002> pair[0]
=> "参加費"
irb(main):003> exit

なお、この例はeachブロック内でbinding.irbが3回実行されるため、exitを3回入力する必要があります。Ctrl + Dでも同様に終了可能です。

もしデバッグでコードを止めたくない場合は、単にputsで確認する方法もあります。

sum = 0 
outcome = {"参加費" => 1000, "ストラップ代" => 1000, "懇親会会費" => 4000}
outcome.each do |pair|
    sum += pair[1]
    puts "#{pair[0]}#{pair[1]}円です"
end
puts "合計 : #{sum}"

# 出力例:
# "参加費は1000円です"
# "ストラップ代は1000円です"
# "懇親会会費は4000円です"
# "合計 : 6000円"

まとめ

irbはRubyの対話型シェルで、リアルタイムでコードの動作確認ができる便利なツールです。さらに、binding.irbを使うことで、プログラムの任意の箇所で実行を一時停止し、変数や計算の結果を確認できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?