Skip to content

Commit a1a56b5

Browse files
authored
Merge pull request #181 from boostcampwm-2024/docs/#174-update-readme
2 parents 8871285 + 9783515 commit a1a56b5

File tree

2 files changed

+136
-41
lines changed

2 files changed

+136
-41
lines changed

โ€Ž.gitignoreโ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,3 +133,4 @@ iOSInjectionProject/
133133

134134
# End of https://www.toptal.com/developers/gitignore/api/macos,xcode,swift
135135
*.xcconfig
136+
.obsidian/

โ€ŽREADME.mdโ€Ž

Lines changed: 135 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,161 @@
1+
<div align = center>
2+
13
# ๐Ÿ“ท ํฌํ† ๊ฒŒ๋” - For Together
2-
> ๋ฉ€๋ฆฌ ๋–จ์–ด์ง„ ์นœ๊ตฌ๋“ค๊ณผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ•จ๊ป˜ ์ฐ๊ณ  ํŽธ์ง‘ํ•˜๋Š” ์‚ฌ์ง„ ์ดฌ์˜ ์•ฑ
4+
5+
<br>
36

47
![แ„†แ…ฉแ†จแ„‹แ…ฅแ†ธ แ„‡แ…ขแ„‚แ…ฅ](https://github.com/user-attachments/assets/c743749b-a16f-4673-921e-3ac335a80e30)
58

6-
#### ํŒ€์› ์†Œ๊ฐœ
9+
<img src="https://github.com/user-attachments/assets/0243957d-da45-4fa2-a49e-a83bc4a4cccc" width="500" align="right">
710

8-
<details>
9-
<summary> </summary>
11+
<br><br><br><br>
1012

11-
|[S009_๊น€๊ธฐ์˜](https://github.com/Kiyoung-Kim-57)|[S034_์†ก์˜๊ทœ](https://github.com/youn9k)|[S035_์†ก์˜ํ›ˆ](https://github.com/0Hooni)|[S077_ํ™์Šน์™„](https://github.com/hsw1920)|
12-
|:---:|:---:|:---:|:---:|
13-
|<img src="https://github.com/user-attachments/assets/6a865499-ef54-4c48-84ae-8d8eb9a229b6" width=150>|<img src="https://github.com/user-attachments/assets/eaadb82c-4880-4e66-bfe7-4eac844ca594" width=150>|<img src="https://github.com/user-attachments/assets/6cdb37fa-d0d1-46ed-bd6d-faa54db5e6b8" width=150>|<img src="https://github.com/user-attachments/assets/697edcf8-7709-42c2-82de-85f8f2bed08c" width=150>|
14-
| ํŒฉํŠธ๋Š” ์ฝ”๋“œ๊ฐ€ ๊ฑด<br>๊ฐ•ํ•ด์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฑฐ์ž„. | ์ด ๋˜ํ•œ ์žก์Šค์˜ ์€ํ˜œ๊ฒ ์ง€์š”. | ๋””๋ฒ„๊น… ๋‹ค ํ•ด์คฌ์ž–์•„. | ์ •์ƒํ™”... ํ•ด์•ผ๊ฒ ์ง€? |
15-
| iOS | iOS | iOS | iOS |
16-
</details>
13+
<i>"ํ•จ๊ป˜ํ•˜๋ฉด ๋” ํŠน๋ณ„ํ•ด์ง€๋Š” ์ˆœ๊ฐ„"</i>
14+
<br><br>
15+
<i>"์ง€์ธ๋“ค๊ณผ ํ•จ๊ป˜ ์‚ฌ์ง„์„ ์ฐ๊ณ  ๊พธ๋ฐ€ ์ˆ˜ ์žˆ์–ด์š”"</i>
16+
<br><br>
17+
<i>**์‹ค์‹œ๊ฐ„ ์—ฐ๊ฒฐ**, **์‚ฌ์ง„ ์ดฌ์˜**, **๊พธ๋ฏธ๊ธฐ**๊นŒ์ง€ โ€“ </i>
18+
<br><br>
19+
<i>**PhotoGether**์—์„œ ์—ฌ๋Ÿฌ๋ถ„์˜ ํŠน๋ณ„ํ•œ ์ˆœ๊ฐ„๋“ค์„ ์ €์žฅํ•˜๊ณ  ๊ณต์œ ํ•ด๋ณด์„ธ์š”.</i>
1720

18-
|[S009_๊น€๊ธฐ์˜](https://github.com/Kiyoung-Kim-57)|[S034_์†ก์˜๊ทœ](https://github.com/youn9k)|[S035_์†ก์˜ํ›ˆ](https://github.com/0Hooni)|[S077_ํ™์Šน์™„](https://github.com/hsw1920)|
19-
|:---:|:---:|:---:|:---:|
20-
|<img src="https://avatars.githubusercontent.com/u/121777185?v=4" width=150>|<img src="https://avatars.githubusercontent.com/u/60254939?v=4" width=150>|<img src="https://avatars.githubusercontent.com/u/37678646?v=4" width=150>|<img src="https://avatars.githubusercontent.com/u/66902876?v=4" width=150>|
21-
| ๊ฑด๊ฐ•ํ•œ ์ฝ”๋“œ๋ฅผ ์จ๋‚ด๋Š”<br>๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ ์‹ถ์Šต๋‹ˆ๋‹ค. | ์ง€๋Š”๊ฑฐ์—์š”?<br>์ด๊ฒจ. | ๋””๋ฒ„๊น… ๋‹ค ํ•ด์คฌ์ž–์•„. | ์ •์ƒํ™”... ํ•ด์•ผ๊ฒ ์ง€? |
22-
| iOS | iOS | iOS | iOS |
21+
</div>
2322

24-
## ๊ฐœ๋ฐœ ํ™˜๊ฒฝ
23+
<br><br><br>
2524

26-
| ํ™˜๊ฒฝ | ๋ฒ„์ „ |
27-
|:---|:---|
28-
| XCode | 16+ |
29-
|Swift | 5.9 |
30-
| Deployment Target | iOS 16+ |
31-
| Packaging | SPM |
3225

33-
## ์•„ํ‚คํ…์ณ ๊ตฌ์กฐ
26+
## โœจ ์•ฑ ํ”Œ๋กœ์šฐ ์†Œ๊ฐœ
3427

35-
3-layer Clean Architecture ๋ฅผ ๊ธฐ๋ฐ˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
3628

37-
์งง์€ ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„๋™์•ˆ ํŒ€์˜ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ๊ณ ๋ฏผํ–ˆ์Šต๋‹ˆ๋‹ค.
29+
| ๐Ÿ™‹โ€โ™‚๏ธ๐Ÿ™‹ ๋ชจ์—ฌ๋ด์š” | ๐Ÿ“ธ ํ•จ๊ป˜ ์ฐ์–ด์š” | ๐ŸŒ  ํ•จ๊ป˜ ๊พธ๋ฉฐ์š” | ๐Ÿ”— ๊ณต์œ ํ•ด์š” |
30+
| :-----: | :-----: | :-----: | :-----: |
31+
| <img width="250" alt="bye world" src="https://github.com/user-attachments/assets/a139e0c0-d1e2-44d6-a5c6-98174bbe332a"> | <img width="250" alt="Image" src="https://github.com/user-attachments/assets/b9ff509e-2930-4e84-8938-37514d4b469e"> | <img width="250" alt="hello world" src="https://github.com/user-attachments/assets/22e6126c-1008-4233-9419-db1bb8d49307"> |<img width="250" alt="hello world" src="https://github.com/user-attachments/assets/44f08974-1e3a-412b-a1a3-eb42f77e5d75"> |
32+
|- ๋ฐฉ์„ ์ƒ์„ฑํ•˜์—ฌ ์นœ๊ตฌ๋ฅผ ์ดˆ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.<br>- ์นœ๊ตฌ๋กœ๋ถ€ํ„ฐ ๋งํฌ๋ฅผ ๋ฐ›์•„ ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.<br>- ์˜ค๋””์˜ค/๋น„๋””์˜ค ๊ณต์œ ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. |- ์ดฌ์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.<br>- ์ „/ํ›„๋ฉด ์นด๋ฉ”๋ผ ์ „ํ™˜์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.<br>- ๋งˆ์ดํฌ๋ฅผ On/Off ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. |- ํŽธ์ง‘ ๊ณผ์ •์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ณต์œ ๋ฉ๋‹ˆ๋‹ค.<br>- ์Šคํ‹ฐ์ปค๋ฅผ ๋ถ™์—ฌ ์‚ฌ์ง„์„ ๊พธ๋ฐ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.<br>- ํ”„๋ ˆ์ž„์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. | - ํŽธ์ง‘ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.<br>- ์‚ฌ์ง„์„ ๊ณต์œ /์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. |
3833

39-
์ตœ์ข…์ ์œผ๋กœ test double๊ณผ demo ์•ฑ์„ ํ™œ์šฉํ•ด ์ž‘์—…๊ฐ„์˜ ์ข…์†์„ฑ์„ ๋Š์–ด ๋…๋ฆฝ์ ์ธ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.
4034

41-
![1234](https://github.com/user-attachments/assets/11d8c188-af32-47fc-811f-88bd83417863)
35+
## โœจ ํ•ต์‹ฌ ์ฑŒ๋ฆฐ์ง€ ์†Œ๊ฐœ
4236

37+
### โœจ WebSocket ์„œ๋ฒ„
4338

44-
## ๊ธฐ์ˆ  ์Šคํƒ
39+
โ€ข **์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ–ˆ๋˜ ์ด์œ **
4540

46-
### WebRTC
41+
์šฐ๋ฆฌ ์•ฑ์€ WebRTC๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ๋ช…๊ณผ P2P ์—ฐ๊ฒฐ์ด ํ•„์š”ํ•œ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ Signaling ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ–ˆ์œผ๋ฉฐ, Swift Vapor๋ฅผ ์‚ฌ์šฉํ•ด Swift ์ฝ”๋“œ๋กœ ์ง์ ‘ WebSocket ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.
4742

48-
> ์‹ค์‹œ๊ฐ„์œผ๋กœ ์˜์ƒ/์Œ์„ฑ/๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
49-
>
50-
> ๋ฉ€๋ฆฌ ๋–จ์–ด์ง„ ์‚ฌ์šฉ์ž์™€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ๋ ˆ์ดํ„ด์‹œ๊ฐ€ ์งง๊ณ  p2p ๋ฐฉ์‹์œผ๋กœ ์„œ๋ฒ„ ๋ถ€๋‹ด์ด ์ ์€ WebRTC๋ฅผ ์ฑ„ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.
43+
โ€ข **์š”์ฒญ/์‘๋‹ต ๊ตฌ์กฐ ์„ค๊ณ„**
44+
45+
ํ•˜๋‚˜์˜ ์—”๋“œํฌ์ธํŠธ๋กœ ๋ชจ๋“  ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ๋ณ„๋กœ ์„œ๋ฒ„ ๋กœ์ง๊ณผ ์‘๋‹ต ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ฌ๋ผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
46+
47+
> **MessageType**: ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ๋กœ์ง์„ ๊ฒฐ์ •ํ•˜๋Š” Enum ์†์„ฑ
48+
>
49+
> **Message**: ์š”์ฒญ์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๋Š” ๋ฐ์ดํ„ฐ
50+
51+
์ด๋ ‡๊ฒŒ ๊ตฌ์กฐํ™”ํ•˜์—ฌ ์„œ๋ฒ„๊ฐ€ ํšจ์œจ์ ์œผ๋กœ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.
52+
53+
โ€ข **[ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…] ์„œ๋ฒ„ ๋‹ค์šด ๋ฌธ์ œ**
54+
55+
์„œ๋ฒ„ ๊ฐœ๋ฐœ ์ค‘ ๋™์‹œ ์ ‘๊ทผ์œผ๋กœ ์ธํ•œ Race Condition ๋ฌธ์ œ๋กœ ์„œ๋ฒ„๊ฐ€ ์ž์ฃผ ๋ฉˆ์ท„์Šต๋‹ˆ๋‹ค. ์›น์†Œ์ผ“ ์š”์ฒญ ๊ด€๋ฆฌ ๊ฐ์ฒด๋ฅผย Actor๋กœ ๋ฆฌํŒฉํ† ๋งํ•˜๋ฉด์„œ ๋™์‹œ ์ ‘๊ทผ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
56+
57+
### โœจ WebRTC
58+
59+
โ€ข **WebRTC ์ฑ„ํƒ ์ด์œ **
60+
61+
์ตœ๋Œ€ 4๋ช…์˜ ์œ ์ €๊ฐ€ ์‹ค์‹œ๊ฐ„ ์˜์ƒ, ์Œ์„ฑ ๊ณต์œ ์™€ ๋™์‹œ ํŽธ์ง‘์„ ํ•ด์•ผ ํ–ˆ๊ธฐ์— ๋‚ฎ์€ ๋ ˆ์ดํ„ด์‹œ๊ฐ€ ์ค‘์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฅผ ๊ฒฝ์œ ํ•˜์ง€ ์•Š๊ณ  P2P ์—ฐ๊ฒฐ์„ ์ง€์›ํ•˜๋Š” WebRTC๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
62+
63+
โ€ข **Mesh ๋ฐฉ์‹ ์ฑ„ํƒ ์ด์œ **
64+
65+
66+
<img width="40%" alt="Image from Notion" src="https://github.com/user-attachments/assets/888e7156-e2ba-488e-9fe1-56bc7f7aae69">
67+
68+
69+
์„œ๋ฒ„ ๊ฐœ๋ฐœ ๋ฆฌ์†Œ์Šค๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด Mesh ๋ฐฉ์‹์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. Mesh ๋ฐฉ์‹์€ ์ฐธ๊ฐ€์ž๋“ค ๊ฐ„ ์ง์ ‘ ์—ฐ๊ฒฐ์„ ์ง€์›ํ•˜๋ฉฐ, ์ตœ๋Œ€ 4๋ช…๊นŒ์ง€ ์—ฐ๊ฒฐํ•˜๊ธฐ์— ์„ฑ๋Šฅ์ƒ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๊ณ  ํŒ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.
70+
71+
โ€ข **WebRTC ์—ฐ๊ฒฐ ๊ณผ์ •**
72+
73+
1. ๋ฐฉ ์ƒ์„ฑ์ž๊ฐ€ ์›น์†Œ์ผ“ ์„œ๋ฒ„์—์„œ ๋ฐฉ์„ ์ƒ์„ฑํ•˜๊ณ , ๋ฐฉ ์ •๋ณด๋ฅผ ๋”ฅ๋งํฌ URL๋กœ ์ดˆ๋Œ€ ๋Œ€์ƒ์—๊ฒŒ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.
74+
75+
2. ์ฐธ์—ฌ์ž๊ฐ€ ๋งํฌ๋ฅผ ํ†ตํ•ด ๋ฐฉ์— ์ฐธ๊ฐ€ํ•˜๋ฉด, ์„œ๋ฒ„์— ๋ฐฉ ์ฐธ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
76+
77+
3. ๊ธฐ์กด ์ฐธ๊ฐ€์ž๋Š” ์ƒˆ๋กœ์šด ์ฐธ๊ฐ€์ž์˜ ์ •๋ณด๋ฅผ ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์œผ๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค.
78+
79+
4. Signaling์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๊ตํ™˜ ํ›„ P2P ์—ฐ๊ฒฐ์ด ์„ฑ๋ฆฝ๋ฉ๋‹ˆ๋‹ค.
80+
81+
โ€ข **[ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…] AVCaptureSession ์นด๋ฉ”๋ผ ์ ‘๊ทผ ๋ฌธ์ œ**
82+
83+
WebRTC P2P ์—ฐ๊ฒฐ ์ค‘ ์Œ์„ฑ ์—ฐ๊ฒฐ์€ ๋˜์—ˆ์œผ๋‚˜ ํ™”๋ฉด ์—ฐ๊ฒฐ์ด ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š”ย AVCaptureSession์ด ๋‹จ์ผ ์ ‘๊ทผ๋งŒ ํ—ˆ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๊ฐ์ฒด๊ฐ€ ์นด๋ฉ”๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ์š”์ฒญํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๊ณณ์—์„œ๋งŒ ๊ด€๋ฆฌํ•˜๋„๋ก ๋ฆฌํŒฉํ† ๋งํ•˜์—ฌ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
84+
85+
86+
87+
## โœจ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”
5188

52-
### Combine
89+
![แ„‹แ…ตแ„‡แ…ฆแ†ซแ„แ…ณ แ„’แ…ฅแ„‡แ…ณ](https://github.com/user-attachments/assets/d57bc44c-d219-42e4-b340-46d07cab4d5a)
5390

54-
> ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ UI ๋ฐ”์ธ๋”ฉ์„ ์œ„ํ•ด ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
91+
<br>
92+
93+
- ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์ฐธ์—ฌ์ž๋Š” ๋™์ผํ•œ ํ™”๋ฉด ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
94+
- ์ฐธ์—ฌ์ž๋“ค์˜ ๋™์‹œ ๋‹ค๋ฐœ์  ๋น„๋™๊ธฐ์ ์ธ ํŽธ์ง‘ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
95+
- ๋„คํŠธ์›Œํฌ ์ƒํƒœ์— ๋”ฐ๋ฅธ ๊ฒฝ์Ÿ ์ƒํ™ฉ์„ ์™„ํ™”ํ•ฉ๋‹ˆ๋‹ค.
96+
- ์ค‘์•™ ์ง‘์ค‘ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์ฐธ์—ฌ์ž๊ฐ€ ๋™์ผํ•œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
97+
98+
> [๐Ÿ”— ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•œ ์ด๋ฒคํŠธ ํ—ˆ๋ธŒ](https://github.com/boostcampwm-2024/iOS04-PhotoGether/wiki/%EC%8B%A4%EC%8B%9C%EA%B0%84-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%8F%99%EA%B8%B0%ED%99%94%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%ED%97%88%EB%B8%8C)
99+
100+
101+
## โœจ ์•„ํ‚คํ…์ณ ๊ตฌ์กฐ
102+
103+
<img width="100%" alt="Image from Notion" src="https://github.com/user-attachments/assets/fd2573f6-71a5-4109-8386-04e8a0ae46c9">
104+
105+
- **3-Layer ๊ธฐ๋ฐ˜ ํด๋ฆฐ ์•„ํ‚คํ…์ณ**๋ฅผ ์ฑ„ํƒํ•˜์—ฌ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  **ํ™•์žฅ์„ฑ๊ณผ** **์œ ์ง€๋ณด์ˆ˜์„ฑ**์„ ๋†’์ž…๋‹ˆ๋‹ค.
106+
107+
- ์ธํ„ฐํŽ˜์ด์Šค ์˜์กด ์„ค๊ณ„๋ฅผ ํ†ตํ•ด **๋‚ฎ์€ ๊ฒฐํ•ฉ๋„**์™€ ์œ ์—ฐํ•œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
108+
109+
- ๋ช…ํ™•ํ•œ ์—ญํ•  ๋ถ„๋ฆฌ๋กœ **์ผ๊ด€๋œ ์ฝ”๋“œ ๊ตฌ์กฐ**๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ ํ๋ฆ„ ์ดํ•ด๋ฅผ ๋•๊ณ  ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๋†’์ž…๋‹ˆ๋‹ค.
110+
111+
112+
113+
## โœจ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋ ˆ์ด์–ด ๊ตฌ์กฐ
114+
115+
<img width="100%" alt="image" src="https://github.com/user-attachments/assets/13d75a37-2ac1-4e72-a708-d12b7dc6dd7a">
116+
117+
> [!NOTE]
118+
> ํ˜„์žฌ ์ €ํฌ์˜ Presentation Layer๋Š” ์œ„์™€ ๊ฐ™์ด ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
55119
>
56-
> ๋‹ค๋ฅธ ์„ ํƒ์ง€๋กœ๋Š” RxSwift๊ฐ€ ์žˆ์—ˆ๊ณ , ์„ฑ๋Šฅ๊ณผ ํผ์ŠคํŠธ ํŒŒํ‹ฐ๋ผ๋Š” ์ด์œ ์—์„œ Combine์„ ์„ ํƒํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
120+
> View๋Š” ์œ ์ € ์ธํ„ฐ๋ž™์…˜์ด ์ผ์–ด๋‚˜๋Š” ์ง€์ ์œผ๋กœ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ViewModel์—์„œ ์ฒ˜๋ฆฌ๋˜๋ฉฐ, ์ตœ์ข…์ ์œผ๋กœ View๋Š” ๊ฐฑ์‹ ๋œ ์ƒํƒœ๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.
121+
>
122+
> ํŠนํžˆ, ์‚ฌ์ง„ ํŽธ์ง‘๊ณผ ๊ฐ™์€ **์ด๋ฒคํŠธ ๋ฐœ์ƒ์ด ๋นˆ๋ฒˆํ•œ ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ**์—์„œ, ์ด๋ฒคํŠธ์™€ ์ƒํƒœ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด Input-Output ํŒจํ„ด์„ ๋„์ž…ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
57123
>
58-
> ๋งŒ์•ฝ ๋‹ค์–‘ํ•œ UI ์ปดํฌ๋„ŒํŠธ์™€์˜ ๋ฐ”์ธ๋”ฉ์ด ํ•„์š”ํ–ˆ๋‹ค๋ฉด RxSwift์™€ RxCocoa๋ฅผ ์‚ฌ์šฉํ–ˆ๊ฒ ์ง€๋งŒ,
124+
> View์—์„œ ๋ฐœ์ƒํ•˜๋Š” ํƒญ๊ณผ ๊ฐ™์€ ์ด๋ฒคํŠธ๋ฅผ **Input**, View์— ์ „๋‹ฌ๋  ๋ฐ์ดํ„ฐ ๋“ฑ์˜ ์ƒํƒœ๋ฅผ **Output**์œผ๋กœ ์ •์˜ํ•˜์—ฌ ๊ฐ ๊ฐ์ฒด์˜ ์—ญํ• ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
125+
>
126+
> ๋˜ํ•œ ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ์ƒˆ๋กœ์šด ์ด๋ฒคํŠธ๋‚˜ ์ƒํƒœ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ๊ตฌ์กฐ์ ์œผ๋กœ ์‘์ง‘๋˜์–ด ์žˆ์–ด ์‰ฝ๊ฒŒ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค.
127+
>
128+
> ์ถ”๊ฐ€์ ์œผ๋กœ ํŒ€ ๋‚ด PR ์š”์ฒญ์‹œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ•„์ˆ˜๋กœ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์—์„œ ๋™์ผํ•œ ํŒจํ„ด์„ ํ™œ์šฉํ•จ์œผ๋กœ์จ ๋น ๋ฅธ ๊ตฌ์กฐ ํŒŒ์•…์„ ํ†ตํ•ด ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์‹œ๊ฐ„์ด ๋‹จ์ถ•๋˜์–ด ์ƒ์‚ฐ์„ฑ์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
129+
130+
131+
## โœจ ๋ชจ๋“ˆ ๊ตฌ์กฐ
132+
133+
<img width="100%" alt="Group 1000003128" src="https://github.com/user-attachments/assets/6f1d3921-5a41-4034-a3cb-dea1dfbf493f">
134+
135+
> [!NOTE]
136+
> ์ €ํฌ์˜ ๋ชจ๋“ˆ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ชจ๋“ˆ์„ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ์ ‘๊ทผ์ œ์–ด์ž ์„ค์ •์„ ํ†ตํ•ด ํŠน์ • ๋ชจ๋“ˆ์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ๋•Œ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ๊ฐœ๋ฐœ์„ ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
59137
>
60-
> ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—์„  ํ™”๋ฉด์ด ์ ๊ณ  ๋น„๊ต์  UI ์ปดํฌ๋„ŒํŠธ๋“ค์ด ๊ฐ„๋‹จํ•ด Combine์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
138+
> ๋˜ํ•œ ๊ฐ Feature๋ณ„ DemoApp์„ ํ†ตํ•ด ๋ณ‘๋ ฌ์ ์ธ ํ™”๋ฉด ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•ด ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
139+
140+
141+
## ๐Ÿ’ป ๊ฐœ๋ฐœ ํ™˜๊ฒฝ
142+
<div align="center">
143+
<img height="22" src="https://img.shields.io/badge/iOS-16.0+-lightgray"> <img height="22" src="https://img.shields.io/badge/Xcode-16.0-blue"> <img height="22" src="https://img.shields.io/badge/Swift-5.9-orange"> <img height="22" src="https://img.shields.io/badge/Platform-iOS-blue">
144+
</div>
145+
146+
147+
## ๐Ÿ‘‹ ํŒ€์› ์†Œ๊ฐœ
148+
149+
<div align = center>
150+
151+
|[`S009` ๊น€๊ธฐ์˜](https://github.com/Kiyoung-Kim-57)|[`S034` ์†ก์˜๊ทœ](https://github.com/youn9k)|[`S035` ์†ก์˜ํ›ˆ](https://github.com/0Hooni)|[`S077` ํ™์Šน์™„](https://github.com/hsw1920)|
152+
| :--: | :--: | :--: | :--: |
153+
| <img src="https://avatars.githubusercontent.com/u/121777185?v=4" width=150> | <img src="https://avatars.githubusercontent.com/u/60254939?v=4" width=150> | <img src="https://avatars.githubusercontent.com/u/37678646?v=4" width=150> | <img src="https://avatars.githubusercontent.com/u/66902876?v=4" width=150> |
154+
| **`iOS`** | **`iOS`** | **`iOS`** | **`iOS`** |
61155

62-
### AVFoundation
156+
</br>
63157

64-
> ์นด๋ฉ”๋ผ ์ดฌ์˜ ๋ฐ ํŽธ์ง‘ ๊ทธ๋ฆฌ๊ณ  VoIP ๊ธฐ๋Šฅ์„ ์œ„ํ•ด ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
158+
| ๐Ÿท๏ธ ๋ฐ”๋กœ๊ฐ€๊ธฐ | [Wiki](https://github.com/boostcampwm-2024/iOS04-HARU/wiki) | [ํŒ€ ๋…ธ์…˜](https://www.notion.so/0hooni/HARU-12e07f89fdcd8077a443dbba60cb124d) | [๊ทธ๋ผ์šด๋“œ ๋ฃฐ](https://github.com/boostcampwm-2024/iOS04-HARU/wiki/๊ทธ๋ผ์šด๋“œ-๋ฃฐ) | [์ปจ๋ฒค์…˜](https://github.com/boostcampwm-2024/iOS04-HARU/wiki/์ปจ๋ฒค์…˜) | [ํšŒ์˜๋ก](https://www.notion.so/0hooni/05cb406cd61f460ba7294ae3ffa31f7e) | [๊ธฐํš/๋””์ž์ธ](https://www.figma.com/design/6jACkAa5WxD8mm4KgsPtzg/iOS04-GP?node-id=11-32851) |
159+
| :--------: | :---------------------------------------------------------: | :---------------------------------------------------------------------------: | :----------------------------------------------------------------------------: | :------------------------------------------------------------------: | :---------------------------------------------------------------------: | :------------------------------------------------------------------------------------------: |
65160

66-
|๐Ÿท๏ธ ๋ฐ”๋กœ๊ฐ€๊ธฐ|[Wiki](https://github.com/boostcampwm-2024/iOS04-HARU/wiki)|[ํŒ€ ๋…ธ์…˜](https://www.notion.so/0hooni/HARU-12e07f89fdcd8077a443dbba60cb124d)|[๊ทธ๋ผ์šด๋“œ ๋ฃฐ](https://github.com/boostcampwm-2024/iOS04-HARU/wiki/๊ทธ๋ผ์šด๋“œ-๋ฃฐ)|[์ปจ๋ฒค์…˜](https://github.com/boostcampwm-2024/iOS04-HARU/wiki/์ปจ๋ฒค์…˜)|[ํšŒ์˜๋ก](https://www.notion.so/0hooni/05cb406cd61f460ba7294ae3ffa31f7e)|[๊ธฐํš/๋””์ž์ธ](https://www.figma.com/design/6jACkAa5WxD8mm4KgsPtzg/iOS04-GP?node-id=11-32851)|
67-
|:-:|:-:|:-:|:-:|:-:|:-:|:--:|
161+
</div>

0 commit comments

Comments
ย (0)