Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

Ruby辞典

  1. トップページ
  2. Ruby辞典
  3. puts / print / p / pp

puts / print / p / pp

コンソールへ出力するメソッドです。用途によって使い分けることで、デバッグや表示が効率的になります。

構文
# 文字列として出力し、末尾に改行を加えます。
puts 値
puts 値1, 値2  # 複数の引数は1行ずつ出力します。

# 改行なしで出力します。
print 値

# オブジェクトのデバッグ表示を出力します(inspect の結果)。
p 値
p 値1, 値2

# より読みやすい形式でデバッグ出力します(Ruby 2.5以降)。
pp 値
メソッド一覧
メソッド概要
puts値を文字列に変換して出力し、末尾に改行を加えます。配列を渡すと1要素ずつ出力します。
print値を文字列に変換して出力します。改行を加えません。
p『inspect』メソッドの結果を出力します。文字列は引用符付きで表示され、戻り値はオブジェクト自身です。
ppネストしたオブジェクトを読みやすく整形して出力します。デバッグ用途に適しています。
printf書式文字列を使って出力します。C言語の『printf』に相当します。
サンプルコード
# puts は to_s で変換して改行付きで出力します。
puts "こんにちは"   # こんにちは
puts 42             # 42
puts [1, 2, 3]      # 1行ずつ: 1、2、3

# print は改行なしで出力します。
print "A"
print "B"
print "C"
puts               # 改行を入れます → ABC

# p は inspect の結果を出力します(デバッグ用)。
p "こんにちは"      # "こんにちは"(引用符付き)
p nil              # nil
p [1, "two", :three]  # [1, "two", :three]

# puts との違いを比較します。
puts "hello"  # hello(引用符なし)
p "hello"     # "hello"(引用符付き)

# pp でネストしたデータを整形して表示します。
データ = {
  name: "田中",
  scores: [85, 92, 78],
  address: { city: "東京", zip: "100-0001" }
}
pp データ

# printf で書式を指定して出力します。
printf("名前: %-10s 点数: %3d点\n", "田中", 85)
printf("名前: %-10s 点数: %3d点\n", "山田一郎", 92)
概要

用途に応じて出力メソッドを使い分けます。ユーザーへの表示には『puts』や『print』、デバッグには『p』や『pp』が適しています。

『p』は戻り値がオブジェクト自身であるため、メソッドチェーンの途中に挿入してデバッグすることができます。本番コードに『p』や『pp』を残したままにしないよう注意してください。これらはデバッグ専用メソッドで、本番出力には『puts』または適切なロガーを使います。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。