퀘스트 | 프로젝트 회고 | 행운을 기록해요, [로또일기] 앱 개발과 출시 후기

행운을 기록해요, [로또일기] 앱 개발과 출시 후기
프로젝트 회고

행운을 기록해요, [로또일기] 앱 개발과 출시 후기

#로또 #로또일기 #기록 #복권기록 #카카오맵SDK2 #동행복권API #Realm #IOS개발하기 #1인개발 #개발회고

작성일 : 24.04.07 08:33

0

0

0

👉 본문을 50%이상을 읽으면 '여기까지다' 퀘스트가 완료됩니다(로그인 필수)

프로덕트명

로또일기

개발기간

-

로또 일기, 당신의 행운을 기록하세요 당신은 오늘 로또를 사면서 무엇을 꿈꾸셨나요? 우리의 삶에서 희망을 품고 로또를 구매하는 순간이 주는 작은 설렘이 있습니다. '로또 일기' 앱은 그 설렘과 희망을 담아, 당첨되면 실현하고 싶은 꿈들을 기록하고, 행운을 찾아가는 여정을 돕는 친구가 되어 드립니다.

개발 회고

😀 자신과 팀소개를 부탁드립니다.

안녕하세요:) iOS 앱 개발자를 꿈꾸는 신정연(매들린)입니다.

작년 하반기부터 iOS 개발을 본격적으로 시작해서, 최근에 개인 앱 프로젝트로 <로또일기>를 출시했습니다.

저는 작년 애플 디벨로퍼 아카데미 2기를 수료하고, 현재는 새싹 교육과정을 이수하는 중입니다. 

사람들과 함께 지식과 경험을 공유하는 것을 잘해서, 협업을 좋아하고, UX를 좋아합니다. 

기획부터 디자인, 개발 모두 2주라는 기간 안에 해야했기에, 앱의 완성도가 다소 떨어지지만 꾸준히 업데이트해 나갈 예정입니다! 응원 부탁드립니다!

🤗 프로덕트 소개좀 해주세요~

당신은 오늘 로또를 사면서 무엇을 꿈꾸셨나요?

우리의 삶에서 희망을 품고 로또를 구매하는 순간이 주는 작은 설렘이 있습니다.

'로또 일기' 앱은 그 설렘과 희망을 담아, 당첨되면 실현하고 싶은 꿈들을 기록하고, 나만의 행운을 찾아가는 여정을 돕는 친구가 되어 드립니다.

제가 좋아하는 유투버는 로또를 사면, 뒷면에 당첨되면 하고 싶은 일을 적는다고 합니다. 이건 욕심이 아니라 로또에 대한 예의라는 설명을 덧붙이면서요.

이렇게 저도 제가 구매하는 로또 하나하나가, 제가 바라던 일들 하나하나가, 헛되이 사라지지 않게 기록하고 싶었습니다.

로또를 구매해보신 분들은 사기 전에 어떤 계기가 있었거나,

또는 로또를 사면서 어떤 희망이나 설렘을 가져본 경험이 있으셨을 텐데요,

저는 그 경험을 기록할 수 있는 앱을 만들었습니다!

주요 기능으로는

  • - 로또 결과를 바로 확인할 수 있는 기능(번호를 직접 입력하거나 QR코드 인식),

  • - 나한테 의미 있는 번호는 저장하고,

  • - 랜덤으로 재미있게 로또 번호를 생성하는 기능,

  • - 현위치와 주변 로또 판매점을 조회할 수 있는 기능,

  • - 로또를 사게 된 계기나, 사고 나서 느낀 감정을 기록할 수 있는 일기와,

  • - 사진과 로또 번호, 그리고 소원 태그를 기록할 수 있는 기능,

그 외에도 로또 결과 발표 시간에 알림을 주는 기능이 있습니다.

추후에는 소원 태그와 구매 통계를 차트로 보여주는 기능을 1.1ver에 추가할 예정입니다.

앱을 출시하고 나서, 아직 제대로된 홍보는 하지 않아서, 지인 선공개를 해보았었는데요,

제 주변분들이 로또를 처음 구매해보기도 하고,

제 앱으로 추천받은 번호로 5등까지 당첨되었다는 소식도 들어서, 저도 흥미롭게 리뷰를 보고 있습니다.ㅎㅎ

⁉ 프로덕트를 만들게 된 계기는 무엇인가요?

제가 좋아하는 유투버는 로또를 사면, 뒷면에 당첨되면 하고 싶은 일을 적는다고 합니다. 이건 욕심이 아니라 로또에 대한 예의라는 설명을 덧붙이면서요.

이렇게 저도 제가 구매하는 로또 하나하나가, 제가 바라던 일들 하나하나가, 헛되이 사라지지 않게 기록하고 싶었습니다.

로또를 구매해보신 분들은 사기 전에 어떤 계기가 있었거나,

또는 로또를 사면서 어떤 희망이나 설렘을 가져본 경험이 있으셨을 텐데요,

저는 그 경험을 기록할 수 있는 앱을 만들었습니다!

😱 개발은 어떻게 진행이 됬나요?

  1. 1. 기획과 디자인 및 개발 준비

우선 Figma를 활용해서 디자인과 기획에 대한 큰 틀을 잡았습니다.

가능한 많은 레퍼런스 앱과 동행복권 사이트 등을 참고하면서,  이렇게 기획과 디자인을 먼저 큰 틀이라도 확정지은 다음,

개발에 필요한 기술 스택과 기능들을 찾아봤습니다.

2. 개발 과정

1) 개발 구조 설계

앱에 대한 큰 가닥으로, 로컬 데이터베이스는 어떤 것을 사용할지, API 호출을 위한 네트워크 통신은 라이브러리를 쓸지, 또는 어떤 아키텍처를 사용할 지 등에 대한 고민을 했습니다.

그러고 나서는 제가 선택한 로컬 데이터베이스인 Realm에 저장해야 하는 데이터 모델을 정리한 후, 데이터베이스 테이블을 만들었어요.

그리고 앱의 규모가 mvp 단계에서는 그리 크지 않았지만, 점점 기능을 추가하면 로직이 다양해질 것으로 예상해서, MVC와 MVVM을 섞어서 활용했습니다.

또 제가 사용할 네트워크 통신 라이브러리인 Alamofire와, 동행복권 API의 콜 제한과 같은 조건을 조사했고, 

그리고 가장 러닝커브가 있다고 생각되었던, 카카오맵SDK를 활용해서 주변 복권 판매점을 키워드로 검색 후 지도에 띄을 수 있는 로직을 공부했습니다. 

특히 카카오맵SDK는 최근에 ver2가 나왔던지라, 레퍼런스가 전혀 없어서, 샘플 코드와 공식문서로만 개발을 해보았다는 점에서 의미있었습니다.

2) UI와 비즈니스 로직

누구는 UI부터, 누구는 비즈니스 로직부터 설계합니다.

개발자마다 다른 것 같은데, 저는 UI부터 크게 잡아두고, 비즈니스로직을 개발하는 편입니다.

눈에 보이는게 있어야 스스로 이해하면서 개발하기 편하더라구요.

UI 레이아웃은 SnapKit과 다양한 CollectionView레이아웃을 잡을 수 있는 Diffable DataSource + Compositional Layout도 활용해보았습니다. 

이 과정에서 Realm 데이터 수정 및 삭제 로직과의 충돌을 여러번 만났는데요, 이런 과정을 트러블슈팅으로 블로그 글로 잘 정리해두었습니다.

https://velog.io/@maddie/iOS-Diffable-Realm-Delete-Error

3) 예외처리

출시 이후 업데이트를 준비하던 도중 '렛어스고'라는 iOS 컨퍼런스에 참여해서, 우연히 예외처리에 대한 세션을 들었습니다.

저는 UX를 고려한 개발을 할 때 유난히 재미를 느끼는 편인데, 특히 예외처리에는 개발자 버전과 유저 버전이 있다는 점이 흥미로웠습니다. 

예를 들어, 네트워크 통신이 실패한 상황을 가정해봅시다.

예외처리 - 개발자 버전에는 네트워크 단절 상황인지, 잘못된 url인지, 인증에 실패했는지 등에 대한 내용을 다루지만, 

예외처리 - 유저 버전에는 네트워크가 하여튼 왜 안되는지에 대해서는 자세히 알리지 않고, 그래서 어떤 액션을 취해야 하는지

("연결 상태를 확인해주세요", "로그인 상태를 확인해주세요", "문제가 계속되면 지원팀에 연락해주세요" 등) 안내하는 것이 좋습니다.


바로 제 앱에도 업데이트해보았습니다. 

👍 재미있었던 것은 무엇이었나요?

온전히 제 힘으로 앱을 출시해보니, 없던 주인의식이 생겼습니다. 😂

기존 프로젝트들은 보통 팀원 중 한명으로, 팀에 도움되는 일이나, 앱에서 필요한 기능을 개발하는 편이었는데, 

온전히 제가 넣고 싶은 기능과 제가 생각했을 때 옳은 UX를 생각하면서 개발하니까, 자유를 느꼈습니다. 

👎 아쉽거나 어려웠던 점은 무엇이었나요?

주변 개발자와 이야기할 때 "공수산정 대실패"다, 라는 말을 썼는데요,
저에게 주어진 기간은 단 2주, 그 안에 완성해서 출시하는 것이 목표였다면, 앱의 규모를 좀 더 작게, 심플하게 가져가는 게 맞지 않았을까 하는 생각이 듭니다. 

그리고 실제로 제가 개발할 수 있는 능력치와 그에 걸리는 시간을 미리 계획하고, 실행하는 것이 정말 어렵더라구요.

또 애플 스토어 입장에서 Lottery를 주제로 한 앱이니, 무조건 리젝을 한 번 당하겠다는 예상은 했지만, 막상 정말 받아보니 좀 당황스러웠습니다.

리젝 사유에는 법적인 사항도 들어있었기에, 기존에 있었던 '로또구매(동행복권 사이트) 웹뷰'는 사라지게 되었습니다.

앱 입장에서는 크리티컬한 기능이 빠져야했기 때문에, 리젝 이후에 UI 수정이 불가피해졌습니다.

이 부분도 미리 알았다면, 구매와 직결된 기능은 넣지 않고 기획하지 않았을까, 하는 생각이 듭니다.

첫 출시와 첫 리젝이라니, 좀 겁을 먹었던 것 같기도 합니다🥹

(그리고 전 역시 협업이 더 좋습니다ㅎ🤣)

💯 앞으로의 계획을 알려주세요

현재 Google Analytics와 Crashlytics를 통해 유저의 사용 현황과 Crash를 추적해서 관찰하고 있습니다. 

아직 버그 투성이이고, 세세하게 개발하지 못한 기능도 있어서, 이 부분에 집중해서 업데이트를 꾸준히 이어나갈 예정입니다.

(나중에는 광고도 달아볼 생각이에요. 아직 광고가 없는 버전을 이용할 수 있으니, 많은 관심 부탁드립니다😇)

🧑‍💻 기타 공유하고싶으신 내용 말씀해주세요

제가 다른 팀원분들과 같이 만든 “청각장애인을 위한 앱” 비스담도 많이 사용해보세요.

아래에서 다운로드 가능해요(현재 IOS만 지원하고 있어요)

https://apps.apple.com/kr/app/%EB%B9%84%EC%8A%A4%EB%8B%B4-bisdam/id6470152960

https://letspl.me/booth/bisdam

개발팀 정보

신정연