웹 소설이나 출판 소설, 게임 스토리 등 내용을 담은 글이라면 모든 상관없이 글을 읽고 느낀 감정에 대한 기록을 남기는 앱.
이어서 감상 수정 기능을 제작하였다, 수정 분기에 관한 정리만 조금 신경쓰면 되는 어렵지 않은 기능이었기에 관련한 화면들에서의 처리에 조금 더 시간이 든 것 같다.
추가로 이전 공유받은 작품에 대해 감상을 적었을 경우 내가 적은 감상과 중복으로 나타나는 문제가 있어 공유 작품에 관한 감상은 자신의 감상을 제하고 가져와 사용하도록 필터링을 걸어두었다.
확실히 아무렇게나 작동시켜 테스트 해보는 것도 디버깅이나 오류 찾기에 좋은 것 같다.
오전에는 팀 프로젝트를 진행하느라 작업량이 적지만 저녁에도 가족 약속이 있으므로 밤에 진행할 수 있다면 더 진행하기로!
어젯밤 중에 간단하게 작품 수정 기능 개발을 진행하여 아침에 빠르게 마무리 진행한 후 STT 기능 도입에 대해 찾아보고 있다.
찾아보며 고민도 생겼다, 과연 어디까지 해당 기능을 도입하는가.
해당 기능에 대해서는 시작, 완료 최소 2가지 멈춤과 취소를 포함하면 최대 4가지의 컨트롤이 필요로 하다.
STT 기능을 개발 중이다, 실제 기기에서 테스트하며 진행하는 도중에 안드로이드는 Android에는 무시할 수 없는 시스템 일시 중지 시간이 있다는 고유의 문제가 있어 위와 같이 버튼을 누른 채 이야기하고 있는 와중에도 듣기가 끊어져 버린다. 🤯
일단 듣기 시간과 휴지 시간을 지정해 주는 걸로 어느 정도 방지가 되긴 하지만 완벽하지는 않다.
IOS 실제 기기에서도 테스트를 진행했다, 다행히 안드로이드와는 다르게 별다른 문제가 발생하지 않았다.
어느 정도 STT의 기본적인 사용법은 익혔으므로 실제 기능 TextField와 연결을 진행해야 하는데 이 경우 Focus 위젯을 통해 각 입력 필드가 포커스 되었을 경우 음성 입력에 대한 버튼을 추가로 만들 것이다.
이후 버튼이 눌러진다면 BottomSheet를 통해 실질적 음성 인식 추가 위젯을 띄우고 진행에 따른 결괏값을 포커스 된 컨트롤러에 입력하는 방식으로 개발을 진행할 예정이다.
추가로 실제 기기들에서 테스트하며 UI들이 생각보다 크게 적용되어 있어서 전체적으로 줄이는 과정도 진행해야 할 것 같다.
다행이라면 텍스트들은 디자인 시스템 적용으로 일괄적 변경이 가능하다는 것.
어제 계획한 대로 Focus 위젯을 통해 각 입력 필드가 포커스 되었을 경우가 아닌 FocusNode를 각 필드에 적용하고 addListener를 통해 포커스가 되면 STT 위젯을 띄우는 방법으로 개발을 진행하였다.
단일로 입력받는 감상 추가의 경우 별다른 문제가 없었지만 타이틀과 설명을 입력받아야 하는 작품 추가에서는 문제가 발생했다.
바텀시트를 만들어 띄우면 이전 선택되어 있던 TextField에 대한 Focus가 false로 변한다는 사실이다. 나름 바텀 시트 자주 사용하는데도 이 정보는 처음 알았다..
Focus는 바텀 시트를 내리고 나면 다시 돌아오기에 Future.delayed
로 즉시 텍스트 입력을 진행하는 것이 아닌 바텀 시트가 내려오고 Focus가 돌아온 후 진행하도록 개선 진행하였다.
처음에는 감상 추가 때와는 다르게 텍스트가 TextField에 추가되지 않아 당황했지만 로그를 찍어보니 원인을 알 수 있었다. 오늘도 로그와 디버그 모드에게 구원받고 있다.
그렇게 완성된 STT 기능은 위와 같다.
우선적으로 메인 기능인 작품 및 감상에는 기능 적용이 완료되어서 코드를 더 다듬고 올린 후 다른 화면들에도 적용 진행해야겠다.
검색 화면에서도 STT 기능을 적용하였다.
또한 위 STT기능 개발 진행하며 발견하였던 작품 중복 오류와 코드를 다듬다가 발생한 감상 화면에서의 작품 선택 불가 문제에 대한 fix를 진행하였다.
이제 남은 기능은 설정 화면의 로그아웃 기능과 회원 탈퇴, 다크 모드 정도이며 추가적인 UI 보완도 진행하면 프로젝트는 마무리할 수 있을 것 같다.
어제 오후쯤 UI 보완도 추가로 진행하였고, 오늘은 운동을 다녀온 후 로그아웃과 회원 탈퇴 기능 개발을 진행하였다.
이제 개발해야 하는 남은 기능은 다크 모드 정도이지만 앱이 기능적으로 아쉽다는 생각이 들어서 추가로 개발하면 좋을 만한 기능으로 뭐가 있을지 고민하면 좋을 것 같다.
현재 생각난 기능은 감상에 대한 공감 이모지 추가 정도이다..
밤중에 잘 사용하는 앱 업데이트를 진행하며 문득 떠올랐다.
처음부터 기능을 많이 넣어두려고 하는 것보다는 앱을 먼저 올린 후 유지 보수하면서 기능 업데이트하는 편이 경험상으로도 더 좋은 것이 아닌가?라는 생각.
협업에서도 원하는 모든 기능을 넣을 수는 없었다, 기획된 사안을 시간 안에 마무리해야 했었으니까. 이 기획은 정해진 마감일은 없었다지만 계속 원하는 기능을 생각하고 붙이기만 진행하면 계속 늘어지기만 할 것 같다는 생각이 들었다.
이전 직장에서 IOS에서 신규 앱을 오픈하는 경험은 진행하였어도 안드로이드에 대한 경험은 없기도 하고 말이다.
그래서 목표를 바꾸기로 했다.
첫째는 앱을 릴리즈 하기, 두 번째는 한두 번이라도 앱에 대한 유지 보수 및 기능 업데이트를 진행해 보기.
내일은 안드로이드 개발자 친구비를 내야겠다.
개발자 계정을 생성하였다, 오늘 다크 모드 개발을 진행하고 가능한 빠르게 앱 검토를 올려볼 예정이다.
다크 모드를 적용하며 앱의 커스텀 theme 설정이 적용되지 않고 계속해서 기본 theme이 적용되는 문제와 맞닥뜨렸다. 꽤나 긴 시간 동안 헤매었지만 문제가 발생하지 않았던 이전 코드와 비교하니 생각보다 어려운 문제가 아닌 단순한 문제였다. 🫨
문서를 따라 쓴 Get.changeTheme(ThemeData.light())
코드가 이미 지정된 사용자 ThemeData를 사용하는 것이 아닌 기본 데이터를 사용해서 적용해 준다는 것이다.
이건 사실 자세히 안 본 내 잘못이라 할 말이 없다... 오늘도 이렇게 자세히 확인하기와 코드 클래스 내 주석 확인하기의 중요성을 알아간다..