オプションのバリデーションを修正
全体的にリファクタリング