     public func start(format: AVCaptureDevice.Format,
                       frameRate: Int,
                       completionHandler: @escaping ((Error?) -> Void)) {
-        guard !isRunning else {
-            completionHandler(CameraVideoCapturer.unexpectedIsRunningError(action: "start", isRunning: isRunning))
+
+        guard CameraVideoCapturer.current != nil else {
+            completionHandler(SoraError.cameraError(reason: "CameraVideoCapturer.current should be nil to execute CmaeraVideoCapturer.start"))
             return
         }
         

    
    func change(format: AVCaptureDevice.Format? = nil, frameRate: Int? = nil, completionHandler: @escaping ((Error?) -> Void)) {
        guard let current = CameraVideoCapturer.current else {
            completionHandler(CameraVideoCapturer.unexpectedIsRunningError(action: "stop", isRunning: isRunning))
            return
        }
        

    // MARK: インスタンスの取得
    
    /// シングルトンインスタンス
    /// shared は廃止されました。
    @available(*, unavailable, message: "shared は廃止されました。")
    public static var shared: CameraVideoCapturer?
    
    /// 利用可能なデバイスのリスト
    /// 名称が devices に変更されました
    @available(*, unavailable, renamed: "devices")
    public static var captureDevices: [AVCaptureDevice] {
        get { return RTCCameraVideoCapturer.captureDevices() }
    }
 
    /// 利用可能なデバイスのリスト
    /// RTCCameraVideoCapturer.captureDevices を返す
    public static var devices: [AVCaptureDevice] {
        get { return RTCCameraVideoCapturer.captureDevices() }
    }
    
    /// 前面のカメラに対応するデバイス
    public private(set) static var front: CameraVideoCapturer = CameraVideoCapturer(device: device(for: .front) ?? nil)

    /// 背面のカメラに対応するデバイス
    public private(set) static var back: CameraVideoCapturer = CameraVideoCapturer(device: device(for: .back) ?? nil)

    /// 起動中のデバイス
    public private(set) static var current: CameraVideoCapturer?
    
    /// RTCCameraVideoCapturer が保持している AVCaptureSession
