/// <summary>
        /// 部屋を作成する。
        /// </summary>
        /// <param name="roomName">作成したい部屋の名前</param>
        private void OnClickCreateRoom(string roomName)
        {
            // ActionにUniTaskを直接紐づけることは出来ないので、内部でUniTaskの処理を呼び出す
            CreateRoomAsync().Forget();

            async UniTask CreateRoomAsync()
            {
                // UnityのRemoteConfigを使ってテーマ一覧を取得する
                var fetchThemeResponse = await new FetchThemeApi().Request();

                if (fetchThemeResponse.Result != FetchTheme.Result.Succeed)
                {
                    Debug.LogError("テーマの取得に失敗");
                    return;
                }

                // CreateRoomで渡されたroomNameを使っている(クロージャという概念)が、ややこしいので気にしないで
                var createRoomRequest = new ConnectData.CreateRoom.Request {
                    RoomName  = roomName,
                    ThemeData = fetchThemeResponse.ThemeData
                };
                var createRoomResponse = await new CreateRoomApi().Request(createRoomRequest);

                // レスポンスが成功ならゲームステートに遷移する
                if (createRoomResponse.Result == ConnectData.CreateRoom.Result.Succeed)
                {
                    var arg = new GameGroupArg {
                        RoomGuid = createRoomResponse.RoomGuid
                    };
                    parentStateMachine.RequestChangeState(GroupState.Game, arg);
                }
            }
        }
        /// <summary>
        /// 部屋に参加する。
        /// </summary>
        /// <param name="roomGuid">参加したい部屋のGUID</param>
        private void OnClickJoinRoom(Guid roomGuid)
        {
            // ActionにUniTaskを直接紐づけることは出来ないので、内部でUniTaskの処理を呼び出す
            JoinRoomAsync().Forget();

            async UniTask JoinRoomAsync()
            {
                // JoinRoomで渡されたroomGuidを使っている(クロージャという概念)が、ややこしいので気にしないで
                var request = new ConnectData.JoinRoom.Request {
                    RoomGuid = roomGuid
                };
                var response = await new JoinRoomApi().Request(request);

                // レスポンスが成功ならゲームステートに遷移する
                if (response.Result == ConnectData.JoinRoom.Result.Succeed)
                {
                    var arg = new GameGroupArg {
                        RoomGuid = roomGuid
                    };
                    parentStateMachine.RequestChangeState(GroupState.Game, arg);
                    return;
                }

                // レスポンスが失敗なら部屋一覧を更新する
                joinRoomPresenter.UpdateRoomList();
            }
        }