RSS듀오랩스

Name-kit: 모든 이름을 짓는 앱의 방향과 Expo SDK 57 전환

처음 만들려고 했던 것은 크리스천 작명 앱이었습니다. 이름의 뜻과 신앙적 가치를 함께 살피는 도구를 생각했습니다. 그런데 방향을 구체화할수록 작명의 범위를 한 분야에만 묶을 이유가 없다는 쪽으로 생각이 바뀌었습니다.

사람 이름부터 브랜드, 가게, 서비스, 프로젝트, 콘텐츠, 반려동물과 캐릭터까지 이름이 필요한 대상은 계속 생깁니다. 개발 쪽으로 가면 함수명과 변수명도 같은 문제를 품고 있습니다. 그래서 앱 이름을 Name-kit으로 정하고, 목표를 “세상의 모든 이름을 짓는 도구”로 다시 잡았습니다.

크리스천 작명은 하나의 전문 키트가 됐습니다

처음 구상한 크리스천 작명을 버린 것은 아닙니다. 범용 작명 안에 억지로 섞지 않고, 말씀과 신앙 가치, 한자 풀이처럼 고유한 입력이 필요한 전문 키트로 두었습니다.

브랜드나 프로젝트처럼 공통 질문으로 충분한 분야는 대상 설명, 핵심어, 분위기와 언어를 조합하는 공통 흐름을 사용합니다. 반면 크리스천 작명처럼 별도 기준이 필요한 분야는 전용 입력 화면과 생성 규칙을 연결합니다. 어느 쪽에서 만든 이름이든 결과 모델과 보관함은 함께 씁니다.

이 구조라면 새로운 분야를 추가할 때 앱 전체를 다시 만들 필요가 없습니다. 단순한 분야는 키트 메타데이터를 추가하고, 검증 규칙이 복잡한 분야만 전문 흐름으로 확장하면 됩니다.

함수명을 넣자 앱의 구조가 더 선명해졌습니다

개발자 네이밍을 넣으면서 “이름”의 범위를 다시 보게 됐습니다. 함수명, 변수명, 컴포넌트명, 클래스명, 훅, API 경로, 데이터베이스 테이블과 패키지명도 결국 대상의 역할과 맥락을 짧게 압축하는 일입니다.

다만 사람에게 읽히는 이름과 코드 심볼은 제약이 다릅니다. 개발자 키트에는 TypeScript, Python, Swift, Kotlin, Dart와 Go를 넣고, 언어별 표기 관습을 선택하도록 했습니다. 공통 생성 흐름을 공유하되 결과를 평가하는 규칙은 분야에 맞게 분리한 이유입니다.

Expo SDK 57 전환에서 두 번 막혔습니다

프로젝트는 Expo SDK 56으로 시작했지만 바로 SDK 57로 올렸습니다. 현재 조합은 Expo 57.0.13, React Native 0.86.2, React 19.2.3입니다.

첫 번째 문제는 의존성 자동 선택이었습니다. 업그레이드 도중 react-dom 19.2.8이 선택됐는데, 프로젝트의 React는 Expo SDK 57이 요구하는 19.2.3이었습니다. peer dependency가 충돌하면서 설치가 중간에 멈췄습니다. react-dom19.2.3으로 직접 맞추고 react-native-web 버전도 SDK 57 범위로 고정한 뒤 의존성이 정리됐습니다.

두 번째는 시뮬레이터였습니다. 개발 서버를 8082에서 띄웠는데 화면에는 예전 개발 서버의 8081 포트를 불러오지 못했다는 오류가 나왔습니다. 처음에는 SDK 57 번들 문제를 의심했습니다. 실제 원인은 시뮬레이터에 남아 있던 다른 개발 앱이 예전 주소를 잡고 있던 것이었습니다. 그 앱을 종료하고 Expo Go로 프로젝트 주소를 다시 열자 Name-kit 화면이 정상적으로 나타났습니다.

마지막으로 Expo Doctor 21개 검사를 모두 통과했고, TypeScript 검사와 iOS·Android 정적 번들 생성도 확인했습니다. iOS 시뮬레이터에서는 SDK 57 Expo Go로 실제 홈 화면까지 열었습니다.

npm run ios의 의미를 다시 정했습니다

실행 방법을 설명하다 보니 npm run iosnpx expo run:ios가 섞여 있었습니다. 둘의 차이는 도구보다 프로젝트 스크립트에 있습니다. npx는 설치된 Expo 실행 파일을 직접 부르고, npm run iospackage.json에 적어 둔 명령을 실행합니다.

처음에는 npm run ios가 곧바로 네이티브 Xcode 빌드를 실행했습니다. 일상적으로 쓰기에는 무거웠습니다. 그래서 빠른 실행과 네이티브 빌드를 이름으로 구분했습니다.

# 개발 서버와 시뮬레이터
npm run ios
npm run android

# 로컬 네이티브 빌드
npm run ios:native
npm run android:native

# USB로 연결한 실제 단말에 설치
npm run ios:device
npm run android:device

같은 Wi-Fi에서 Expo Go 연결이 되지 않을 때는 npm run start:tunnel, Metro 캐시가 의심될 때는 npm run start:clear를 사용합니다. 명령 자체가 짧아진 것보다 어떤 종류의 실행인지 이름만 보고 판단할 수 있게 된 점이 더 중요했습니다.

실제 단말 검증은 아직 남아 있습니다

현재 확인한 범위는 iOS 시뮬레이터와 양 플랫폼 정적 번들까지입니다. 실제 iPhone과 Android 단말의 네이티브 설치는 아직 검증하지 않았습니다. iPhone에서는 개발자 모드와 코드 서명, Android에서는 SDK와 USB 디버깅 설정을 함께 확인해야 합니다.

앱의 범위는 넓어졌지만 다음 판단 기준은 오히려 단순합니다. 새 키트를 몇 개 더 넣는 것보다, 사용자가 맥락을 입력했을 때 실제로 저장하고 싶은 이름이 나오는지를 먼저 확인해야 합니다. 실제 단말 설치와 함께 이 생성 품질을 다음 단계에서 점검할 생각입니다.

마지막 수정:

공유하실 때는 출처(Duolabs)와 원문 주소를 표시해 주세요.