private void SetValidateAttributes()
        {
            KaiCode.SetValidateAttribute(() => KaiCode);
            UserId.SetValidateAttribute(() => UserId);
            Password.SetValidateAttribute(() => Password);

            ErrorKaiCode = KaiCode
                // エラーが発行されるIO<IE>を変換する
                .ObserveErrorChanged
                // エラーがない場合nullになるので空のIEにする
                .Select(e => e ?? Enumerable.Empty<object>())
                // 最初のエラーメッセージを取得する
                .Select(e => e.OfType<string>().FirstOrDefault())
                // ReactiveProperty化
                .ToReactiveProperty();

            ErrorUserId = UserId
                .ObserveErrorChanged
                .Select(e => e ?? Enumerable.Empty<object>())
                .Select(e => e.OfType<string>().FirstOrDefault())
                .ToReadOnlyReactiveProperty();

            ErrorPassword = Password
                .ObserveErrorChanged
                .Select(e => e ?? Enumerable.Empty<object>())
                .Select(e => e.OfType<string>().FirstOrDefault())
                .ToReadOnlyReactiveProperty();
        }