一応、動作は確認
多少のリファクタの必要あり