実用的なBundle Extension for Jsonファイルロード

extension Bundle {
    func load<T: Codable>(from fileName: String) -> T? {
        guard let url = url(forResource: fileName, withExtension: "json") else { return nil }

        guard let data = try? Data(contentsOf: url) else {
            print("File \(fileName) does not exist.")
            return nil
        }
        
        let decoder = JSONDecoder()
        guard let loaded = try? decoder.decode(T.self, from: data) else {
            print("Failed to decode \(fileName).")
            return nil
        }
        
        print("loaded \(fileName)")
        return loaded
    }
}