回答: Ruby開発開始時からの基本的な原則として、宣言されるもの(定数、ローカル変数、メソッド)は未定義アクセスはエラー、宣言されないもの(グローバル変数、インスタンス変数、HashやArrayの要素)の未定義アクセスはnilという風に決めました。すごく深い理由があったわけではなくて、Perlを参考にしただけですが。 今思えば、ここをnilでなく、エラーにしておけば間違いが見つけやすかったかもしれませんね。でも、initializeで毎回すべてのインスタンス変数の初期化が強制されるのは、やっぱりRuby的ではなかったかもしれません。 「ローカル変数の宣言?」と思った人もいるかもしれ...