AI로 앱 디자인, "너무 단순해" 한 마디로 운세 앱을 다섯 번 뒤집은 하루
결론부터 말하면, AI한테 "디자인 예쁘게 해줘"라고 하면 처음엔 꼭 어디서 본 듯한 화면이 나오고, "너무 단순해"라는 피드백을 한 번 주고 나서야 진짜 디자인이 나오더라고요. 어제 만든 오늘의 운세 앱을 오늘 하루 동안 다섯 번 고쳤는데, 코드는 여전히 한 줄도 제가 안 건드렸습니다.

어제 글에서 첫 앱으로 오늘의 운세를 정했다고 했는데요, 하루 만에 위젯이랑 알림, 자정 갱신까지 되는 앱이 에뮬레이터에서 돌아가긴 했습니다. 그런데 화면을 다시 보니까 회색 카드에 초록 숫자 하나 떡하니 있는 게, 솔직히 어느 대시보드 템플릿에나 있는 얼굴이었어요. 그래서 오늘은 아예 디자인만 하기로 했습니다. 클로드 코드한테 처음 시킨 건 이거였어요. "모바일 UI/UX 깃헙에서 인기있는거 받아와서 그걸 써 보기도 하고 전체적인 UI 배치를 좀 변경해보자."
클로드가 깃헙에서 Flutter UI 템플릿 중에 별이 제일 많은 저장소(mitesh77/Best-Flutter-UI-Templates, MIT)를 받아서 코드를 읽더니, 2019년 디자인이라 통째로 쓰면 오히려 더 낡아 보인다고 하고는 구조 세 가지만 빌려왔습니다. 카드가 아래에서 순서대로 떠오르는 등장 애니메이션, 스크롤하면 서서히 나타나는 얇은 상단바, 한쪽 모서리만 크게 깎은 카드. 그러고 나서 색을 남보라에 금색으로 바꾸고 점수를 원형 게이지로, 분야별 운세를 2×2 격자로 다시 짰어요. 여기까지 한 시간 정도 걸렸고, 제가 보기엔 이랬습니다.

가운데가 그 1차 결과인데요, 어제보다야 낫지만 "요즘 AI가 모바일 디자인을 좀 더 획기적으로 잘할 줄 알았는데" 싶었어요. 폰트도 그대로고 색만 바뀐 느낌이라, 그대로 말했습니다. "지금 이건 너무 단순해. 지금 폰트도 그대로고 색감이나 그냥 전체적으로 너무 단순해. 디자인적으로 세련되거나 이뻐보이지 않는단말이야."
이 한 마디 뒤에 나온 게 오른쪽 화면입니다. 클로드가 스스로 "1차는 색만 바꾼 수준이었다"고 인정하고 정체성을 새로 잡았는데, 이름을 "밤하늘 타로 카드"라고 붙였더라고요. 바뀐 게 꽤 많습니다. 우선 서체를 바꿨어요. 제목이랑 분야 이름, 운세 문장은 한글 명조인 고운바탕으로, 숫자랑 영문 라벨은 Cormorant Garamond로, 설명 본문만 원래 쓰던 Noto Sans KR로 남겼습니다. 그리고 배경을 카드 안에 가두지 않고 화면 전체에 깔았어요. 먹색 위에 자두색, 남색, 청록색 빛 덩어리 세 개가 아주 천천히 흔들리고 그 위에 별 150개가 각자 깜빡입니다. 카드는 뒤를 흐리게 비치는 유리 질감으로 바꿨고, 총운 점수는 천문 기구처럼 눈금 60개가 있는 가는 금색 링 안에 명조 숫자로 들어갔어요. 또 하나 재밌는 게, 오늘 달이 어떤 모양인지를 계산해서 헤더에 그려 넣었습니다. 2000년 1월 6일 삭을 기준으로 29.53일 주기로 위상을 계산하는 건데, 패키지 없이 30줄 정도 코드로 끝나더라고요. 오늘은 "기우는 달"이라고 나왔습니다.

여기서 방향이 맞다 싶어서 더 밀고 나갔어요. "뒤에 별들이 좀 움직이고 가끔 유성도 지나가게 하면 더 좋을듯, 배경을 약간 좀 더 어둡게"라고 했더니 별이 왼쪽 아래로 천천히 흘러가고 4초에서 10초마다 유성이 하나씩 떨어지게 바꿨습니다. 위 캡처에 헤더 오른쪽을 지나가는 유성이 우연히 잡혔어요. 그 다음엔 배경을 한 단계 더 내리고 총운 카드를 더 투명하게 해달라고 하고, 나머지는 알아서 하라고 맡겼습니다.
알아서 한 것들이 생각보다 많았습니다. 앱 아이콘을 밤하늘 위 금빛 초승달로 만들었고(적응형 아이콘 레이어까지), 위젯도 안드로이드에 내장된 명조로 앱이랑 결을 맞췄어요. 폰트 용량도 줄였는데, 고운바탕 두 개가 16MB였던 걸 KS X 1001 한글 2350자만 남겨서 2.8MB로 만들었습니다. 생년월일을 넣은 상태 화면을 찍으려고 날짜 선택기를 누르는 대신 설정 파일에 직접 값을 써 넣는 꼼수도 쓰더라고요.


물론 막힌 것도 있었어요. 위젯을 새로 짜고 나서 홈 화면에 "Can't load widget"이라고만 뜨고 아무 로그가 없었는데, 원인은 구분선 하나였습니다. 선을 그리려고 쓴 View 요소를 안드로이드 위젯이 허용하지 않아서, 허용되는 FrameLayout으로 바꾸니까 바로 됐어요. 폰트 용량을 줄일 때는 처음에 11172자 전부가 남아서 크기가 안 줄었는데, 파이썬 euc_kr 코덱이 모든 음절을 통과시키는 게 이유였고 2바이트로 인코딩되는 글자만 거르니까 해결됐습니다. 행운 카드가 5픽셀 넘쳐서 빨간 경고가 뜬 것도 있었고, 영어 서체 숫자가 옛 스타일로 들쭉날쭉하게 찍혀서 라이닝 숫자 옵션을 켠 것도 있었어요. 예전 같으면 이런 거 하나하나 검색해서 몇 시간씩 썼을 텐데, 전부 클로드가 원인을 찾고 고치고 다시 빌드해서 캡처까지 보여주는 걸 저는 확인만 했습니다.

마지막엔 출시 준비물까지 만들었어요. 릴리스 서명 키를 만들어서 Gradle에 연결하고 서명된 앱 번들(38.4MB)을 빌드해서 검증했고, 스토어용 아이콘 512, 기능 그래픽 1024×500, 스크린샷 5장, 등록 문안, 개인정보처리방침 초안까지 나왔습니다. 서명 키는 제가 따로 백업해야 한다고 세 번쯤 강조하더라고요. 잃어버리면 앱 업데이트를 영영 못 올리니까요.
하루를 돌아보면, AI 디자인의 첫 결과물을 그대로 받아들이면 안 된다는 게 제일 큰 배움이었습니다. 명조 서체 한 줄 바꾼 게 색을 통째로 바꾼 것보다 효과가 컸고, 그걸 끌어내는 건 "너무 단순해"라는 솔직한 피드백 한 마디였어요. 다음 글에서는 DUNS 번호 받은 이야기랑 구글 플레이 조직 계정 만드는 과정, 그리고 이 앱을 실제로 올리는 데까지 써 보겠습니다.