オブジェクトを整形していい感じに表示してくれるpp

rubyで文字列を出力するにはprint, puts, p など色々ありますが、デバッグで特に便利なのがppです。

以下のようなオブジェクトの出力をしてみましょう。

class Hoge
  def initialize
    @hoge = 'hoge'
    @fuga = ['fuga1', 'fuga2', 'fuga3']
    @piyo = {:p1=>'piyo1', :p2=>'piyo2'}
  end
end

hoge = Hoge.new

pの場合

p hoge

出力結果は

#<Hoge:0x28451c6c @hoge="hoge", @piyo={:p2=>"piyo2", :p1=>"piyo1"}, @fuga=["fuga1", "fuga2", "fuga3"]>

これくらいならまだ良いですが、オブジェクトが大きくなってくると、見づらいですね。

ppの場合

ppは組み込みではないのでrequireが必要です。

require 'pp'
pp hoge

出力結果は、

#<Hoge:0x28451c6c
 @fuga=["fuga1", "fuga2", "fuga3"],
 @hoge="hoge",
 @piyo={:p2=>"piyo2", :p1=>"piyo1"}>

改行、インデントしてくれるのでとても見やすいですね。

これは便利!