미미키 팀의 이름은 정말 많은 변천사를 거쳤다. 처음에는 전남친 토스트였고, 그 다음에는 밈무새로 바뀌었으며, 마지막에는 밈 위키백과의 느낌으로 미미키로 정착되었다. 나는 넥스터즈 세션의 절반이 지나도록 밈위키로 알고 있었다... 당황해서 팀원들한테 "이게 어떻게 미미키냐!!! MemeWiki라 적었는데 이게 왜 미미키였냐!! 밈위키 아닐거면 매매위키 아니냐"라고 주장해봤다~
근데 다른 팀원도 브런치에 여전히 미미키라 안하고 밈위키라고 떡하니 회고록에 적어놨다. 동지가 생겼다~
재밌는 밈을 많이, 자세히 알려주는 앱이라니 즐거운 넥스터즈 활동에 걸맞는 주제라고 해서 팀빌딩에 열심히 참여한 결과 들어갔다. 팀명이 자주 바뀌는 것도 팀의 유연성과 창의성을 보여주는 것 같다. 각 팀원들이 서로 다른 아이디어를 제시하고, 그것을 수용하며 발전시켜 나가는 과정이 인상적이었다. 결국 미미키라는 이름으로 정착된 것도 팀의 정체성을 잘 반영한 것 같다.
이전에 했던 개발방식과 개인적으로 많이 다르게 진행했다. 안드로이드 팀원과 컨벤션을 구성하고, 테스트 배포까지의 계획은 평소대로 했지만, AI를 활용한 바이브 코딩(도와줘 코딩x, 해줘 코딩o)을 적극적으로 사용했다. 취업을 하고 나서 회사에서는 레거시 안드로이드 코드가 메인 액티비티와 프레그먼트에 혈관처럼 흐르고 있어서 AI한테 기능을 하나 만들게 하려면 엄청 자세한 주문을 해야하고(그래서 최근에는 자체 AI Rule이 다듬어지고 있다.), 기존 코드 컨벤션이나 셋탑&서버 규격에 잘 맞도록 해야해서 ai의 도움을 받는 쪽에 가까웠다. 하지만 이 프레시한 미미키는 백도화지와 같아서 처음부터 네비게이팅 구조를 바로 만들고, 난감했던 드로잉 컴포넌트 화면의 청사진을 구성하기가 쉬웠다. 처음에는 너무 날로 먹는듯 싶었는데 아니었고
Compose Canvas로 그리기를 구현할 때 detectDragGestures를 써서 터치 이벤트를 처리했는데, 처음에는 어떻게 해야 할지 막막했다. Path 객체로 연속적인 선을 그리는 방식으로 구현했고, StrokeCap.Round와 StrokeJoin.Round를 적용하니까 정말 자연스러운 선이 나왔다. drawingSessionTool을 써서 그리기 중간에 도구가 바뀌지 않도록 한 것도 좋은 아이디어였다. AI의 장점을 가장 많이 느낀 부분은 Path 그리기 방법이 여러 가지가 있는데, AI가 각각의 방법을 빠르게 보여주면서 장단점을 비교해볼 수 있었던 점이었다.
하지만 아무리 AI로 설계를 해도 제스처 사용감이나 타이밍이 어긋나는 문제는 개발자가 디바이스로 테스트하면서 계속 상수값을 바꿔보고, 오프셋 포인트 계산을 수행하는 콜백을 바꿔도 보고...직접 찾아가면서 맞추는 수밖에 없었다. 터치 이벤트의 민감도나 선의 굵기, 투명도 같은 값들을 실제로 테스트해보면서 사용자가 자연스럽게 느낄 수 있는 수치를 찾아야 했다. detectDragGestures의 onDragStart, onDrag, onDragEnd 콜백에서 각각 다른 처리를 해야 하는데, 이 부분에서 터치 포인트의 정확한 좌표 계산이나 드래그 속도에 따른 선의 두께 조절 등이 생각보다 까다로웠다. Canvas의 drawPath 함수에서 Stroke 스타일을 적용할 때도 width, cap, join 등의 속성을 조정하면서 실제 그리기 느낌을 맞춰나가는 과정이 필요했다.
근데 손가락을 따라가면서 path를 그리는 건 차마 구현을 못했다. 사실 이게 진짜 사용감에서 제일 중요한 건데 실패함....그냥 해도 안되길래 던졌 읍읍..! 아마 시간이 더 있었다면 해내지 않았을까 싶다...
개발하면서 안드로이드 렌더링 exception도 많이 보고 ㅂㄷㅂㄷ 취준할 때는 빠르게 패싱했던 이슈들도 자세히 볼 수 있는 기회였다. PixelCopy를 사용한 화면 캡처 과정에서 발생하는 비동기 처리 이슈, Canvas의 onSizeChanged 콜백에서 발생하는 레이아웃 재계산 문제, 그리고 Compose 간의 메모리 관리 이슈 등을 경험하며(대충 ���난리났었다는 뜻) 해결할 수 있었다. 웹뷰와 네이티브 앱 간의 통신은 처음 구현해봐서 좀 헤맸지만 팀원들한테 끈질기게 물어보고 다시 하고 반복한 끝에 해결했다 감사해용.... ❤️
아쉬웠던 점은 그저 내 체력이 안 좋았다는 거였다. 대학생일 때는 몰랐지만 새삼 직장인 참여자들 다들 대단하다는 걸 느꼈다. 안팎으로 정신없던 8주였다. 손가락을 따라가면서 path가 그려지지 않았던 점도 아쉬웠다. 실시간 그리기에서 터치 이벤트의 지연이나 Canvas의 성능 이슈로 인해 부드러운 그리기 경험을 제공하지 못한 것이 가장 큰 아쉬움이다. 이번에는 앱 사용 피드백이 조금 부족했던 감이 있어서 다음 넥스터즈 활동때는 앱 피드백을 좀 더 많이 받을 수 있도록 계획해봐야겠다. 더 많은 시간이 있었다면 더 완성도 높은 안드로이드 앱을 만들 수 있었을 것 같다.
넥나잇 때 개발도 재밌게 하고, 팀 대표로 닌텐도 스위치 레이싱 게임 나갔는데 패했다. 나랑 붙은 분이 1등 해서 다행. 팀원들의 밈 선정 취향이 너무 재미있었다. 그 이후 새벽에는 정줄 놓고 밈 찾으면서 웃었다 이런 넥나잇은 처음이야. 그리고 대망의 발표날 미미키로 카톡방을 도배했다. ㅎㅎ 잘 만들었다고 생각했다.