/// <summary>
        ///  表示物の消去を行う
        /// </summary>
        /// <param name="command"></param>
        /// <returns></returns>
        public async Task Clear(ClearCommand command)
        {
            switch (command.ClearTarget)
            {
            case EScenarioClearTargetType.All:
                // RemoveAllEmotion(command.FadeTimeMilliSecond);
                await RemoveAllStand(command.FadeTimeMilliSecond);

                _view.MessagePresenter.ClearText();
                break;

            case EScenarioClearTargetType.Text:
                _view.MessagePresenter.ClearText();
                break;

            case EScenarioClearTargetType.Face:
                _view.ClearFace();
                break;

            case EScenarioClearTargetType.Left:
            case EScenarioClearTargetType.Center:
            case EScenarioClearTargetType.Right:
                // RemoveEmotion(EScenarioStandPositionExtension.GetEnum(
                //     command.ClearTarget.GetName(), command.FadeTimeMilliSecond));
                await RemoveStand(EScenarioStandPositionExtension.GetEnum(
                                      command.ClearTarget.GetName()), command.FadeTimeMilliSecond, true);

                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
        /// <summary>
        ///  立ち絵を表示する
        /// </summary>
        public async Task ShowStand(StandCommand command)
        {
            if (!EScenarioStandPositionExtension.IsContain(command.Position.ToLower()))
            {
                // displayWarningMessage('無効な立ち位置です。 "' + cmd.position + '"');
                return;
            }

            var position = EScenarioStandPositionExtension.GetEnum(command.Position.ToLower());

            // 同じ場所に同一人物が既に表示されている場合は、反転状態を反映するだけ
            // TODO: 表示順を最前面にする
            if (IsSameStandImageAtPosition(command.StandName, position))
            {
                _view.GetStandImageView(position).GetComponent <ImageView>().SetReverse(command.Reverse);
                return;
            }

            await RemoveStand(position, ClearCommand.DefaultFadeTimeMilliSecond / 2, true);

            var sprite = await GetStandImageSprite(command.FilePath);

            if (sprite)
            {
                var imageView = ImageView.Instantiate(command.StandName);
                imageView.SetSprite(sprite);
                imageView.SetAlpha(0);
                imageView.SetReverse(command.Reverse);

                _view.AddStand(imageView, position);
                AdjustStand(imageView.gameObject, position, command);

                await Fade(imageView.Image, imageView.Image.color,
                           command.FadeTimeMilliSecond, 1f, command.IsWait);

                _currentStandNames[position] = command.StandName;
            }
        }