クモのようにコツコツと

フロントエンドエンジニア イイダリョウの技術ブログ。略称「クモコツ」

【Ruby】文字列や計算の出力(putsメソッド、Mathモジュール)

Rubyの続きです。前回は最新版のRubyをインストールするところまでをやりました。今回は文字列や計算の出力をやってみます。ターミナルのIRB(REPL)だけでなく、rbファイルからの実行もしてみました。rbファイルの実行ではputsメソッドの実行が必要でした。計算ではMathモジュールも使いました。それではいきましょう!

【目次】

※Ruby/Ruby on Railsを習得するためにやったこと まとめ qiita.com

文字列の出力:ターミナルで実行(putsなしでOK)

「20分ではじめるRuby」の内容をローカル環境でやってみる。

※参考:20分ではじめるRuby

ターミナルを立ち上げてirbコマンドを実行するとRubyのREPLモードであるIRB(Interactive Ruby)に切り替わる。

% irb
irb(main):001> 

リファレンス>irb

※参考:library irb (Ruby 3.3 リファレンスマニュアル)


何か文字を打ってみるが、そのままではエラーになる。メソッドを実行されていると解釈され「そんなメソッドはないよー」となるようだ。

irb(main):001> はろお・るびぃ
(irb):1:in `<main>': undefined local variable or method `はろお・るびぃ' for main (NameError)
    from <internal:kernel>:187:in `loop'
    from /Users/xxx/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.0/exe/irb:9:in `<top (required)>'
    from /Users/xxx/.rbenv/versions/3.3.0/bin/irb:25:in `load'
    from /Users/xxx/.rbenv/versions/3.3.0/bin/irb:25:in `<main>'

文字列なので" "で囲ってみる。今度は文字列がそのまま出力される。

irb(main):002> "はろお・るびぃ"
=> "はろお・るびぃ"

「20分ではじめるRuby」によれば、これはプログラムではなく、式の実行結果の表示。

何が起こったのでしょうか。世界一短い “Hello World” プログラムを書いたのでしょうか? ちょっと違います。2行目はIRBが最後の式を実行した結果を教えてくれているのです。


文字列の出力のためにはputsメソッドを実行する。

irb(main):003> puts "はろお・るびぃ"
はろお・るびぃ
=> nil

" "がなくなり、=> nilが表示されている。

putsはRubyで何かを出力する基本的なコマンドです。 では、=> nilは何でしょうか? これはこのコマンドの評価結果です。 putsは必ずnilを返します。nilは、「まったく何もない」ことを表すRubyの「値」です。

リファレンス>puts

※参考:Kernel.#puts (Ruby 3.3 リファレンスマニュアル)

文字列の出力:rbファイルで実行(puts必要)

「20分ではじめるRuby」では引き続きirbを使っているが、やったことをGitの記録に残すため、rbファイルで実行してみる。rbファイルの実行方法は「20分ではじめるRuby」の3ページ目にでてくる。

※参考:20分ではじめるRuby


rbファイルに先ほどの文字列のputsあり、なしバージョンを書いてみる。putsなしは「!」、putsありは「!!」を付ける。

"はろお・るびぃ!"
puts "はろお・るびぃ!!"

※参考:get-started-with-ruby-in-20-minutes/ri20min_1.rb at main · ryo-i/get-started-with-ruby-in-20-minutes · GitHub


rbファイルではrubyコマンドを実行する(ruby ファイル名

% ruby ri20min_1.rb
はろお・るびぃ!!

putsあり(「!!」付き)だけが出力される。rbファイルではputsが必要なようだ。

リファレンス>rb

※参考:Rubyの起動 (Ruby 3.3 リファレンスマニュアル)

以降、rbファイル上で動作確認をしたいため、putsを付けて記述していく。

計算の実行

次にいろいろな計算を実行してみる。

# 計算式
puts "足し算:3+2"
puts 3+2

puts "引き算:3-2"
puts 3-2

puts "掛け算:3*2"
puts 3*2

puts "べき乗:3**2"
puts 3**2

puts "割り算:3/2"
puts 3/2

puts "余り:3%2"
puts 3%2

※参考:get-started-with-ruby-in-20-minutes/ri20min_2.rb at main · ryo-i/get-started-with-ruby-in-20-minutes · GitHub


rubyコマンドの実行結果

 % ruby ri20min_2.rb
足し算:3+2
5
引き算:3-2
1
掛け算:3*2
6
べき乗:3**2
9
割り算:3/2
1
余り:3%2
1

計算式の書き方はJSとだいたい共通しているようだった。

※参考:演算子式 (Ruby 3.3 リファレンスマニュアル)

Mathモジュールの実行(sqrt())

次にMathモジュールを実行してみる。

puts "平方根:Math.sqrt(9)"
puts Math.sqrt(9)

puts "変数a:3 ** 2"
puts a = 3 ** 2

puts "変数b:4 ** 2"
puts b = 4 ** 2

puts "変数a+b"
puts a+b

puts "平方根:Math.sqrt(a+b)"
puts Math.sqrt(a+b)

※参考:get-started-with-ruby-in-20-minutes/ri20min_3.rb at main · ryo-i/get-started-with-ruby-in-20-minutes · GitHub


rubyコマンドの実行結果

 % ruby ri20min_3.rb
平方根:Math.sqrt(9)
3.0
変数a:3 ** 2
9
変数b:4 ** 2
16
変数a+b
25
平方根:Math.sqrt(a+b)
5.0

Mathは数学関係のモジュール関数

※参考:module Math (Ruby 3.3 リファレンスマニュアル)

sqrt()は平方根を返す。

※参考:module Math (Ruby 3.3 リファレンスマニュアル)

abなどは変数。Rubyの変数は頭に何も付けなくていいようだ(JSではconstletなどを付けていた)

※参考:変数と定数 (Ruby 3.3 リファレンスマニュアル)

最後に

ということで、今回は下記を行なってみました。

  • 文字列の出力
  • irbとrbファイルの比較(rbファイルはputsメソッドが必要)
  • 計算式の実行
  • Mathモジュールの実行(sqrt()で平方根を返す)

次はメソッドの定義に入っていきたいと思います。それではまた!

※Ruby/Ruby on Railsを習得するためにやったこと まとめ qiita.com