assert と precondition の使い分け