本体とSpecを再度リファクタ

細かい変更理由はコミットログにコメントしていきますー。