Swift: [Equatable]?の比較 ref: https://qiita.com/hikarin522/items/1fed2d7ab727cd470d0a
func ==<Element: Equatable>(lhs: [Element]?, rhs: [Element]?) -> Bool {
return lhs.map { l in rhs.map { l == $0 } ?? false }
?? rhs.map { r in lhs.map { $0 == r } ?? false }
?? true
}