Skip to content

Commit 1891d72

Browse files
Merge branch 'main' into develop
2 parents a132edf + 625abde commit 1891d72

File tree

2 files changed

+94
-64
lines changed

2 files changed

+94
-64
lines changed

.github/ISSUE_TEMPLATE/-----.md

-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ labels: 일주일 회고
66
assignees: ''
77

88
---
9-
109
### 이번주 내용
1110

1211

README.md

+94-63
Original file line numberDiff line numberDiff line change
@@ -3,85 +3,116 @@
33

44
<div align="center">
55

6-
7-
<center><a href="https://drive.google.com/file/d/1CNYS-sfW_2_-8XrEFUkVxtWWV8voyOw8/view?usp=sharing">🌈 기획서<a href="https://github.com/boostcampwm-2021/iOS01-Booster/wiki">📁 위키<br></a>
8-
<br>
9-
10-
[![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fboostcampwm-2021%2FiOS01-Booster&count_bg=%23FF5C00&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=Booster%F0%9F%9A%80%F0%9F%94%A5&edge_flat=false)](https://hits.seeyoufarm.com)<br>
11-
[![Swift](https://img.shields.io/badge/swift-v5.5-orange?logo=swift)](https://developer.apple.com/kr/swift/) [![Xcode](https://img.shields.io/badge/xcode-v13.0-blue?logo=xcode)](https://developer.apple.com/kr/xcode/)
12-
[![Cocoapods](https://img.shields.io/badge/Cocoapods-6933FF?logo=cocoapods)](https://cocoapods.org/) [![SwiftLint](https://img.shields.io/badge/SwiftLint-FF9E0F)](https://github.com/realm/SwiftLint) [![Figma](https://img.shields.io/badge/Figma-0C0C0C?logo=figma)](https://github.com/realm/SwiftLint)
13-
</center>
14-
</div>
15-
16-
---
17-
18-
196
## 멤버
207
<div align="center">
218
<center>
22-
23-
| <img src="https://cdn4.iconfinder.com/data/icons/logos-3/504/Swift-2-512.png" width=15px> S014_김태훈 | <img src="https://cdn4.iconfinder.com/data/icons/logos-3/504/Swift-2-512.png" width=15px> S025_신명섭 | <img src="https://cdn4.iconfinder.com/data/icons/logos-3/504/Swift-2-512.png" width=15px> S050_이하원 | <img src="https://cdn4.iconfinder.com/data/icons/logos-3/504/Swift-2-512.png" width=15px> S060_최희주 |
9+
10+
|<img src="https://i.imgur.com/wIXr1QY.png" width=18px> <b style="color:#FF5C00">S014_김태훈</b> | <img src="https://i.imgur.com/wIXr1QY.png" width=18px> <b style="color:#FF5C00">S025_신명섭</b> | <img src="https://i.imgur.com/wIXr1QY.png" width=18px> <b style="color:#FF5C00">S050_이하원</b> | <img src="https://i.imgur.com/wIXr1QY.png" width=18px> <b style="color:#FF5C00">S060_최희주</b> |
2411
|:-:|:-:|:-:|:-:|
2512
|<img src="https://i.imgur.com/I3g5HkU.png" width="150">|<img src="https://i.imgur.com/GNC10jI.png" width="150">|<img src="https://i.imgur.com/jFNY6Sy.png" width="150">|<img src="https://i.imgur.com/cdOsNrV.png" width="150">
2613
| [@KTH-INHA-16](https://github.com/KTH-INHA-16) | [@s1gnature](https://github.com/s1gnature) | [@Hani-Levenshtein](https://github.com/Hani-Levenshtein) | [@rose6649](https://github.com/rose6649) |
2714

2815
</center>
2916
</div>
17+
<center>
18+
<h2></h2>
19+
<h2><a href="https://drive.google.com/file/d/1CNYS-sfW_2_-8XrEFUkVxtWWV8voyOw8/view?usp=sharing">🌈 기획서</a>
20+
<br>
21+
<br>
22+
<a href="https://github.com/boostcampwm-2021/iOS01-Booster/wiki">📁 위키</a><br>
23+
<br>
24+
</h2>
25+
<br>
3026

31-
## 팀 룰
32-
- 시간 약속 🕑
33-
- 체크인 10:00
34-
- 점심 12:00 ~ 13:00
35-
- 회의 시 40분마다 10분씩 휴식시간
36-
- 매일 아침 스크럼을 진행하고 issue에 `🗣 데일리스크럼 & 회고` 라벨을 붙여 스크럼 결과를 작성합니다.
37-
- 이후 저녁 회고는 자율적으로 작성합니다.
38-
- 주 회고는 매주 금요일 18:00 ~ 19:00에 이야기 한 내용을 바탕으로 작성합니다.
39-
40-
## 커밋 컨벤션
41-
**커밋 메세지 룰 (대괄호 없고, 소문자)**
42-
> `prefix: ~~~`
43-
KEYWORD 목록
44-
- `add:` 기능 및 코드의 추가가 있을 때 사용합니다. add:
45-
- `fix:` 올바르지 않은 동작을 고친 경우에 사용합니다.
46-
- `delete:` 코드의 삭제가 있을 때 사용합니다.
47-
- `refac:` 코드의 '재건축'이 있을 때 사용합니다. (결과는 같게, 코드는 다시 짜기)
48-
- `setting:` 프로젝트의 설정에 관련된 사항이 있을 때 사용합니다. → 리더 전용 👑
49-
- `docs:` readme와 관련된 문서 작성 및 수정이 있을 때 사용합니다.
50-
51-
## 코드 컨벤션(Swift Lint)
52-
[GitHub - StyleShare/swift-style-guide: StyleShare에서 작성한 Swift 한국어 스타일 가이드](https://github.com/StyleShare/swift-style-guide#%EB%B3%80%EC%88%98)
53-
54-
축약어 지양(btn, img 금지!)
55-
한줄 길이 제한: Swift Lint Default 설정을 따름
56-
57-
```swift
58-
/* 컨벤션 템플릿 */
59-
(열려있는 순서) 사이사이 띄어쓰기
60-
static
61-
internal
62-
private
63-
let
64-
var
65-
computed property
66-
67-
// MARK: - Enum
68-
69-
// MARK: - @IBOutlet
70-
71-
// MARK: - Variables
27+
[![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fboostcampwm-2021%2FiOS01-Booster&count_bg=%23FF5C00&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=Booster%F0%9F%9A%80%F0%9F%94%A5&edge_flat=false)](https://hits.seeyoufarm.com)<br>
28+
[![Swift](https://img.shields.io/badge/swift-v5.5-orange?logo=swift)](https://developer.apple.com/kr/swift/) [![Xcode](https://img.shields.io/badge/xcode-v13.0-blue?logo=xcode)](https://developer.apple.com/kr/xcode/) [![Figma](https://img.shields.io/badge/Figma-0C0C0C?logo=figma)](https://www.figma.com/)
29+
[![Cocoapods](https://img.shields.io/badge/Cocoapods-6933FF?logo=cocoapods)](https://cocoapods.org/) [![RxSwift](https://img.shields.io/badge/RxSwift-B7178C?logo=reactiveX)](https://github.com/ReactiveX/RxSwift/)
30+
</center>
31+
</div>
32+
<br>
33+
<H1>
34+
</H1>
35+
<br>
36+
<div>
37+
<center>
38+
<img src="https://i.imgur.com/6BZsKkQ.png" width=120px><br><br>
39+
<H3>부스터는 <b style="color:#ff5c00">오늘의 걸음 수</b>를 보여주고<br><br>
40+
걸음을 <b style="color:#ff5c00">트래킹</b>하면서<br><br>
41+
<b style="color:#ff5c00">산책 기록을 모아</b> 추억을 쌓는 🍎 iOS 앱입니다
42+
</H3>
7243

73-
// MARK: - Subscript
7444

75-
// MARK: - viewDidLoad or init
45+
##### 산책으로 오늘 하루도 힐링해보시는 건 어떠세요? 🚶🚶🏼🚶🏼
46+
</div>
47+
</center>
48+
49+
<br>
50+
<br>
51+
52+
## 설치 방법
53+
**Booster를 직접 사용해 보아요 🚀🔥**
54+
1. Xcode 13(권장) 이상과 Cocoapods이 설치되어있어야 합니다.
55+
> `brew install cocoapods` - Cocoapods 설치
56+
2. 프로젝트를 로컬에 클론 하게 되면 프로젝트 디렉토리에서
57+
`pod install`을 실행 시켜 주세요.
58+
3. 이후 Booster.xcworkspace를 실행 한 이후 `command + R`을 통해 체험 가능합니다.
59+
<br>
60+
<br>
61+
62+
## 기능 소개
7663

77-
// MARK: - @IBActions
64+
| 오늘의 걸음 수 ✨ | 걸음 수 통계 ✨ | 산책 트래킹 ✨ |
65+
| -------- | -------- | -------- |
66+
| <img src="https://i.imgur.com/n0ZJPhL.jpg" width=200px> | <img src="https://i.imgur.com/NfQ9oz1.jpg" width=200px> | <img src="https://i.imgur.com/A1li5NA.png" width=200px> |
7867

79-
// MARK: - @objc
68+
| 산책 기록들 ✨ | 하나의 기록도 소중히 ✨ | 마이페이지 ✨ |
69+
| -------- | -------- | -------- |
70+
| <img src="https://i.imgur.com/pPI6gVY.png" width=200px> | <img src="https://i.imgur.com/7OTm0N8.png" width=200px> | <img src="https://i.imgur.com/XHpNEXG.png" width=200px> |
8071

81-
// MARK: - functions
8272

83-
```
73+
74+
<br><br>
75+
## 아키텍쳐
76+
> Booster에서 사용한 아키텍쳐를 도식화한 이미지입니다.
77+
> MVVM을 기본으로 하는 아키텍쳐 입니다.
8478
79+
![](https://i.imgur.com/UVbUI22.png)
8580

81+
ViewModel이 각 Manager들에 접근해야 하는데, 해당 로직을 ViewModel에서 모두 처리하기에는 ViewModel의 크기가 커지기에 UseCase를 남겨두고 해당 비지니스 로직을 UseCase에서 처리했습니다.
82+
> [🍌참고](https://github.com/boostcampwm-2021/iOS01-Booster/wiki/MVVM%3F-or-Clean-Architecture-%EA%B3%A0%EC%B0%B0%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B2%B0%EA%B3%BC)
8683
87-
---
84+
<br><br>
85+
86+
## 프레임워크
87+
> Booster에서 사용한 프레임워크 입니다.
88+
89+
![](https://i.imgur.com/wn03W7p.png)
90+
91+
#### HealthKit
92+
- 같은 애플 계정을 공유하는 기기간 연동된 건강 데이터를 활용하기 위해 선택하였습니다
93+
- 앱을 다운로드 받기 전과 트래킹하지 않았을 때의 걸음 수까지 보여주기 위해 사용하였습니다
94+
- 트래킹 정보를 저장한 뒤, 건강 앱에도 기록되어 이 정보를 앱에 함께 불러올 수 있었습니다
95+
96+
#### CoreData
97+
- 네트워크 상황에 관계 없이 기록을 저장하고 보여주기 위하여 사용하였습니다
98+
- NSPredicate 사용해 CRUD를 구현하여 CoreData에 접근을 용이하게 하도록 구현하였습니다
99+
- 동시성을 위해 main loop가 아닌 private context(child context)를 활용하였습니다
100+
101+
#### MapKit
102+
- 다른 라이브러리를 이용하지 않고, 애플 지도를 이용하여 사용자의 트래킹 정보를 표현하기 위해 사용하였습니다
103+
- 트래킹한 사용자의 위치 정보를 지도상에 나타내기 위해 MKPolyLine을 이용하였습니다
104+
- 사용자의 현 위치에 마일스톤 기록을 남기기 위하여 MKAnnotationView를 커스텀 하여 표현하였습니다
105+
106+
#### RxSwift
107+
> 계기
108+
- escaping closure와 같은 비동기 처리가 많아졌고, 이를 처리하는 방식이 매개변수와 같이 있어 다른 방법으로 표현할 수 없을까 고민하였습니다
109+
- 데이터 바인딩, UI 이벤트 처리에 대한 코드가 나눠져서 불편함이 생겨 코드를 보았을 때 이해하기 쉽도록 하고 싶었습니다
110+
111+
> 도입 결과
112+
- IBAction/UIGesture와 Target method를 통합하여 하나의 스트림으로 표현할 수 있었습니다
113+
- escaping closure에서 벗어나 리턴값으로 Observable을 사용하게 되면서 간결한 코드로 나타낼 수 있었습니다
114+
- 기존에 직접 만든 Observable 클래스 만으로는 할 수 없었던 NSObject에서도 Rx에 관한 작업들을 할 수 있었습니다
115+
116+
#### CoreLocation
117+
- 디바이스의 위치 정보를 추적하여 사용자의 위치를 실시간으로 추적하고자 사용하였습니다
118+
- 사용자의 위치에 대한 위도/경도 정보를 통해 지역명으로 받아오고자 CLGeocoder를 이용했습니다

0 commit comments

Comments
 (0)