         output.alwaysCopiesSampleData = false
 
         // コンポジションからアセットリーダーを作成し、アウトプットを接続
-        if let reader = AVAssetReader(asset: composition, error: &error) {
-            if reader.canAddOutput(output) {
-                reader.addOutput(output)
+        do {
+            let reader = try AVAssetReader(asset: composition)
+            if reader.canAdd(output) {
+                reader.add(output)
             }
             return (reader, duration, displayDuration)
-        } else {
+        } catch {
             NSLog("Failed to instantiate a reader for a composition:\(String(describing: error))")
         }
         

        output.alwaysCopiesSampleData = false

        // コンポジションからアセットリーダーを作成し、アウトプットを接続
        if let reader = AVAssetReader(asset: composition, error: &error) {
            if reader.canAddOutput(output) {
                reader.addOutput(output)
                return (reader, duration, displayDuration)
            }
        } else {
            NSLog("Failed to instantiate a reader for a composition:\(String(describing: error))")
        }
        

        *         └ [videoTrack in AVAsset] : ソースに使うビデオトラック
        */
        let composition = AVMutableComposition()
        do {
            try composition.insertTimeRange(timeRange, of: asset, at: kCMTimeZero)
        } catch {
            NSLog("Failed to insert a video track(from:\(startTime) to:\(endTime)) to composition:\(String(describing: error))")
            return nil
        }

        // フレームの時間を1回/VSYNCにする
        let displayDuration = FrameDurationIsAsIs

        // アセットリーダーに接続するアウトプット(出力口)として、
        // copyNextSampleBuffer()でハングする可能性の低いAVAssetReaderTrackOutputを使う
        let compoVideoTrack = composition.tracks(withMediaType: .video).first!
        let output = AVAssetReaderTrackOutput(track: compoVideoTrack,
                                              outputSettings: [String(describing: kCVPixelBufferPixelFormatTypeKey) : String(describing: kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange),
                                                               String(describing: kCVPixelBufferIOSurfacePropertiesKey) : [:]])

