로또 당첨 정보 조회, 주변 판매점 위치 확인, 번호 생성을 할 수 있는 서비스
앱스토어
Framework | UIKit |
---|---|
구조 | MVVM + RxSwift + Clean Architecture |
DI | Swinject |
Network | Alamofire |
Library | WebKit, NaverMaps, KakaoSDK, Kingfisher |
모듈화
- 비슷한 책임을 갖는 코드(클래스, 패키지, 라이브러리 등)를 묶어 모듈로 나눠서 응집도를 향상시킴
- 모듈 간 의존 관계를 설정함으로써 알아야하는 대상과 알지 못해야하는 대상을 명확히 구분해줌으로 결합도를 낮추고 실수를 방지해 유지 보수가 용이함
- 만들어 놓은 모듈은 다른 프로젝트에서도 재사용할 수 있어 개발 효율이 높아짐
- Lotty (App 모듈)
- AppDelegate, SceneDelegate, DI 주입, Resource(Info.plist, Font, Assets)
- Data 모듈
- DTO, Network, Database, DataStoure, RepositoryImpl
- Domain 모듈
- VO, UseCase, RepositoryProtocol
- Presentation 모듈
- Feature, View, ViewModel
- Common 모듈
- 공통 기능 (enum, extension, Helper 등)
- CommonUI 모듈
- 공통 UI (UILabel, UIButtom, UITableView 등 Custom View, UI관련 extension)
Clean Architecture
- 분리된 계층의 역할과 책임이 명확해져 코드 응집도가 높아지고, 테스트에 용이해짐
- 코드가 어떤 계층에 있을지 예측할 수 있어, 코드의 가독성과 개발 효율이 높아짐
- Data Layer: 서버 또는 로컬에서 직접적으로 데이터를 가져오거나 보내는 책임
- Domain Layer: 앱의 비즈니스 로직에 대한 책임
- Presentation Layer: UI 로직에 대한 책임
- 지도: 현 위치를 기반으로 주변 로또 판매점을 검색하여 NaverMap Marker로 표시하는 기능 개발
- 로또 회차 목록: 1,000여 개의 로또 회차에 대한 정보를 infinity scroll을 구현하여 조회할 수 있도록 개발
- QR Scan: AVKit의 AVCaptureDevice를 활용하여 QR Code Scan 기능 개발
- 로또번호 생성: 로또 번호를 중복되지 않게 랜덤으로 생성하는 로직 개발