LoginSignup
10

More than 5 years have passed since last update.

【Ruby基礎文法】puts, p, printの使い方

Last updated at Posted at 2018-08-22

Rubyには、ターミナルなどの画面にログや変数の値などの処理結果を表示するために以下のメソッドが用意されています。

  • puts
  • p
  • print

特に、putspに関しては、ログの表示、テスト、デバッグなど、様々な場面で利用されます。基本的、かつ、非常に汎用性の高いメソッドなので、ぜひ使えるようにしてみてください。

puts

putsは、データを出力する際に、最後に改行が入ります。

文字の表示

putsの基本的な使い方は以下の通りです。

puts "Hello World!!"

以上のように書くと、ターミナルにHello World!!という文字列が表示されます。ここで注意しなければいけないのは、文字列を表示するときは""(ダブルクウォーテーション)で囲むということです。これがないと文字列として認識してもらえずエラーになるので注意してください。

それでは実際に、putsを使ってHello World!!を表示してみましょう。そのためにまずは、Rubyのファイルを作成します。テキストエディタを立ち上げ、command + sで保存しましょう。

上書き保存(最初の一回は名前をつけて保存)

command + s

保存する際、ファイル名はhello.rbにしてください。その時に使用する.rb拡張子と呼ばれるものです。これにより、どういう種類のファイルなのかをコンピュータに認識させることができます。拡張子には、.rbの他にもWordファイルを表す.docxPDFファイルを表す.pdfなどいろんな種類があります。今回は、Rubyのファイルなので拡張子に.rbとつけて保存します。保存先はデスクトップにしてください。

hello.rb

ファイルが保存できたら、hello.rbに以下のコードを書きましょう。また、コードを書いたら必ずcommand + sで上書き保存する癖をつけてください。本当によく使う機能なので、このショートカットキーは覚えていた方がいいです。

hello.rb
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

putspを比較してみると、pを利用するメリットがわかりやすいかと思います。

puts "1"
p "1"

実行結果

1
"1"

以上のように、putsで出力すると1という値が文字列なのか数字なのか判断できないのですが、pで出力するとそれが文字列だとわかります。このように、プログラムの中で使用されているデータがどのデータ型なのかを把握したい場合、pがとても役に立ちます。

print

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
  • print

これらのメソッドは、現場でもいろんな場面で利用されます。うまく使いこなせれば開発が楽になるので、ぜひ使ってみてください。

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
10