controllerとstatemachineの分離をある程度と、その分までのテストケースを書いた。分離するところや追加すべきテストケースはまだありそうだ。