2022.01 ~ Now앱스토어 바로가기
로또의 민족은 당첨 정보를 조회하고, 번호를 생성할 수 있는 로또 유틸리티 서비스 입니다.
최신 회차 당첨 정보 조회, 주변 판매점 위치 확인, 번호 생성을 할 수 있는 서비스 입니다.
번호를 생성하여 행운을 시험해보세요 !
Swift 5.10 Xcode 15.3 iOS 15.0+ Tuist 4.18.0 Moya 15.0.0
- 최신 로또 회차의 당첨 정보를 확인할 수 있어요.
- 검색해서 특정 회차의 당첨 정보를 확인할 수 있어요.
- QR 코드 스캐너로 구매한 로또의 당첨 정보를 확인할 수 있어요.
- 현 위치를 기반으로 주변 로또 판매점을 조회할 수 있어요.
- 특정 지역의 판매점을 검색할 수 있어요.
- 길찾기 버튼을 누르면 판매점까지 경로를 알려줘요.
- 랜덤으로 로또 번호를 생성할 수 있어요.
- 느낌이 좋은 번호가 나왔다면 로또를 구매하러 가볼까요?
| 당첨 정보 조회 | 회차 검색 | QR 코드 스캔 |
|---|---|---|
| 주변 판매점 조회 | 랜덤 번호 생성 |
|---|---|
graph LR
subgraph Presentation
A(View<br>Controller)
B(ViewModel)
A -.Input.-> B
B -.Output.-> A
end
subgraph Domain
C(Usecase<br>Protocol)
D(Usecase)
E(Wrapper<br>Protocol)
D --> C
D --> E
B ---> C
C -.Model.-> B
end
subgraph Networks
H(Service)
I(Server)
G(Wrapper)
H -.Request.-> I
I -.Response.-> H
G -.Entity.-> E
G --> H
end
- Network Layer: 서버 또는 로컬에서 직접적으로 데이터를 가져오거나 보내는 책임
- Domain Layer: 앱의 비즈니스 로직에 대한 책임
- Presentation Layer: UI 로직에 대한 책임
- Feature, Domain, Network Layer를 분리하여 각 Layer의 역할을 나누었습니다.
- 분리된 Layer의 역할과 책임이 명확해져 코드 응집도가 높아지고, 테스트에 용이해집니다.
- 특정 코드가 어떤 Layer에 있을지 예측할 수 있어, 코드의 가독성과 개발 효율이 높아집니다.
- MVVM 패턴으로 UI 로직과 비즈니스 로직을 분리했습니다.
- ViewModel에서 사용자의 이벤트와 화면에 보여질 데이터를 Input Output 구조로 정의했습니다.
- 비슷한 책임을 갖는 코드(클래스, 패키지, 라이브러리 등)를 모듈로 분리하여 응집도가 높고 결합도가 낮은 코드를 구현하도록 했습니다.
- 모듈 간 의존 관계를 설정함으로써 역할과 참조 관계를 명확히 구분해줌으로 결합도를 낮추고 실수를 방지해 유지 보수에 용이해집니다.
- 만들어 놓은 모듈은 다른 프로젝트에서도 재사용할 수 있어 개발 효율이 높아집니다.
- 데모 앱을 통해 테스트 환경을 구축할 수 있습니다.