IOS개발14 DeepCheck 탄생 비화와 MVVM 아키텍처 설계 이 포스팅은 DeepCheck의 시작부터 완성까지의 여정을 기록하는 시리즈의 첫 번째 포스팅이다. 이 프로젝트는 어느 날 갑자기 떠오른 아이디어가 아니다. 오래된 경험에서 비롯된 문제의식과 다가올 미래를 예측하여 오랫동안 준비해온 결과물이다. 모든 것은 아주 단순한, 하지만 개발자로서 떨쳐낼 수 없는 질문 하나에서 시작 되었다. 왜 아이폰에는 쓸만한 하드웨어 점검 앱이 없을까? 오래된 경험, 새로운 기회를 보다개발자 커리어를 블루버드소프트 라는 곳에서 Windows CE 기반의 임베디드 장비들을 다루며 시작했다. 지금은 생소하게 들릴 수 있는 이름이다. 주로 PDA나 산업용 단말기 같은 기기들을 다루었다. 당시 주요 업무 중 하나는, 막 출고된 기기들의 하드웨어가 정상적으로 작동하는지 검증하는 테스.. 2025. 9. 11. 최종 조립 및 완성 : 메인 뷰(View)와 사용자 경험(UX) 향상 좋은 UX는 어떻게 사용자의 궁금증을 먼저 해결해주는가?시작하며 : 단순한 '조립'을 넘어 '경험'을 설계하다지난 포스팅 2025.09.03 - [app/metalens] - 생명을 불어넣는 작업 : 재사용 가능한 UI 컴포넌트(Components) 제작 에서 앱의 얼굴을 구성할 모든 UI 부품(Components)을 완성했다. EmptyStateView부터 ScoreCircleView, SummaryCardView 까지, 각자 하나의 책임만을 다하는 잘 만들어진 '레고 블록'들이다. 이제 남은 작업은 이 블록들을 PhotoInspectorView 라는 큰 판위에 조립하여 하나의 완성된 화면을 만드는 것이다. 하지만 이번 포스팅은 단순히 블록을 조립하는 방법을 설명하는 데 그치지 않는다. 한 걸음 더 .. 2025. 9. 4. 생명을 불어넣는 작업 : 재사용 가능한 UI 컴포넌트(Components) 제작 거대한 View를 잘게 쪼개는 것의 미학 시작하며 : 왜 View를 분리해야 하는가? 이전 포스팅까지의 여정으로 앱의 두뇌(ViewModel)와 심장(Service)을 모두 구현 했다. 로직과 UI의 지휘자 : 뷰모델(ViewModel)과 비동기 처리async/await와 @Published로 우아하게 상태를 관리하는 법시작하며 : 왜 '지휘자'가 필요한가? 이전 포스팅까지의 작업으로, 사진 데이터를 주면 분석 리포트를 뱉어내는 강력한 엔진(PhotoMetadataService)johjo.net 앱의 심장을 만들다 : 메타데이터 분석 서비스(Service) 구현ImageIO 프레임워크를 파헤쳐 사진의 비밀을 캐내다시작하며 : '실제 일'을 하는 녀석의 등장지난 포스팅에서 앱의 뼈대(Model)와 소통 규.. 2025. 9. 3. 로직과 UI의 지휘자 : 뷰모델(ViewModel)과 비동기 처리 async/await와 @Published로 우아하게 상태를 관리하는 법시작하며 : 왜 '지휘자'가 필요한가? 이전 포스팅까지의 작업으로, 사진 데이터를 주면 분석 리포트를 뱉어내는 강력한 엔진(PhotoMetadataService)을 만들었다. 이제 남은 것은 이 엔진을 UI와 연결하는 일이다. 하지만 여기서 많은 개발자들이 함정에 빠진다. View 코드 안에서 직접 서비스 로직을 호출하고, 상태를 관리하려는 시도를 하는 것이다. 이는 마치 레스토랑 홀 직원이 주방에 직접 들어가 요리하는 것과 같다. 결과는 엉망이 될 수밖에 없다. 그래서 ViewModel이라는 '지휘자' 혹은 '셰프'를 둔다. View(홀 직원)는 오직 ViewModel(셰프)에게 "손님이 사진을 골랐습니다"라고 주문만 전달한다. .. 2025. 9. 3. 앱의 심장을 만들다 : 메타데이터 분석 서비스(Service) 구현 ImageIO 프레임워크를 파헤쳐 사진의 비밀을 캐내다시작하며 : '실제 일'을 하는 녀석의 등장지난 포스팅에서 앱의 뼈대(Model)와 소통 규칙(Protocol)을 정의했다. 하지만 아직 앱은 아무일도 하지 못하는 빈 껍데기일 뿐이다. 이제 드디어, 이 뼈대에 살을 붙이고 피를 돌게 할 '심장', 즉 서비스(Service) 레이어를 구현할 차례다. Service는 우리 MVVM 아키텍처에서 '실제 일'을 하는 녀석이다. ViewModel로 부터 "사진 데이터 줄 테니 분석해줘"라는 요청을 받으면, 묵묵히 사진 파일을 파헤쳐 그 안에 숨겨진 비밀(메타데이터)을 캐내고, 우리가 정한 규칙(비즈니스 로직)에 따라 '원본성 점수'를 계산하여 최종 보고서(OriginalityReport)를 만들어내는 역할이다.. 2025. 9. 3. 데이터의 뼈대를 세우다: 모델(Model)과 프로토콜(Protocol) 정의 좋은 코드는 '무엇'을 담을지와 '어떻게' 소통할지를 먼저 정의한다. 시작하며 : '데이터'가 아닌 '모델'을 설계하는 이유이전 포스팅에서 프로젝트의 기반 공사를 마쳤다. 이제 실제 사진을 분석하고, 그 결과를 보여주는 코드를 작성해야 한다. 이때 가장 먼저 해야 할 일은 무엇일까? 바로 '데이터의 청사진'을 그리는 일이다. 이것을 '모델(Model) 설계' 라고 부르는데, 단순히 String, Int 같은 변수 뭉치가 아니라, 앱이 다루는 정보의 의미와 관게를 구조적으로 정의하는 과정이다. 예를 들어, '사진 분석 결과'는 무엇으로 구성되는가? '원본이 라는 증거'는 어떤 정보를 담아야 하는가? 이 청사진이 명확해야, 이후에 만들어질 모든 로직과 UI가 흔들림 없이 견고하게 세워질 수 있다. 이번 .. 2025. 9. 2. 집을 짓기 전 땅 다지기: 프로젝트 설정과 필수 유틸리티 좋은 앱은 잘 만든 AppError 와 Logger 에서 시작된다. 시작하며 : 왜 '기반 공사'가 중요한가?이전 포스팅에서 MetaLens 라는 앱의 청사진(기획과 아키텍처)을 그렸다.2025.09.02 - [app/metalens] - 메타렌즈 프로젝트 소개2025.09.02 - [app/metalens] - 바이브코딩을 위한 MetaLens 코딩 파트너 설정기 이제 본격적으로 코드로 집을 지을 차례다. 이제 몇번 프로젝트를 진행하다 보니 앱의 안정성과 확장성을 책임지기 위해서는 기초적인 설정들이 중요하다는 것을 깨달았다. 이번 포스팅에서는 기능 개발이라는 '인테리어'에 들어가기 전, 반드시 먼저 해야 할 '기반 공사'에 대해 다룬다. 구체적으로는 아래 3가지다. 글로벌 출시를 위한 완벽한 다국어 지.. 2025. 9. 2. 바이브코딩을 위한 MetaLens 코딩 파트너 설정기 최근 7~8월에 바이브코딩을 해보면서 정보성 글의 작성은 GPT로, 코딩 작업은 Gemini로 하는 것으로 마음 먹었다. 요즘 대세는 클로드라서 곧 배송 올 "요즘 바이브 코딩 클로드 코드 완벽 가이드"를 읽어보면 또 클로드로 바뀔 수도 있다. (유독 클로드 관련 책만 많이 출시 되는것 같은 느낌은 기분 탓 인가?) 요즘 바이브 코딩 클로드 코드 완벽 가이드 - 예스24★ 200달러 MAX 플랜으로 매일 10시간씩 실험하여 얻은 노하우를 모두 담았다!★ 어디에도 없는 클로드 코드 최강 팁과 노하우, 레시피를 빠르게 알고 싶다면?★ 이 책으로 천상계에서 개발하는 진www.yes24.com 아무튼, 지금은 Gemini로 한다. ULTRA 요금제도 결제 되어 있으니 안 할 이유가 없다. Gemini에서는 ".. 2025. 9. 2. 바이브필름 프로젝트 소개 앱 개발자들이 쉽게 손대지 않는 영역이 바로 "카메라" 부분인 것 같다. 일반적인 서비스들은 데이터베이스를 연동 한다던가, 자사의 백엔드 API를 연동하여 서비스를 하기 때문에 쉽게 경험하기도 어렵다. 월급을 받으면서 '카메라', '필름', '사진' 관련된 앱을 만든다는 것은 직장인 개발자에게는 꽤 생소한 일일수도 있을것 같다. 앱스토어를 검색해 카메라 관련 앱을 만든 회사들을 훑어보면 금방 알 수 있다. 고도화된 기능을 제공하는 앱이면 빅테크에서 만들었고, 대부분은 소규모 스타트업이나 1인 개발자가 만든 경우가 많다. 잘 만든 앱들은 전 세계적으로 큰 사랑을 받으며 수익화에도 성공하고 있는듯 보인다. 즉, 카메라 앱 개발 경험은 흔하지 않지만, 동시에 큰 기회가 숨어 있는 영역이기도 하다. 디지털 카메.. 2025. 8. 31. README와 .gitignore파일 생성 및 설정 Git으로 버전 관리를 할 때 반드시 마주하게 되는 두 파일이 있다. 바로 README.md 와 .gitignore 파일이다. 이 두 파일은 나중에 프로젝트가 커지거나 협업을 하게 되었을 때 정말 중요한 역할을 하게 된다. 로컬의 Finder 에서 파일들을 생성해도 되지만, 이번 포스팅에서는 GitHub를 이용하여 이 두 파일을 생성하고 Pull 하는 방식으로 진행 한다. README는 프로젝트의 얼굴이다GitHub에 프로젝트를 올렸을 때 처음 보이는 것이 바로 이 README.md 파일이다. 말 그대로 "이 프로젝트를 읽어주세요(READ ME)"라는 의미를 가지고 있고, 프로젝트에 대한 소개, 사용법, 설치법, 기여방법 등을 담는다.GitHub 원격저장소에서 Add a README 버튼을 누름으로써 생.. 2025. 6. 29. 이전 1 2 다음