いろいろバグあったので手直し。