         下記コード（AVMutableCompositionにアセットをそのまま入れる）を使用する。
         */
         let composition = AVMutableComposition()
-        if !composition.insertTimeRange(timeRange, ofAsset: asset, atTime: kCMTimeZero, error: &error) {
+        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
         }

        rate:Float=1.0)
        -> (reader:AVAssetReader, duration:CMTime, frameInterval:CMTime)!
    {
        var error: NSError? = nil
        var endTime = endTime

        assert(rate>0.0, "Unable to set rate less than or equal to 0.0!!")

        output.alwaysCopiesSampleData = false

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