Rubyには、ターミナルなどの画面にログや変数の値などの処理結果を表示するために以下のメソッドが用意されています。
- puts
- p
特に、putsとpに関しては、ログの表示、テスト、デバッグなど、様々な場面で利用されます。基本的、かつ、非常に汎用性の高いメソッドなので、ぜひ使えるようにしてみてください。
puts
putsは、データを出力する際に、最後に改行が入ります。
文字の表示
putsの基本的な使い方は以下の通りです。
puts "Hello World!!"
以上のように書くと、ターミナルにHello World!!という文字列が表示されます。ここで注意しなければいけないのは、文字列を表示するときは""(ダブルクウォーテーション)で囲むということです。これがないと文字列として認識してもらえずエラーになるので注意してください。
それでは実際に、putsを使ってHello World!!を表示してみましょう。そのためにまずは、Rubyのファイルを作成します。テキストエディタを立ち上げ、command + sで保存しましょう。
上書き保存(最初の一回は名前をつけて保存)
command + s
保存する際、ファイル名はhello.rbにしてください。その時に使用する.rbは拡張子と呼ばれるものです。これにより、どういう種類のファイルなのかをコンピュータに認識させることができます。拡張子には、.rbの他にもWordファイルを表す.docxやPDFファイルを表す.pdfなどいろんな種類があります。今回は、Rubyのファイルなので拡張子に.rbとつけて保存します。保存先はデスクトップにしてください。
hello.rb
ファイルが保存できたら、hello.rbに以下のコードを書きましょう。また、コードを書いたら必ずcommand + sで上書き保存する癖をつけてください。本当によく使う機能なので、このショートカットキーは覚えていた方がいいです。
puts "Hello World!!"
ではさっそく、hello.rbの中に記述したコードをターミナルから実行してみましょう。まずは、cdコマンドを使用して、ターミナルでデスクトップに移動します。
cd desktop
移動ができたら、以下のコマンドを入力してください。
ruby hello.rb
実行結果
Hello World!!
数字の表示
putsを使って数字を表示するときは以下のように書きます。文字列のように""を書く必要はありません。number.rbを作成し、以下のコードを書いて実行してみましょう。実行する際は、cdコマンドを使用してファイルのある場所まで移動することを忘れず行ってください。もし、デスクトップに移動したい場合は、以下のコマンドを入力します。
cd desktop
作成したファイルに、以下のコードを書いてください。
puts 1
実行結果
1
以下のように書くと式を自動で計算し、その結果を出力してくれます。
puts 1 + 3
実行結果
4
このように、Rubyでは足し算した結果をputsで出力することもできます。また、足し算だけでなく、引き算、掛け算、割り算などの計算も行えます。良い機会なので、Rubyでの四則演算についてもついでに理解しておきましょう。
四則演算
Rubyでの四則演算には以下の種類があり、計算する時に使用される記号は演算子と呼ばれます。
| 演算子 | 内容 | 例 |
|---|---|---|
| + | 足し算(加算) | 2 + 2 |
| - | 引き算(減算) | 3 - 3 |
| * | かけ算(乗算) | 4 * 4 |
| / | 割り算(除算) | 5 / 5 |
ではさっそくputsを利用し、四則演算の計算結果を表示してみましょう。
puts 2 + 2
puts 3 - 3
puts 4 * 4
puts 5 / 5
実行結果
4
0
16
1
もちろん、演算子は複数続けて記述することもできます。
puts 2 + 2 + 2
ただし、文字と数字を続けて表示する場合、以下のように書くとエラーになります。
puts "2 + 2 = " + 4
実行結果
TypeError: no implicit conversion of Fixnum into String
その理由は、「文字」と「数字」という種類の異なるデータで計算を行おうとするため、正常に処理することができなくなってしまうからです。もし、上記のやり方でエラーを回避したい場合は、to_sメソッドを使用して数字を文字に変換してあげます。
puts "2 + 2 = " + 4.to_s
実行結果
2 + 2 = 4
このように、「文字」と「数字」という種類の異なるデータを表示する場合は特別な変換をしてあげる必要があります。そして、変換が必要かどうかを判断できるようなるためにはオブジェクトの種類を理解しておく必要があります。
オブジェクト
Rubyには、以下のようなクラスが存在します。一度に全て覚える必要はないですし、使っていくうちにだんだん覚えるものなので、最初は「こういうクラスがあるんだな」くらいの認識で大丈夫です。さらっと確認してみてください。
| クラス | オブジェクト名 |
|---|---|
| 整数 | Integer |
| 少数 | Float |
| 文字列 | String |
| 配列 | Array |
| 連想配列 | Hash |
| true | TrueClass |
| false | FalseClass |
| nil(存在なし) | NilClass |
それぞれのデータ型に対応するオブジェクトは、.classというメソッドで確認することができます。#の部分はコメントを記述するときの書き方で、それを書いた行はプログラムのコードとして認識されません。なので、好きなように自分のメモを残すことができ、コードがかなり読みやすくなります。ぜひ使用してみてください。
# 整数
puts 1.class
# 少数
puts 1.0.class
# 文字列
puts "文字列".class}
# 配列
puts [1, 2, 3].class
# 連想配列
{"key" => "value"}.class
# true
true.class
# false
false.class
# nil(存在なし
nil.class
出力結果
Fixnum
Float
String
Array
Hash
TrueClass
FalseClass
NilClass
プログラミングでは以上のようなクラスの違いを意識する必要がありますが、今は「文字列」と「数字」だけ把握していれば大丈夫です。
p
putsの場合は出力されたデータがどのデータ型かわかりませんでした。しかし、pメソッドを利用すると、データ型の種類を確認することができます。
p "こんにちは"
p 1
実行結果
"こんにちは"
1
putsとpを比較してみると、pを利用するメリットがわかりやすいかと思います。
puts "1"
p "1"
実行結果
1
"1"
以上のように、putsで出力すると1という値が文字列なのか数字なのか判断できないのですが、pで出力するとそれが文字列だとわかります。このように、プログラムの中で使用されているデータがどのデータ型なのかを把握したい場合、pがとても役に立ちます。
printは、改行を行わずに処理結果を表示するメソッドです。そこまで使用頻度は高くないので、特に意識して覚える必要はありません。printに関しては、putsと比較すると違いがわかりやすいので以下のコードを書いてみましょう。
puts "私の"
puts "名前は"
puts "神里です。"
puts "-----------"
print "私の"
print "名前は"
print "神里です。"
複数のデータを出力
puts p printに関しては、複数の値を出力させることも可能です。
puts "お", "は", "よ", "う"
p "お", "は", "よ", "う"
print "お", "は", "よ", "う"
実行結果
お
は
よ
う
"お"
"は"
"よ"
"う"
おはよう
ヒアドキュメント
複数行の文字を出力したい場合、もちろんputsでも可能なのですが、ヒアドキュメントを使用するともっと楽になります。ヒアドキュメントの基本的な書き方は以下の通り。
puts <<~TEXT
私の
名前は
神里です
TEXT
実行結果
私の
名前は
神里です
putsと比べると、ヒアドキュメントの方がはるかに楽なのがわかるかと思います。
# putsを使用した場合
puts "おはよう"
puts "こんにちは"
puts "こんばんは"
# ヒアドキュメントを使用した場合
puts <<~TEXT
おはよう
こんにちは
こんばんは
TEXT
実行結果
おはよう
こんにちは
こんばんは
おはよう
こんにちは
こんばんは
ちなみに、ヒアドキュメントを使用する際に文字列をTEXTで囲んでいるのですが、こちらは同じワードを使用して入れば記号以外ならなんでも大丈夫です。
puts <<~TEXT
おはよう
こんにちは
こんばんは
TEXT
puts <<~亜亜亜
おはよう
こんにちは
こんばんは
亜亜亜
puts <<~あああ
おはよう
こんにちは
こんばんは
あああ
puts <<~aaa
おはよう
こんにちは
こんばんは
aaa
puts <<~111
おはよう
こんにちは
こんばんは
111
実行結果
おはよう
こんにちは
こんばんは
おはよう
こんにちは
こんばんは
おはよう
こんにちは
こんばんは
おはよう
こんにちは
こんばんは
おはよう
こんにちは
こんばんは
途中の改行も、ちゃんと反映されます。これをputsでやるとかなりめんどくさい。
# putsを使用した場合(空文字で改行)
puts "おはよう"
puts ""
puts "こんにちは"
puts "こんばんは"
# ヒアドキュメントを使用した場合(Enterで改行)
puts <<~TEXT
おはよう
こんにちは
こんばんは
TEXT
実行結果
おはよう
こんにちは
こんばんは
おはよう
こんにちは
こんばんは
以上のように、ヒアドキュメントを利用するとputsを連打するより複数行のデータ出力がかなり楽になります。
まとめ
今回は、入出力に関して以下のメソッドについて学びました。
- puts
- p
これらのメソッドは、現場でもいろんな場面で利用されます。うまく使いこなせれば開発が楽になるので、ぜひ使ってみてください。