きっかけ 『メタプログラミングRuby』を読み直す。再読して気づいたけど、書いてあることの大半は、Rubyのオブジェクトモデルの解説だ。言い換えると、Rubyにおいてクラスやメソッド、インスタンス変数がどんなふうに作られて、実際にはどこに置かれているのか、メソッドが呼び出された時裏でどのような処理が動いているのか、などについてだ。もちろんというか、RubyのVMがどう動いてるかとかそういうレベルの話じゃなくて、Rubyのソースコードがどのようなモデルに基づいて解釈されるかってことだ、。 それをまとめると、次のようになるようだ。 Rubyのクラス定義やメソッド定義は、宣言じゃない。コンパイル時じゃなくて実行時に『実行されて』クラスやメソッドを定義する。 Rubyの構文には、それと等価なメソッド呼び出しが存在する defによる関数定義と等価なdefine_methodメソッド classによる