仮実装が間違っていたので再実装