改めてStruct関連のイディオムについて調べた。Ruby標準のStructクラスを使えばコンストラクタでの面倒な初期化を飛ばせる。以下のクラスBとクラスCは、ほぼ同じ機能を実現する。 class B attr_accessor :var1, :var2 def initialize(var1, var2) @var1, @var2 = var1, var2 end end B.new("bar", 5) => #<B:0x007fae7a93ddb8 @var1="bar", @var2=5> class C < Struct.new(:var1, :var2) end C.new("foo", 3) => #<struct C var1="foo", var2=3> Structを使うとインスタンス変数が生成されるわけではないけど、アクセッサ経由で読み書きできるというインターフェイスは