mac 😈 ~ % irb
irb(main):001:0> どこ?なに?

Rubyではクラス構文やモジュール構文に囲まれていない1番外側の部分のことを(irbでは起動した直後にいる場所)トップレベルという。 そして、トップレベルにはmainという名前のObjectクラスのインスタンスがselfとして存在している。

mac 😈 ~ % irb
irb(main):003:0> self
=> main
irb(main):004:0> self.class
=> Object

よって、

  • どこ? = トップレベル
  • なに? = Objectクラスのインスタンス

ちなみに、トップレベルでpメソッドyaputsメソッドが使えるのは、ObjectクラスがKernelモジュールをincludeしているため。 <- 呼び出し方はクラスメソッド(クラスの得意メソッド)になっているので、正確にはextendしている?? *Kernelモジュールにpputsメソッドが含まれている。