private IEnumerator GetChat()
        {
            if (APIData.chatId.Equals(""))
            {
                yield break;
            }
            if (!receiveChat)
            {
                Debug.Log("receive chat stopped");
                yield break;
            }
            float waitSeconds = (float)TimeSpan.FromMilliseconds(pollingIntervalMillis).TotalSeconds;

            yield return(new WaitForSeconds(waitSeconds));

            pollingIntervalMillis = 0;
            string chatURI = APIData.ChatURI();

            if (Debug.isDebugBuild)
            {
#if UNITY_EDITOR
                if (showDebugLog)
                {
                    Debug.Log(chatURI);
                }
#elif UNITY_STANDALONE
                Debug.Log(chatURI);
#endif
            }
            UnityWebRequest webRequest = UnityWebRequest.Get(chatURI);
            yield return(webRequest.SendWebRequest());

            string jsonText = webRequest.downloadHandler.text;
            Json.ChatDetails.SerializedItems serializedItems = JsonUtility.FromJson <Json.ChatDetails.SerializedItems> (jsonText);
            if (serializedItems.items != null)
            {
                if (serializedItems.items.Length == 0)
                {
                    noItemsRespondCount++;
                    if (noItemsRespondCount >= noItemsRespondLimit)
                    {
                        noItemsRespondCount   = 0;
                        currentCheckCoroutine = StartCoroutine(GetVideoDetails());
                    }
                }
                else
                {
                    SetNextPageToken(serializedItems);
                    pollingIntervalMillis = serializedItems.pollingIntervalMillis;
                    AddComment(serializedItems);
                }
            }

            /* else if (serializedItems.error != null) {
             *             ErrorDetails details = ErrorMessageResolver.FormatError (serializedItems.error);
             *             if (details.reason.Equals (ErrorMessageResolver.Reason.liveChatEnded.ToString ())) {
             *                 Debug.Log ("LiveChatが終了したため、コメントの取得を停止しました。");
             *                 ClearSettings ();
             *                 yield break;
             *             }
             *         } */
            if (serializedItems.pollingIntervalMillis < defaultPollingIntervalMillis)
            {
                pollingIntervalMillis = defaultPollingIntervalMillis;
            }
            webRequest.Dispose();
            if (liveStatus.liveBroadcastContent.Equals("none"))
            {
                StopReceiveProgress();
                Debug.Log("Liveが終了しているため、コメントの取得を停止しました。");
                yield break;
            }
            currentChatCoroutine = StartCoroutine(WaitForReceiveChat());
        }