// ユーザーにアイテムを付与する
    // ユーザーにアイテムを付与するときは直接GrantItemsToUserを呼ぶんじゃなくてこれを呼ぶ
    public static async Task <List <GrantedItemInstance> > GrantItemsToUserAsync(FunctionExecutionContext <dynamic> context, List <string> itemIdList)
    {
        var serverApi = new PlayFabServerInstanceAPI(context.ApiSettings, context.AuthenticationContext);

        // アイテム付与前のインベントリ情報を保持しておく
        var beforeUserInventory = await DataProcessor.GetUserInventoryAsync(context);

        var result = await serverApi.GrantItemsToUserAsync(new GrantItemsToUserRequest()
        {
            PlayFabId = context.CallerEntityProfile.Lineage.MasterPlayerAccountId,
            ItemIds   = itemIdList
        });

        var grantedItemList = result.Result.ItemGrantResults;

        // 付与したアイテムが未所持モンスターだった場合新規でモンスターデータを作成し追加
        var monsterList = grantedItemList.Where(i => ItemUtil.GetItemType(i) == ItemType.Monster).ToList();

        if (monsterList.Any())
        {
            var monsterMasterList = await DataProcessor.GetMasterAsyncOf <MonsterMB>(context);

            var notHaveMonsterList = monsterList.Where(i => !beforeUserInventory.userMonsterList.Any(u => u.monsterId == ItemUtil.GetItemId(i))).ToList();

            // 未所持のモンスターデータを作成する
            foreach (var itemInstance in notHaveMonsterList)
            {
                var level      = 1;
                var monster    = monsterMasterList.First(m => m.id == ItemUtil.GetItemId(itemInstance));
                var status     = MonsterUtil.GetMonsterStatus(monster, level);
                var customData = new UserMonsterCustomData()
                {
                    level  = level,
                    exp    = 0,
                    hp     = status.hp,
                    attack = status.attack,
                    heal   = status.heal,
                    grade  = monster.initialGrade,
                };
                await DataProcessor.UpdateUserMonsterCustomDataAsync(context, itemInstance.ItemInstanceId, customData);
            }
        }

        return(grantedItemList);
    }