Using Swift, create a function named "fibonacciProduct" that takes in an integer n and returns the product of the first n Fibonacci numbers. The function should check if n is a valid input (greater than or equal to 1) and return nil if it is not. The function should also handle large inputs and output the result as a BigUInt to ensure accuracy. For efficiency, consider using memoization to avoid redundant calculations. Provide comments to explain your thought process and approach.
This prompt doesn't seem malicious.