ios

    [WatchOS] Tuist로 WatchOS XCode Project 생성하기

    1. WatchOS 개발을 위한 첫 단계 이전까지 iOS App 개발을 위해서 Tuist를 사용했지만, WatchOS App Target으로 Tuist를 생성한 적이 없어서 꽤나 어려웠다. iOS처럼 단순하게 아래처럼 생성하게 된 기본 Project.swift 파일로 destination을 iOS에서 WatchOS로만 바꾸면 해결될 것으로 기대했다. Project는 생성되었을 지 몰라도 정상적으로 빌드 및 실행이 되지 않았다. tuist init {projectName} 이런 삽질을 시간이 지나 까먹어서(..) 다시 하지 않는 불상사를 저지르지 않고자 기록한다! 결론만 보고 싶다면 가장 최 하단에 코드를 남겨 놓으니 참고해주세요! 2. Project.swift 최대한 간결하게 Project.swift를 ..

    [iOS] 메뉴얼은 왜 이미지를 하나만 업로드할 수 있었을까?

    1. 메뉴얼 출생과 함께 시작된 고민 꽤 오랜 시간동안 메뉴얼을 서비스하면서 항상 고민하는 기능이 있었어요. 바로, 이미지를 여러개 선택해서 업로드 할 수 있는 기능입니다. 1-1. 메뉴얼은 왜 이미지를 하나만? 메뉴얼 기획 초기에 타 일기 서비스와의 차별점을 가장 우선적으로 생각했어요. 사실 일기 서비스라는 것은 이미 많은 서비스가 출시되고 많은 사람들이 사용하고 있고, 오랜 시간 사용하던 서비스를 두고 메뉴얼로 오길 바라는 것은 굉장히 어려운 일이었어요. 그리고, 일기를 꼭 일기 서비스에서만 작성하라는 법은 없잖아요? 인스타에 비밀 계정을 통해서 올리기도 하고, 아이폰 기본 메모장, 노션 등 다양한 메모 서비스도 저희에겐 큰 부담이었어요. 특히 인스타그램처럼 사진이 주가 되고 싶지는 않았어요. 줄글과..

    iOS 주니어 개발자가 의존성 관리에 관심을 가지게 된 배경

    1. 의존성 관리에 관심을 가지게 된 계기 우리가 만든 UX/UI로 앱을 만들고 싶다는 상상 하나로 개발을 시작한 디자인 전공생이 벌써 3년차 iOS 개발자가 되었습니다. 그간 많은 것들을 보고 배웠지만 특히 이해가 잘 가지 않는 분야가 있었는데요. 바로 의존성 관리(의존성 주입, 역전)였습니다. 의존성 관리에 대해 어떤 계기로 관심을 가지게 되었는지 적어보고자 합니다. 작년까지만 해도 의존성 관리에 대해서는 굉장히 소홀했던 것 같습니다. 사실 의존성 관리에 대한 고민을 깊게 하지 않았고, 어떻게 풀어내야 할 지도 감이 오지 않았습니다. 그랬던 제가 의존성 관리에 관심을 가지게 된 계기는 모듈화와 TDD였습니다. 회사에서 테스트 코드를 작성하지 않고 일정에 치여 개발을 하다보니 사이드 이펙트와 이슈에서 ..

    [iOS] 유저에게 앱스토어 리뷰 요청을 해보자

    1. 요구사항 체크 리뷰 요청 기능에 대해서는 꽤나 오랜 시간동안 팀 내에서 이야기가 나왔어요. 별점 5점을 받고자 하는 것도 있었지만, 실제로 유저가 사용하면서 느끼고 있는 생각을 듣고 싶었거든요. 그래서 백업 기능 이후에 리뷰 요청 기능에 대해서 개발하자고 팀원과 이야기 하게 되었고, 제가 백업 기능 개발을 하고 있는 시간에 디자이너 팀원들은 리뷰 요청 기능을 먼저 기획/디자인을 시작했어요. 1-1. UI BottomSheet을 통해서 리뷰 요청 팝업이 뜰 수 있도록 하는 요구사항이 핵심입니다! 어느 하나의 뷰에 종속되지 않았기 때문에, 실제로 어떤 뷰에서 띄워야 하는 지가 가장 중요한 요구사항이라고 생각했는데요. 그러기 위해서는 UX Flow를 참고해 어떤 뷰에서 떠야 하는지 자세히 체크해야, Bo..

    [iOS] 출시 후 첫 신규기능 <온보딩> 업데이트 후기

    1. 출시 2달 어땠는지? 메뉴얼이 출시된지 약 2달이 지났습니다. 부끄럽지만 매일 4명에서 많게는 13명(!) 정도가 우리 앱을 사용해주고 계십니다. 유료로 출시하게 되면서 내부적으로 조금 더 책임감을 가지고 개발하게 되는 선순환이 되기는 했지만, 아무래도 무료로 출시할 때보다는 유저 유입 자체가 적을 수밖에 없습니다. 신규 유입은 홍보로 해결할 수 있다고 생각 했는데요. 메뉴얼을 설치하고 사용하게 되면서 얼마나 우리 앱에 남아줄까? 하는게 근본적인 해결책이었습니다. 메뉴얼은 "작성한 일기를 다시 읽는 경험"을 가장 중요하게 생각하는 서비스입니다. 다시 읽기 위해서는 어느정도 작성한 일기가 있어야 하는데, 이 부분이 다소 미흡했던 것 같아요. 우리 서비스에서 진입하고 "이정도면 추천 해줄 일기가 많이 ..

    [iOS] 메뉴얼(Menual)은 RIBs를 어떻게 활용했을까?

    1. 메뉴얼은 어떤 구조를 가져야할까 메뉴얼은 RIBs 아키텍쳐를 도입한 첫 번째 사이드프로젝트였기 때문에, 가장 오랜 시간 고민을 했던 것은 "어떻게 구조를 짜야하는가?" 였습니다. 기존에 진행했던 ViewController-ViewModel을 설계하는 것과는 사뭇 다른 개념이었기 때문에, 독립적이고 기능 단위로 만들기 위해서 더욱 노력했습니다. 또, '게시글 작성'과 '게시글 수정'과 같은 비슷한 기능을 하는 것은 하나의 RIB으로 재활용하고 싶었습니다. RIBs를 도입하기 전에, 이 아키텍쳐를 어떻게 활용하면 가장 효율적이게 사용할 수 있을지 고민했던 것 같습니다. 1-1. 기능 단위로 분류해보자 메뉴얼을 작성하고 확인하기 위해서 어떤 RIB이 필요할 지, 먼저 큰 기능 단위로 분류하고자 했습니다...

    [iOS] 일기장 어플리케이션 메뉴얼(Menual) 출시 회고

    올해 초부터 본격적으로 시작한 사이드프로젝트 'Menual(메뉴얼)'이 앱스토어에 12월 24일 크리스마스 이브에 출시되었습니다.🎉 아무래도 사이드프로젝트를 약 1년동안 진행하게 되면서 약간은 루즈해졌음에도 불구하고, 팀원들이 꾸준히 달려와 준 덕에 기획부터 출시까지 잘 해낼 수 있었던 것 같습니다. 1년동안 메뉴얼을 개발하면서 어떻게 진행하게 되었는지, 어떤 방식으로 의사결정이 되었는지, 그리고 기술 스택은 어떤지 회고하는 시간을 가져보고자 합니다. ‎Menual : 나를 새롭게 하는 일기장, 메뉴얼 ‎한 번쯤 생각해본 적 있으신가요? ‘일기는 왜 적어야 하지…’, ‘매일 적어야만 하나…’ 하고요. 아니면 ‘오늘은 정말 적을만 한 일이 없었는데…’ 하고 일기장을 덮으신 날은 없으신가 apps.apple..

    디모다모 앱스토어 리젝 대응기

    홍익대학교 디지털미디어디자인 졸업작품으로 어플리케이션을 개발하고 있습니다. 12월 18일 온라인 졸업전시 기간에 맞추어 어플리케이션 1차 런칭을 준비하고 있는데, 어플리케이션의 상태(?)를 점검하고자 테스트 릴리즈를 앱스토어 심사에 맡겨보았습니다. 약 3달 동안 어플리케이션의 기조를 잡는데 집중했다면, 지금은 실제로 출시가 가능한 상황인지 점검하고자 했습니다. 애플이 과연 어떤 답을 줄지도 굉장히 걱정되기도 했습니다. 아무래도 상용화를 목적으로 하는 첫 번째 어플리케이션이기도 했고, 관련 경험이 전무했기 때문일지도 모르겠습니다. 앱스토어 첫 번째 심사를 진행하면서 겪었던 리젝 사유 대응에 대해서 포스팅하고자 합니다. 앱스토어 심사 기간 앱스토어 심사 기간에는 24시간 또는 48시간 이내에 모든 심사가 진..

    [iOS] SnapKit 사용해보기

    ☁ SanpKit Download SnapKit/SnapKit A Swift Autolayout DSL for iOS & OS X. Contribute to SnapKit/SnapKit development by creating an account on GitHub. github.com 1. SnapKit을 접하게 된 계기 회사에서 기존 어플리케이션 리팩터링을 결정했다. 현재 어플리케이션은 Obj-C로 되어있기도 했고, 부분 부분만 Swift가 사용되면서 유지보수성이나 추가 기능을 제작할 때 많은 제약사항이 있었고, 이에 따라 퍼포먼스도 좋을 수가 없었다. 현재 환경을 고려해서 UI를 Storyboard를 채택할 것인지, SnapKit을 채택할 것인지 많은 논의가 오갔다. SnapKit을 채택하게 된 가..