public static bool TryParseFromName(string sprintName, out TrelloSprint result)
        {
            try
            {
                var split = sprintName.Split(' ');

                var year = int.Parse(split[0]);

                var dateSplit = split[1].Split('-');

                var startSplit = dateSplit[0].Split('/');
                var startMonth = int.Parse(startSplit[0]);
                var startDay   = int.Parse(startSplit[1]);
                var startDate  = new DateTime(year, startMonth, startDay);

                var endSplit = dateSplit[1].Split('/');
                var endMonth = int.Parse(endSplit[0]);
                var endDay   = int.Parse(endSplit[1]);
                var endDate  = new DateTime(year, endMonth, endDay).AddDays(1).AddSeconds(-1);

                result = GetSprint(startDate);

                // todo: 期待するスプリントフォーマットか検証する

                return(true);
            }
            catch
            {
                result = new TrelloSprint();
                return(false);
            }
        }
        /// <summary>
        /// yyyy MM/dd-MMdd
        /// ってフォーマットのボード名の中から、
        /// 現在の日付内のBoardを取得する。
        /// 存在しなかった場合、新規作成する。
        /// </summary>
        private async Task <IBoard> GetCurrentBoard(DateTime jstDateTime)
        {
            var targetSprint = TrelloSprint.GetSprint(jstDateTime);

            var me = await trelloFactory.Me();

            foreach (var board in me.Boards)
            {
                if (!TrelloSprint.TryParseFromName(board.Name, out var result))
                {
                    continue;
                }

                if (result.Number == targetSprint.Number)
                {
                    return(board);
                }
            }

            // not found baord. create board.
            var newBaord = await me.Boards.Add(targetSprint.Name);

            await newBaord.Refresh();

            await newBaord.Lists.Refresh();

            var listNames = new string[] { "todo", "progress", "done" };

            // listが少なかったら追加する
            while (newBaord.Lists.Count() < listNames.Length)
            {
                await newBaord.Lists.Add($"tmp{newBaord.Lists.Count()}");

                await newBaord.Lists.Refresh();
            }

            for (int i = 0; i < listNames.Length; i++)
            {
                newBaord.Lists[i].Name = listNames[i];
                await newBaord.Lists.Refresh();
            }

            await me.StarredBoards.Add(newBaord);

            await newBaord.Lists.Refresh();

            return(newBaord);
        }