ロジック部分を書き直した