 
     :returns: 指定期間内のduration.
     */
-    func _getDurationBetweenAssets(from lhs: (index:Int, time:CMTime), to rhs: (index:Int, time:CMTime)) -> CMTime {
+    func _getDurationBetweenAssets(from lhs: AssetPosition, to rhs: AssetPosition) -> CMTime {
             var sumTime: CMTime = kCMTimeZero
 
         // lhsとrhsが同じアセットの場合は、単純に時間の差を返す


    :returns: 対象となるアセットの位置(インデックス, 時刻)
    */
    private func _findAsset(assets:[AVAsset], from:(index:Int, time:CMTime), offset:CMTime)
        -> (index: Int, time: CMTime)?
    {
        if from.index < 0 || from.index >= assets.count { return nil }
        if offset.isZero { return from }

    :returns: 再生位置(0.0-1.0)。値域外の場合はnilを返す
    */
    func getPositionOf(index:Int, time:CMTime) -> Float? {
        let target = AssetPosition(index:index, time:time)

        /*
        「offset = window * position」であることを利用して位置を求める
