再帰的にsetできるようにした。
set_defaultsを廃止してset_defaultの引数で挙動を変えることにした。