솔직히 말씀드리면, Apple이 처음 Genmoji를 발표했을 때 ViviDiary의 제품 팀은 다 함께 당황했습니다.
수년간 우리의 전체 추적 철학은 제약 조건 위에 구축되었습니다. 앱을 열고, 5가지 핵심 기분(최고, 좋음, 보통, 낮음, 힘듦) 중 하나를 탭하고, 상황을 추가하기 위해 표준 이모지를 몇 개 탭하면 끝입니다. 우리가 의도적으로 제약을 유지하는 이유는 제약이 곧 속도이기 때문입니다.
하지만 iOS 27은 우리 생태계에 거대한 변화를 가져왔습니다. 갑자기 사용자는 표준 유니코드 이모지 세트에 국한되지 않게 되었습니다. "작은 커피를 들고 있는 지친 비둘기"라고 입력하면 시스템이 즉시 커스텀 이모지를 생성해 줍니다.
우리는 사용자들이 이 기능을 원할 것임을 즉시 알았습니다. 하지만 동시에 무한한 입력값이 패턴 인식을 방해할 것이라는 점도 알고 있었습니다. 모든 데이터 포인트가 완전히 고유한 AI 생성 이미지라면 어떻게 주간 인사이트 대시보드를 구축할 수 있을까요?
ViviDiary를 위한 genmoji 기분 기록 ios 27 기능을 설계하는 방법, 우리가 마주한 기술적 난관, 그리고 왜 결국 이미지 에셋을 저장하는 대신 텍스트 프롬프트 매핑을 선택했는지 그 내부를 들여다봅니다.
요약: ViviDiary가 iOS 27 Genmoji 기분 로그를 처리하는 방법 1. 사용자는 매일 3초 동안 진행되는 기록 과정에서 Genmoji(예: '지친 비둘기')를 선택합니다. 2. 무거운 이미지 에셋 대신 기본 텍스트 프롬프트를 캡처합니다. 3. 프롬프트는 비식별화 처리되며 개인 정보가 제거됩니다. 4. 시스템은 프롬프트를 표준 기분 가치(예: '피곤함', '낮은 에너지')로 매핑합니다. 5. 비식별화된 메타데이터는 주간 인사이트를 생성하기 위해 클라우드 기반 Supabase 아키텍처에 안전하게 저장됩니다.
---
iOS 27의 변화: 이모지가 무한해질 때
문제를 이해하려면 ViviDiary가 내부적으로 어떻게 작동하는지 알아야 합니다. 우리는 모듈형 기분 및 생활 추적기입니다. 유일하게 필수적인 입력은 핵심 기분입니다. 그 외의 모든 것(메모, 음성 메모, 사진, 그리고 우리의 22 수동 이모지 카테고리)은 철저히 선택 사항입니다.
표준 이모지의 장점은 보편적이고 구조화된 데이터 태그 역할을 한다는 것입니다. 한 달 동안 🌧️(비) 이모지와 😞(슬픔) 이모지를 세 번 기록하면, 우리의 주간 Mirror 기능이 상관관계를 부드럽게 지적해 줄 수 있습니다. 여기에는 실제 심리학적 타당성이 있습니다. 이모지 기록 뒤에 숨겨진 과학은 일관된 감정 라벨링에 크게 의존합니다.
Genmoji는 그 일관성을 깨뜨립니다.
ios 27 웰니스 앱 디자인을 위한 초기 베타 테스트에서, 우리는 사용자들이 믿을 수 없을 정도로 구체적인 감정 아바타를 만드는 것을 보았습니다. 한 사용자는 "웃는 얼굴이 그려진 바람 빠진 풍선"을 생성했습니다. 다른 사용자는 "진동하는 카페인 섭취 다람쥐"를 만들었습니다.
이것들은 복잡한 인간의 감정을 매우 정확하고 훌륭하게 표현한 것입니다. 하지만 데이터베이스 입장에서 "바람 빠진 풍선"과 "진동하는 다람쥐"는 그저 무작위 이미지 파일일 뿐입니다. 관계적 가치가 없습니다. 만약 사용자가 이를 일일 기록에 마음대로 넣게 둔다면, ViviDiary를 유용하게 만드는 패턴 발견 기능을 완전히 망가뜨릴 것입니다.
우리가 거부한 것: 원본 이미지 에셋의 함정
우리의 첫 번째 프로토타입은 가장 쉬운 길을 택했습니다. 바로 Genmoji 이미지 에셋을 사용자의 일일 기록에 그대로 저장하는 것이었습니다.
우리는 그것을 구축하고 내부적으로 테스트했지만, 일주일 만에 폐기했습니다.
우리가 이를 거부한 이유는 다음과 같습니다:
- 데이터베이스 비대화: 표준 유니코드 이모지는 약 4 바이트의 저장 공간을 차지합니다. 생성된 Genmoji 이미지 에셋은 대략 50-100 킬로바이트입니다. 사용자가 하루에 커스텀 이모지를 세 개씩 기록한다면, 사용자 한 명당 연간 100MB의 순수 데이터 비대화가 발생합니다. 이를 사용자 기반 전체로 곱하면, 기능적 이점 없이 서버 비용이 치솟게 됩니다.
- 성능 저하: ViviDiary는 빠릅니다. 이전에 홈 화면을 재설계했을 때, 우리는 무거운 UI 요소보다 2초 내 상호작용을 우선시했습니다. 캘린더 뷰를 열 때마다 커스텀 이미지 에셋 그리드를 로드하는 것은 눈에 띄는 끊김 현상을 유발했습니다.
- 블랙박스 문제: 이미지만 저장하면 그 의미를 알 수 없습니다. 주간 Mirror에서 "지친 비둘기"와 "피곤한 강아지"를 그룹화할 수 없습니다. 데이터는 시각적으로 풍부해지지만 분석적으로는 쓸모없게 됩니다.
우리는 문제를 거꾸로 보고 있었다는 것을 깨달았습니다. Genmoji의 가치는 이미지가 아닙니다. 가치는 이미지 뒤에 숨겨진 의도에 있습니다.
프롬프트-가치 매핑 A/B 테스트
이미지를 저장하는 대신, 사용자가 Genmoji를 생성하기 위해 입력한 텍스트 프롬프트를 캡처하기로 했습니다.
Apple의 API를 통해 개발자는 Genmoji의 설명 텍스트에 접근할 수 있습니다. 따라서 사용자가 지친 비둘기를 넣을 때, 우리는 PNG를 저장하지 않습니다. 대신 `"exhausted pigeon holding a tiny coffee"`이라는 문자열을 저장합니다.
하지만 여전히 분류가 필요했습니다. 이는 작년에 기분 이모지를 없애고 텍스트 기반 가치 매핑을 도입하기로 했던 핵심 제품 결정으로 우리를 되돌려 놓았습니다.
우리는 400명의 베타 사용자를 대상으로 A/B 테스트를 진행하여, 이러한 커스텀 프롬프트를 우리의 표준 5단계 기분 척도(최고, 좋음, 보통, 낮음, 힘듦) 및 기존 이모지 카테고리에 어떻게 매핑할 수 있는지 확인했습니다.
* 그룹 A (대조군): 사용자가 Genmoji를 기록하면 원본 이미지로 저장했습니다. 패턴 매핑 없음.
* 그룹 B (실험군): 사용자가 Genmoji를 기록하면 텍스트 프롬프트를 추출하고, 가벼운 비식별화 분류 스크립트를 거쳐 핵심 가치에 매핑했습니다(예: "지친 비둘기"는 "낮은 에너지"로 매핑).
결과:
그룹 B는 14일 동안 기록 습관을 38% 더 잘 유지했습니다. 왜일까요? 주말이 되었을 때 그룹 B는 자신을 실제로 이해하는 Mirror 리포트를 받았기 때문입니다. 앱은 "커스텀 이모지에서 '지침'과 관련된 기록을 남긴 날에 에너지 수준이 낮았음을 확인했습니다"라고 말할 수 있었습니다. 그룹 A는 그저 이상한 사진 갤러리만 받았습니다.
픽셀이 아닌 프롬프트에 집중함으로써, 우리는 앱을 작동하게 만드는 구조화된 데이터를 잃지 않으면서 무한한 커스텀 이모지 기분 추적을 지원할 수 있게 되었습니다.
데이터 아키텍처: Supabase의 비식별화된 클라우드 저장
저널링 앱에 AI나 프롬프트 처리 기능을 도입할 때마다 개인정보 보호에 대해 이야기해야 합니다.
현재 웰니스 앱 분야에는 절대적인 개인정보 보호에 대해 거창한 주장을 하는 거대한 트렌드가 있습니다. 여러분께 완전히 투명하게 말씀드리자면, 우리는 안전한 클라우드 스토리지를 사용하고 텍스트를 비식별화하며, 진정한 개인정보 보호는 데이터 최소화에서 온다고 믿습니다.
ViviDiary는 Supabase 기반의 개인정보 우선 클라우드 아키텍처에 의존합니다. 데이터는 클라우드에 저장됩니다.
왜일까요? 진정한 개인정보 보호는 클라우드가 존재하지 않는 척하는 것에서 오는 것이 아니라, 엄격한 데이터 최소화와 비식별화에서 오기 때문입니다.
"상사 때문에 좌절함"과 같은 Genmoji 프롬프트를 기록할 때, 우리 아키텍처에서 일어나는 일은 다음과 같습니다:
- 프롬프트는 엣지에서 사용자 식별자(UUID)와 분리됩니다.
- 원본 텍스트는 앱을 떠나기 전에 로컬 정규식 필터를 사용하여 식별 가능한 명사를 모두 제거합니다.
- 비식별화된 문자열(`"frustrated with [REDACTED]"`)이 Supabase 백엔드로 전송됩니다.
- 백엔드에서 감정을 분류합니다(가치: 힘듦, 태그: 좌절).
- 분류된 메타데이터와 원본 암호화 프롬프트만 클라우드 데이터베이스에 저장됩니다.
우리가 이를 클라우드에서 처리하는 이유는 배터리 소모 없이 휴대폰의 로컬 프로세서가 처리할 수 있는 것보다 훨씬 정확한 분류 모델을 실행할 수 있기 때문입니다. 우리의 AI 기능은 데이터를 로컬에 숨기기 때문이 아니라, ViviDiary의 핵심 가치가 3초 기록이기 때문에 철저히 선택 사항입니다. AI는 더 깊이 있는 기록을 원하는 날을 위한 선택적 도우미일 뿐입니다. 우리는 사용자의 명시적인 검토 없이 AI 생성 콘텐츠를 저장하거나 확인하지 않습니다.
핵심 기록이 3초 미만이어야 하는 이유
궁극적으로 우리가 만드는 모든 기능은 시간이라는 기준에 따라 그 존재 이유를 증명해야 합니다.
내부 지표를 통해 일일 체크인이 30초를 넘어가면 사용자 유지율이 급격히 떨어진다는 것을 알고 있습니다. 이것이 우리가 압박형 스트릭(연속 기록)을 하지 않는 이유입니다. 완료율도 표시하지 않습니다. "어제 기록을 놓쳤어요!" 같은 죄책감을 유발하는 알림도 보내지 않습니다.
Focus 모듈(기본적으로 꺼져 있음)을 사용하면, 루틴은 그저 알아차리고 싶은 것이고, 할 일은 그저 지워버리는 것입니다. 하루를 놓쳤다고 해서 처벌받지 않습니다.
ViviDiary는 모든 입력 모듈, 무제한 기분 및 이모지 기록, 3개월 캘린더 아카이브, 주간 Mirror, 최대 3개의 루틴 / 5개의 할 일을 완전히 무료로 제공합니다. (월 $2.99 또는 연 $11.99의 프리미엄 티어를 통해 더 깊은 과거 기록과 무제한 Focus 항목을 잠금 해제할 수 있지만, 핵심 경험은 완전히 무료입니다).
Genmoji 통합은 이 전체 과정을 느리게 만들 가능성이 있었습니다. 사용자가 완벽한 커스텀 이모지를 만드는 데 5분을 허비하며 길을 잃기 쉬웠기 때문입니다.
이를 방지하기 위해 우리는 Genmoji 흐름을 제스처 기반 기분 기록 시스템에 깊이 통합했습니다. 핵심 기분으로 스와이프하면 키보드에 최근 사용한 Genmoji가 표준 이모지와 함께 즉시 나타나고, 탭 한 번으로 기록이 완료됩니다.
새로운 것을 생성하는 데 시간을 쓰고 싶다면 그렇게 할 수 있습니다. 하지만 마찰 없는 기록 경로는 여전히 3초 미만으로 유지됩니다.
다음 단계
현재 TestFlight 베타 그룹에 프롬프트-가치 매핑을 배포하고 있습니다. 가장 큰 과제는 사용자가 "행복한 눈물을 흘리는 광대" 같은 Genmoji를 생성했을 때, 분류 엔진이 이것이 '좋은 날'인지 '힘든 날'인지 확신하지 못하는 것과 같은 예외 상황을 처리하는 것입니다.
하지만 그것이 제품 디자인의 재미있는 부분입니다. 제약을 만들면 사용자는 그것을 깨뜨릴 아름다운 방법을 찾아내고, 우리는 시스템을 조정하여 따라잡는 것이죠.
iOS 27이 정식 출시되면 사용자들이 커스텀 이모지와 어떻게 상호작용하는지에 대한 더 많은 데이터를 공유할 예정입니다. 그때까지 기록을 빠르게 유지하시고, 스트릭이 끊기는 것에 대해 걱정하지 마세요.



