             Logger.info(type: .signalingChannel, message: "disconnected from \(String(describing: ws.host))")
 
             if weakSelf.state == .connected {
+                // SignalingChannel で利用する WebSocket が決定した後に、 WebSocket のエラーが発生した場合の処理
+                // ignoreDisconnectWebSocket の値をチェックして SDK の接続処理を終了する
                 if !weakSelf.ignoreDisconnectWebSocket {
                     weakSelf.disconnect(error: error, reason: .webSocket)
                 }
             } else {
+                // SignalingChannel で利用する WebSocket が決定する前に、 WebSocket のエラーが発生した場合の処理
+                // state が .disconnecting, .disconnected の場合もここを通るが、既に SignalingChannel の切断を開始しているため、考慮は不要
+
                 // 接続に失敗した WebSocket が候補に残っている場合取り除く
                 weakSelf.webSocketChannelCandidates.removeAll { $0.url.absoluteURL == ws.url.absoluteURL }
 
+                // 候補が無くなり、かつ SignalingChannel で利用する WebSocket が決まっていない場合、
+                // Sora への接続に失敗したので SDK の接続処理を終了する
                 if weakSelf.webSocketChannelCandidates.count == 0, weakSelf.webSocketChannel == nil {
                     Logger.info(type: .signalingChannel, message: "failed to connect to Sora")
                     if !weakSelf.ignoreDisconnectWebSocket {


            // 最初に接続に成功した WebSocket 以外は無視する
            guard weakSelf.webSocketChannel == nil else {
                return
            }

            Logger.info(type: .signalingChannel, message: "connected to \(String(describing: ws.host))")
            weakSelf.webSocketChannel = webSocketChannel
            weakSelf.connectedUrl = ws.url

            // 採用された WebSocket 以外を切断してから webSocketChannelCandidates を破棄する
            weakSelf.webSocketChannelCandidates.removeAll { $0 == webSocketChannel }

            weakSelf.webSocketChannelCandidates.forEach {
                Logger.debug(type: .signalingChannel, message: "closeing connection to \(String(describing: $0.host))")
                $0.disconnect(error: nil)
            }

            weakSelf.webSocketChannelCandidates.removeAll()
            weakSelf.state = .connected


            }
        }

        // エラー発生時
        ws.internalHandlers.onDisconnectWithError = { [weak self] ws, error in
            guard let weakSelf = self else {
                return
