state monad版だいたいできた