์ฑ„๋„ํ†ก ์•„์ด์ฝ˜

์•จ๋Ÿฐ Swift Concurrency for Swift 6 (Part-2)

Swift Concurrency๋ฅผ A๋ถ€ํ„ฐ Z๊นŒ์ง€ ๋‹ค๋ฃน๋‹ˆ๋‹ค. (Part 2)

(5.0) ์ˆ˜๊ฐ•ํ‰ 25๊ฐœ

์ˆ˜๊ฐ•์ƒ 258๋ช…

๋‚œ์ด๋„ ์ค‘๊ธ‰์ด์ƒ

์ˆ˜๊ฐ•๊ธฐํ•œ 12๊ฐœ์›”

์ด๋ก  ์‹ค์Šต ๋ชจ๋‘
์ด๋ก  ์‹ค์Šต ๋ชจ๋‘
swift6
swift6
์ด๋ก  ์‹ค์Šต ๋ชจ๋‘
์ด๋ก  ์‹ค์Šต ๋ชจ๋‘
swift6
swift6

๋จผ์ € ๊ฒฝํ—˜ํ•œ ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ํ›„๊ธฐ

๋จผ์ € ๊ฒฝํ—˜ํ•œ ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ํ›„๊ธฐ

5.0

5.0

๊ฐฑ๋ชจ

31% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

Swift Concurrency ๋Š” ๊ณต๋ถ€ํ•˜๊ณ  ์‹ถ๊ณ  WWDC๋Š” ๋ณด๊ธฐ ๋„ˆ๋ฌด ํž˜๋“  ๋ถ„๋“ค์—๊ฒŒ ์ถ”์ฒœํ•ด์ฃผ๊ณ  ์‹ถ์€ ๊ฐ•์˜

5.0

์ดํƒœํ˜„

31% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

๊ฐ•์˜๊ฐ€ ์•Œ์ฐจ์„œ ๋„ˆ๋ฌด ๋งŒ์กฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

5.0

๊น€์‹œ์ข…

39% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

Swift Concurrency์— ๋Œ€ํ•ด์„œ ์•„์ฃผ ๋” ์ž์„ธํ•˜๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•์˜์ž๋ฃŒ์ธ ๊ฒƒ ๊ฐ™์•„์š” ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

์ˆ˜๊ฐ• ํ›„ ์ด๋Ÿฐ๊ฑธ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”

  • CS๋กœ ์ดํ•ดํ•˜๋Š” Swift Concurrency

  • ๊ธฐ์กด ์“ฐ๋ ˆ๋“œํ’€์˜ ๊ฐœ๋…๊ณผ ํ˜‘๋ ฅ์  ์“ฐ๋ ˆ๋“œํ’€๊ณผ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

  • Task isolation / Sendable

  • Actor์˜ ๊ธฐ๋ณธ ๊ฐœ๋… - ๊ฒฉ๋ฆฌ / ๋น„๊ฒฉ๋ฆฌ

  • Actor์˜ ํ™œ์šฉ - ์›์ž์„ฑ/์žฌ์ง„์ž…/hopping/์ตœ์ ํ™”

  • Actor - ์ƒ์„ฑ์ž/์†Œ๋ฉธ์ž/ํ”„๋กœํ† ์ฝœ/์ƒ์†/ํ™•์žฅ ๊ทœ์น™

  • ์ „์—ญ ์•กํ„ฐ / MainActor

  • AsyncSequence / AsyncStream

  • Custom ์‹คํ–‰์ž(Executor)์˜ ๊ตฌํ˜„๊ณผ ์„ ํ˜ธ๋„ ๊ฐœ๋…

  • Non-Sendableํƒ€์ž…์˜ ์ „์†ก๊ณผ ํ•จ์ˆ˜ ๊ฒฉ๋ฆฌ ๋ฌธ์ œ

โ›” ๋ณธ ๊ฐ•์˜๋Š” ๊ต์žฌ(์ „์ž์ฑ…PDF)๋ฅผ ๋ณ„๋„๋กœ ๊ตฌ์ž…ํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. โ›”

(๋ณธ ๊ฐ•์˜๋Š” ๊ต์žฌ๋ฅผ ์ œ์ž‘ํ•˜๋Š” ๋ฐ 1๋…„์ด์ƒ์˜ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋งŒํผ ํ•™์Šต์„ ์œ„ํ•œ ์ตœ์ /์ตœ์ƒ์˜ ๋‚ด์šฉ๊ณผ ์ง€๊ตฌ์ƒ์—์„œ ์–ด๋– ํ•œ Swift Concurrency ๊ด€๋ จ ๋‚ด์šฉ๋ณด๋‹ค ๋””ํ…Œ์ผํ•œ ํ•™์Šต ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ•์˜ ํ€„๋ฆฌํ‹ฐ ์œ ์ง€๋ฅผ ์œ„ํ•ด.. ๋ณ„๋„๋กœ ๊ต์žฌ๋ฅผ ํŒ๋งคํ•˜๊ณ  ์žˆ์Œ์„ ์–‘ํ•ด ๋ถ€ํƒ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ต์žฌ ๊ตฌ์ž…์€ ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ๊ฐ•์˜๋งŒ ๊ตฌ์ž…ํ•˜์…”๋„ ์ „ํ˜€ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค.)

Swift Concurrency for Swift 6 by Allen (Part -1 / Part -2 ํ†ตํ•ฉ ๊ต์žฌ)

ํŒ๋งค์ฒ˜๋งํฌ: https://smartstore.naver.com/allenschool/products/11528874881
(30,000์›)

๋ณธ ๊ฐ•์˜๋ฅผ ์ง์ ‘์ ์œผ๋กœ ์ˆ˜๊ฐ•ํ•˜์ง€ ์•Š์œผ์‹œ๋”๋ผ๋„ ๊ต์žฌ๋งŒ ๋”ฐ๋กœ ๊ตฌ์ž…๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. (๋‹ค๋งŒ, ๊ฐ•์˜ ๋ชฉ์ ์„ ์œ„ํ•ด ์ตœ์ ํ™”๋œ ์ž๋ฃŒ์ด๋ฏ€๋กœ, ๊ต์žฌ๋งŒ ๊ตฌ์ž…์‹œ ์ดํ•ด๋˜์ง€ ์•Š๋Š” ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ ์„ ๋™์˜ํ•˜์‹ ๋‹ค๋ฉด ๊ฐ•์˜๋ฅผ ๊ตฌ์ž…ํ•˜์ง€ ์•Š์œผ์‹œ๊ณ  ๊ต์žฌ๋งŒ ๊ตฌ์ž…ํ•˜์‹œ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.)

Swift Concurrency for Swift 6 (ํŒŒํŠธ - 2) โœ๐Ÿป

๋ถ€์ œ: Swift 6๋กœ ๋‚˜์•„๊ฐ€๊ธฐ ์œ„ํ•œ ์Šค์œ„ํ”„ํŠธ ๋™์‹œ์„ฑ(Swift Concurrency) ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ œ๋Œ€๋กœ ํ•™์Šตํ•˜๊ธฐ


๐ŸŒฟ๐ŸŒฟ๐ŸŒฟ

CS์— ๊ธฐ๋ฐ˜ํ•œ ํƒ„ํƒ„ํ•œ ๊ธฐ๋ณธ๊ธฐ์™€
๋””ํ…Œ์ผํ•œ ํ•œ ๋— ์ฐจ์ด๊ฐ€
์‹ค๋ ฅ์˜ ์ฐจ์ด๋ฅผ ๋งŒ๋“ค์–ด ๋‚ธ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๐ŸŒฟ๐ŸŒฟ๐ŸŒฟ



์Šค์œ„ํ”„ํŠธ๋Š” 5.5 ๋ฒ„์ „์—์„œ ์ƒˆ๋กœ์šด ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Swift Concurrency)์ด ๋„์ž…๋œ ์ดํ›„, ๋‹จ๊ณ„ ๋ณ„ ์ค€๋น„๋ฅผ ๊ฑฐ์ณ ๋“œ๋””์–ด 6 ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Swift 6 ๋ฒ„์ „์˜ ํ•ต์‹ฌ์ ์ธ ๋ชฉํ‘œ ์ค‘์˜ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ ์ฝ”๋“œ์˜ ์ž ์žฌ์ ์ธ ๋ฐ์ดํ„ฐ ๊ฒฝํ•ฉ(Race Condition/Data-Races) ๊ฐ€๋Šฅ์„ฑ์„ ์ œ๊ฑฐํ•˜๊ณ  ์ปดํŒŒ์ผ ๋‹จ๊ณ„๋ถ€ํ„ฐ Thread-Safe(์“ฐ๋ ˆ๋“œ ์•ˆ์ „) ํ•œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•˜๋ ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

(์šฐ๋ฆฌ๋Š” ์ ์ง„์ ์ธ Swift 6์˜ ๋„์ž…์„ ์œ„ํ•œ ์ „ํ™˜์ ์— ๋งž๋‹ฟ์•„์žˆ์Šต๋‹ˆ๋‹ค.)


๋”ฐ๋ผ์„œ ๋ณธ ๊ฐ•์˜๋Š” ์ ์ฐจ Swift 6๋กœ ๋‚˜์•„๊ฐ€๊ธฐ ์œ„ํ•ด, Swift Concurrency์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ๋‚ด์šฉ. ์ฆ‰, A๋ถ€ํ„ฐ ~ Z๊นŒ์ง€๋ฅผ ํ•™์Šตํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜์—ฌ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ๊ณผ์ •์˜ ์ฃผ์š” ๋‚ด์šฉ์€ ์•„๋ž˜์—์„œ ์ฐธ๊ณ  ๋ถ€ํƒ๋“œ๋ฆฌ๋ฉฐ, ์ฒซ๋ฒˆ์งธ ๊ฐ•์˜ ์†Œ๊ฐœ ์˜์ƒ์—์„œ ๊ณผ์ •์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…๋“œ๋ฆฌ๊ณ  ์žˆ์œผ๋‹ˆ, ์ด ๋˜ํ•œ ์ฐธ๊ณ  ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

(Part-1 / 2 ๋‚ด์šฉ๊นŒ์ง€ ๋ชจ๋‘ ํ•™์Šตํ•˜๊ฒŒ ๋˜์‹œ๋ฉด, Swift 6์˜ ๋„์ž…์„ ์œ„ํ•œ ์ด๋ก ์ ์ธ ํ† ๋Œ€๊ฐ€ ์™„์„ฑ๋˜๋ฆฌ๋ผ ๋ด…๋‹ˆ๋‹ค.)


ํ•ญ์ƒ ์ œ ๊ฐ•์˜์˜ ๊ฐœ์ธ์ ์ธ ๋ชฉํ‘œ์ด์ง€๋งŒ, ์ง€๊ตฌ ์ƒ์—์„œ ์–ด๋– ํ•œ Swift Concurrency ๊ด€๋ จ ๊ฐ•์˜๋ณด๋‹ค ๋” ์ž์„ธํ•˜๊ณ  ๊นŠ์€ ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. (์ง‘์ฐฉ๊ณผ ๊ฐ™์€ ๋””ํ…Œ์ผํ•œ ํ•œ ๋— ์ฐจ์ด๊ฐ€ ์‹ค๋ ฅ์˜ ์ฐจ์ด๋ฅผ ๋งŒ๋“ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ์—, ํ•ญ์ƒ ๋‹ค์–‘ํ•œ ์ฝ”๋“œ ์˜ˆ์‹œ์™€ ์ •๋ฆฌ๋œ ์ž๋ฃŒ๋ฅผ ์ œ๊ณตํ•ด ๋“œ๋ฆฌ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.)

(2) Part - 2์—์„œ ์ฃผ๋กœ ๋‹ค๋ฃจ๋Š” ๋‚ด์šฉ (๋ณธ ๊ฐ•์˜) โญ๏ธโญ๏ธโญ

  • ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ Computer Science ๊ด€์ ์—์„œ ์ดํ•ดํ•˜๊ธฐ (์“ฐ๋ ˆ๋“œ/๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์˜ ์ดํ•ด)

  • Data Isolation / Task Isolation / Actor Isolation (๊ฒฉ๋ฆฌ ๊ฐœ๋…์˜ ์ดํ•ด)

  • Task Isolation๊ณผ Shared Mutable State (๊ณต์œ  ๋ฐ์ดํ„ฐ)

  • Sendable ํƒ€์ž… (์“ฐ๋ ˆ๋“œ ๊ฐ„์— ๊ณต์œ ํ•ด๋„ ์•ˆ์ „ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…)

  • Actor ์™„์ „ ์ •๋ณต (1) ๊ฒฉ๋ฆฌ/๋น„๊ฒฉ๋ฆฌ (2) ์›์ž์„ฑ (3) ์žฌ์ง„์ž… (4) ์•กํ„ฐ ํ™‰ํ•‘

  • (5) ๋ฉ”์ธ์•กํ„ฐ ๋ธ”๋กœํ‚น (6) ์•กํ„ฐ ๊ฒฝํ•ฉ ํ•ด๊ฒฐํ•˜๊ธฐ

  • ๊ธ€๋กœ๋ฒŒ ์•กํ„ฐ์™€ ๋ฉ”์ธ์•กํ„ฐ

  • ์•กํ„ฐ๋กœ ์บ์‹œ(cache) ๊ตฌํ˜„ํ•˜๊ธฐ ํ”„๋กœ์ ํŠธ ์˜ˆ์‹œ

  • AsyncSequence (๋น„๋™๊ธฐ ์‹œํ€€์Šค)์™€ AsyncStream (๋น„๋™๊ธฐ ์ŠคํŠธ๋ฆผ)

  • ์›น์†Œ์ผ“์— AsyncStream ์ ์šฉํ•˜๊ธฐ ํ”„๋กœ์ ํŠธ ์˜ˆ์‹œ

  • Non-Sendable ํƒ€์ž…์˜ ์ „์†ก (sending)

  • ํ•จ์ˆ˜(ํด๋กœ์ €)์˜ ๊ฒฉ๋ฆฌ ๊ด€๋ จ ๋ฌธ์ œ - isolated (Actor)? = #isolation / @isolated(any)

  • Custom ์‹คํ–‰์ž(Executor)์˜ ๊ตฌํ˜„ / Task ์‹คํ–‰์ž(Executor) ์„ ํ˜ธ๋„

  • (์ฐธ๊ณ ) consume / consuming ํ‚ค์›Œ๋“œ

  • ์•กํ„ฐ์˜ ๋ฌธ๋ฒ• ๊ทœ์น™ ์‹ฌํ™” - ์ƒ์„ฑ์ž / ์†Œ๋ฉธ์ž / ํ”„๋กœํ† ์ฝœ / ์ƒ์† / ํ™•์žฅ

  • Swift5 ์—์„œ Swift6๋กœ ๋„˜์–ด๊ฐ€๊ธฐ

  • Instruments ์‚ฌ์šฉํ•ด์„œ ํ”„๋กœ์ ํŠธ ๋ถ„์„ํ•˜๊ธฐ

(1) Part - 1์—์„œ ์ฃผ๋กœ ๋‹ค๋ฃจ๋Š” ๋‚ด์šฉ (๊ธฐ์กด ๊ฐ•์˜)

  • Task / async / await ์˜ ์ œ๋Œ€๋กœ ๋œ ์ดํ•ด


  • ๋น„๋™๊ธฐ(async) ํ•จ์ˆ˜์˜ ๋™์ž‘ ๋ฐฉ์‹

  • URLSession๊ด€๋ จ ์‹ ๊ทœ ๋น„๋™๊ธฐ API ์†Œ๊ฐœ

  • Continuation์˜ ์‚ฌ์šฉ (1) ์ฝœ๋ฐฑํ•จ์ˆ˜ / (2) ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ๋ฐฉ์‹์„ ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ์ „ํ™˜

  • ์œ„์น˜์•ฑ(CoreLocation)์˜ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ๋ฐฉ์‹์„ async/await์œผ๋กœ ์ „ํ™˜ ํ”„๋กœ์ ํŠธ ์˜ˆ์‹œ

  • ๊ตฌ์กฐ์  ๋™์‹œ์„ฑ์˜ ์ด๋ก ์ ์ธ ๋‚ด์šฉ

  • ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ - (1) async let (2) TaskGroup

  • ์ž‘์—…์˜ ์ทจ์†Œ ๋™์ž‘ ๋ฐฉ์‹์˜ ์ดํ•ด (์ž‘์—… ์ทจ์†Œ ๊ด€๋ จ ํ”„๋กœ์ ํŠธ ์˜ˆ์‹œ)

  • ํ˜‘๋ ฅ์  ์ทจ์†Œ ๋ชจ๋ธ์˜ ์ดํ•ด

  • ๊ตฌ์กฐ์  ๋™์‹œ์„ฑ๊ณผ ์ž‘์—…์˜ ์ทจ์†Œ์˜ ์‘์šฉ

  • TaskGroup์˜ ์‘์šฉ (๋™์‹œ ์“ฐ๋ ˆ๋“œ ๊ฐฏ์ˆ˜์˜ ์ง€์ • - ์ปค์Šคํ…€ ์„ค์ •)

  • Task-Local๋ณ€์ˆ˜์˜ ํ™œ์šฉ

Part-1 ๊ฐ•์˜๋งํฌ: https://inf.run/jXpfH

์ด ๊ฐ•์˜์˜ ํŠน์ง•

๐Ÿ“Œ Swift Concurrency ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ A๋ถ€ํ„ฐ ~ Z๊นŒ์ง€ ๋‹ค๋ฃจ๊ณ ์ž ํ•˜๋Š” ๋ชฉํ‘œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ (Swift 6์˜ ๋ชฉํ‘œ์ธ) ์ปดํŒŒ์ผ ํƒ€์ž„์—์„œ๋ถ€ํ„ฐ ์—ฌ๋Ÿฌ์“ฐ๋ ˆ๋“œ ๊ฐ„์— ์•ˆ์ „ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ‘๊ฑฐ๋ฆ„์ด ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ ํ˜„์กดํ•˜๋Š” ๋ชจ๋“  WWDC - Swift Concurrency ๊ด€๋ จ ์˜์ƒ๋“ค์„ ์™„๋ฒฝ ๋ถ„์„ํ•˜์—ฌ ๋งŒ๋“  ๊ฐ•์˜ ์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ ํ˜„์กดํ•˜๋Š” ๋ชจ๋“  Swift Evolution ๋ฌธ์„œ(github)๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๋งŒ๋“  ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ ์ˆ˜๋งŽ์€ Concurrency ๊ด€๋ จ ํ•ด์™ธ ์„œ์ , ๊ฐ•์˜ ๋“ฑ์„ ๋ถ„์„ํ•˜์—ฌ ์ตœ๋Œ€ํ•œ ๋ชจ๋“  ๋‚ด์šฉ์„ ๋น ์ง์—†์ด ๋‹ค๋ฃน๋‹ˆ๋‹ค.

๐Ÿ“Œ ๋‹ค์–‘ํ•œ ์˜ˆ์ œ ํ”„๋กœ์ ํŠธ

๐Ÿ“Œ ๊ทธ๋ž˜์„œ ์ง€๊ตฌ์ƒ์˜ ์–ด๋– ํ•œ Swift Concurrency ๊ฐ•์˜๋ณด๋‹ค ์ž์„ธํ•˜๊ฒŒ !!!!

๐Ÿ“Œ (์ œ ๊ฐ•์˜๋Š” ํ•ญ์ƒ ๊ทธ๋ž˜์™”์ง€๋งŒ) ์ตœ๋Œ€ํ•œ ์ง๊ด€์ ์ธ ์ดํ•ด์™€ ์ •๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ณ„๋„์˜ ํ•™์Šต ์ž๋ฃŒ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ•™์Šต์„ ์œ„ํ•œ ์ตœ์ƒ์˜ ์ž๋ฃŒ๋ฅผ ์‚ฌ์šฉํ•ด์š”.

๋ณ„๋„ ๊ต์žฌ(์ „์ฐจ์ฑ… PDF) ๊ตฌ์ž… ๊ฐ€๋Šฅ

์ตœ๋Œ€ํ•œ ์ง๊ด€์ ์ธ ์„ค๋ช…์„ ์œ„ํ•ด ๋ณ„๋„์˜ 300ํŽ˜์ด์ง€ ๋ถ„๋Ÿ‰์˜ ๊ต์žฌ๋กœ ์„ค๋ช…์„ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
(๊ต์žฌ๋Š” ๋ณ„๋„ ๊ตฌ์ž…ํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

๊ณต์‹๋ฌธ์„œ ๋ฒˆ์—ญ๋ณธ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฒˆ์—ญ์ž๋ฃŒ ์ œ๊ณต

์ตœ๋Œ€ํ•œ ํ•™์Šต์˜ ์‹œ๊ฐ„์„ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•œ Swift 6 (Concurrency) ๊ณต์‹๋ฌธ์„œ, API Collection ๊ณต์‹๋ฌธ์„œ ๋“ฑ์˜ ๋ฒˆ์—ญ๋ณธ์„ ์ œ๊ณตํ•ด๋“œ๋ ค์š”.

๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ ์˜ˆ์‹œ ์ฝ”๋“œ ์ž๋ฃŒ ์ œ๊ณต

์ด๋ก ์ ์ธ ๋‚ด์šฉ ๋ฟ๋งŒ์•„๋‹ˆ๋ผ, ํ•™์Šต ๋‚ด์šฉ์„ ํ”„๋กœ์ ํŠธ์— ์ง์ ‘ ์ ์šฉํ•ด ๋ณด๋ฉด์„œ ์‹ฌํ™” ํ•™์Šต์„ ํ•ด๋ด…๋‹ˆ๋‹ค.

์ด๋ก  ํ•™์Šต ์ฝ”๋“œ ์ž๋ฃŒ ์ œ๊ณต

์ตœ์ƒ์˜ ์ด๋ก ์ ์ธ ํ•™์Šต์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ์˜ˆ์‹œ์˜ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ ์ฝ”๋“œ ์ž๋ฃŒ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ  ์‚ฌํ•ญ

๊ต์žฌ ๋ณ„๋„ ํŒ๋งค (3๋งŒ์›)

  • ๊ฐ•์˜์šฉ - ์ „์ž์ฑ… PDF (๊ต์žฌ) ๋ณ„๋„ ํŒ๋งค (Part-1 / Part-2 ํ†ตํ•ฉ ๊ต์žฌ)

  • ๋งํฌ: https://smartstore.naver.com/allenschool/products/11528874881
    (๊ต์žฌ ์ด์™ธ์˜ ์ฝ”๋“œ ์ž๋ฃŒ๋Š” ๋ฌด๋ฃŒ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.)

1. ์ถ”๊ฐ€ ์ž๋ฃŒ ์ œ๊ณต (์ฝ”๋“œ ์ž๋ฃŒ๋Š” ๋ฌด๋ฃŒ ์ œ๊ณต์ž…๋‹ˆ๋‹ค.)

  • ์ฝ”๋“œ์ž๋ฃŒ ์ œ๊ณต /

    ํ”„๋กœ์ ํŠธ ์˜ˆ์ œ ์ œ๊ณต

  • ๋‹ค์ˆ˜์˜ ๋ฒˆ์—ญ๋ณธ ์ œ๊ณต (Swift 6 - Concurrency / API Collection / Migrating to Swift 6)

2. ์„ ์ˆ˜ ์ง€์‹ ๋ฐ ์œ ์˜์‚ฌํ•ญ

  • Swift ๋ฌธ๋ฒ•์˜ ๊ธฐ๋ณธ์ ์ธ ์‚ฌํ•ญ - ํ•จ์ˆ˜, ํด๋กœ์ € ๋“ฑ์„ ์ž์œ ์ž์žฌ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€

  • ๊ธฐ์กด์˜ ๋น„๋™๊ธฐ ์ฝœ๋ฐฑํ•จ์ˆ˜, DispatchQueue ๋“ฑ์„ ๋‹ค๋ค„๋ณธ ๊ธฐ๋ณธ์ ์ธ ์ง€์‹

  • Swift๋กœ ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ API(URLSession ๋“ฑ)๋ฅผ ๋‹ค๋ค„๋ณธ ๊ฒฝํ—˜

  • ๊ธฐ์ดˆ์ ์ธ ์ˆ˜์ค€์˜ UIKit, SwiftUI ์ง€์‹

3. ์‹ค์Šต ํ™˜๊ฒฝ

  • macOS Sequoia / Xcode 16.2 ์ด์ƒ

๐Ÿ’Œ ๊ฐ•์˜ ๋‚ด์šฉ ๋ผ์ด์„ผ์Šค ๊ด€๋ จ


๋ณธ ๊ฐ•์˜์˜ ๋‚ด์šฉ๋“ค์€, ์ œ๊ฐ€ ์กฐ๊ธˆ์ด๋ผ๋„ ๊ทธ๋ฆผ ๋“ฑ์„ ์ฐธ๊ณ ํ•œ ๊ฒฝ์šฐ์— PDF์—๊ด€๋ จ URL์ฃผ์†Œ๊ฐ€ ๋‚จ๊ฒจ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์ž๋ฃŒ๋Š” ์ œ๊ฐ€ ์ž‘์„ฑํ•œ ์ž๋ฃŒ์ด๊ธฐ์—, ๋ณธ ๊ฐ•์˜์˜ ๋‚ด์šฉ์„ ๋ธ”๋กœ๊ทธ์— ๋‹ด๋Š” ๊ฒƒ๊ณผ ๊ฐ•์˜์ž๋ฃŒ๋กœ ์“ฐ์ด๋Š” ์ „์ž์ฑ… ๊ต์žฌ PDFํŒŒ์ผ์˜ ๊ณต์œ ๋Š” ์–ด๋– ํ•œ ๊ฒฝ์šฐ์—๋„ ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค.

(๋ณธ ๋ผ์ด์„ผ์Šค ๊ด€๋ จ ๋‚ด์šฉ์„ ์–ด๊ธธ์‹œ, ๋ฒ•์ ์ธ ์ฑ…์ž„์„ ์ง€๊ฒŒ ๋˜์‹ค ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋ฐ˜๋“œ์‹œ ์œ ์˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.)

Q. ๊ฐ•์˜๋Š” ํ‰์ƒ ์ˆ˜๊ฐ•์ธ๊ฐ€์š”?

A. ํ‰์ƒ ์ˆ˜๊ฐ•์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ณธ ๊ฐ•์˜๋Š” 12๊ฐœ์›”์˜ ๊ฐ•์˜ ์ˆ˜๊ฐ•์— ๋Œ€ํ•œ ์ œํ•œ ๊ธฐ๊ฐ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ์˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. (์ œ ๊ฐ•์˜๋ฅผ ๊ณต์œ ํ•˜๋Š” ์‚ฌ๋ก€๋ฅผ ์—ฌ๋Ÿฌ ์ฐจ๋ก€ ๊ฒฝํ—˜ํ•œ ๊ฒฐ๊ณผ.. ๊ทธ๋ฆฌ๊ณ  ์ œ๊ฐ€ ๋“ค์ด๋Š” ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ๋Œ€๋น„ ํฐ ๋ˆ์„ ๋ฒŒ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋„ ์•„๋‹ˆ๊ธฐ์—.. ์ œ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์„ ์˜ ๊ฐ•์˜ ๊ณต์œ  ๋ฐฉ์ง€ ๋Œ€์ฑ…์ผ ๋ฟ์ด๋‹ˆ, ๋„“์€ ์•„๋Ÿ‰์œผ๋กœ ์ดํ•ด๋ฅผ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค ๐Ÿ™๐Ÿป)

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • Swift Concurrency๋ฅผ ์‹ฌํ™”ํ•™์Šตํ•˜๊ณ  ์‹ถ์œผ์‹  ๋ถ„

  • CS ๋‚ด์šฉ๊นŒ์ง€ ์ œ๋Œ€๋กœ ๊ณต๋ถ€ํ•˜์‹ค ๋ถ„

  • WWDC์˜์ƒ ๊ทธ ์ด์ƒ์œผ๋กœ ์”น์–ด๋จน๊ณ  ์‹ถ์œผ์‹  ๋ถ„!!!!!!

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • Swift ์–ธ์–ด์˜ ๊ธฐ๋ณธ๊ธฐ

  • ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ์ง€์‹ ์ˆ˜์ค€

์•ˆ๋…•ํ•˜์„ธ์š”
์•จ๋Ÿฐ(Allen)์ž…๋‹ˆ๋‹ค.

7,604

๋ช…

์ˆ˜๊ฐ•์ƒ

754

๊ฐœ

์ˆ˜๊ฐ•ํ‰

311

๊ฐœ

๋‹ต๋ณ€

5.0

์ 

๊ฐ•์˜ ํ‰์ 

7

๊ฐœ

๊ฐ•์˜

iOS๊ฐœ๋ฐœ์ž ์•จ๋Ÿฐ์ž…๋‹ˆ๋‹ค.
https://www.youtube.com/@allen_ios

"์ •ํ™•ํ•˜๊ฒŒ ์•„๋Š” ์ง€์‹์€, ์‰ฝ๊ฒŒ ์ž์‹ ์˜ ๋ง๋กœ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค."๊ฐ€ ์ œ ๋ชจํ† ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ์— ์ œ๊ฐ€ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๊ฒช์—ˆ๋˜ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ์‰ฝ๊ฒŒ ํ’€์–ด๋‚ด์–ด
๋ˆ„๊ตฌ๋“  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋กœ ์ง€์‹์„ ๊ณต์œ ํ•  ์ˆ˜์žˆ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ ์‹ถ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์‰ฌ์šด ์ฃผ์ œ๋กœ ๋น ๋ฅธ ์‹œ๊ฐ„ ์•ˆ์— ๊ฒ‰ํ•ฅ๊ธฐ ์‹์œผ๋กœ ์‰ฝ๊ฒŒ๋งŒ ๊ฐ€๋ฅด์น˜๋Š” ๊ฐ•์˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์—๋Š” ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๊ฐ•์˜๋Š” ์–ผ๋งˆ๋“ ์ง€ ๋น ๋ฅด๊ฒŒ ์ฐ์–ด๋‚ด๋“ฏ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ, ๊ฒฐ๊ตญ "์ข‹์€ ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅ"ํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋งŒํผ ์ด๋ก ์ ์ธ ๊ธฐ๋ฐ˜์˜ ๋ฐ‘๊ฑฐ๋ฆ„์ด ํƒ„ํƒ„ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋ฏฟ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์‰ฌ์šด ๊ฐ•์˜๋ณด๋‹ค๋Š”, ์ข‹์€ ๊ฐœ๋ฐœ์ž(๋Š์ž„์—†์ด ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž)๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด
๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•˜๋Š” ์–ด๋ ค์šด ๋‚ด์šฉ๊นŒ์ง€๋ฅผ ์ตœ๋Œ€ํ•œ ์‰ฝ๊ฒŒ, ๊ทธ๋ฆฌ๊ณ  ์ง๊ด€์ ์œผ๋กœ ์•Œ๋ ค๋“œ๋ฆฌ๋Š” ๊ฒƒ.
๊ทธ๋ž˜์„œ ์ œ๊ฐ€ ์•„๋‹Œ ์—ฌ๋Ÿฌ๋ถ„ ์Šค์Šค๋กœ WHY(์™œ)๋ฅผ ๊ณ ๋ฏผ/์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ‘๊ฑฐ๋ฆ„์„ ๋งŒ๋“ค์–ด ๋“œ๋ฆฌ๋Š” ๊ฒƒ์„ ์ €์˜ ๊ฐ•์˜ ๋ชฉํ‘œ๋กœ ์‚ผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ € ์Šค์Šค๋กœ๋„ ๋‚ด์ผ์€ ๋” ์ข‹์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์ž๊ณ  ๋…ธ๋ ฅํ•˜๋Š” ๋งŒํผ
์ œ๊ฐ€ ๊ณ ๋ฏผ ํ–ˆ๋˜ ๋‚ด์šฉ๋“ค์„ ๊นŠ์ด์žˆ๊ฒŒ ์ „๋‹ฌ ๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

 

๋ฉด์ ‘์—์„œ ์ž๊พธ ๋–จ์–ด์ง€๊ฑฐ๋‚˜, ์‰ฌ์šด ๋‚ด์šฉ๋„ ์ž์‹ ์˜ ์–ธ์–ด๋กœ ์ž˜ ํ‘œํ˜„ํ•˜์ง€ ๋ชปํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์€ ์ •ํ™•ํ•˜๊ฒŒ ์•Œ๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋Š” ์˜๋ฏธ๋ผ๊ณ ๋„ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ, CS์— ๋Œ€ํ•ด "ํƒ„ํƒ„ํ•œ ๊ธฐ๋ณธ๊ธฐ"๊ฐ€ ์žˆ์–ด์•ผ, ๋น ๋ฅด๊ฒŒ ์„ฑ์žฅ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.


๐Ÿ‘‡๐Ÿป๋ฌธ์˜๋Š” ์•„๋ž˜์˜ ์ด๋ฉ”์ผ๋กœ ์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

we.love.code.allen@gmail.com


์–ธ์–ด: Swift(์Šค์œ„ํ”„ํŠธ), Python, Java, C#

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

71๊ฐœ โˆ™ (16์‹œ๊ฐ„ 2๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

25๊ฐœ

5.0

25๊ฐœ์˜ ์ˆ˜๊ฐ•ํ‰

  • ๋ฐ•๊ถŒ์šฉ๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    ๋ฐ•๊ถŒ์šฉ

    ์ˆ˜๊ฐ•ํ‰ 5

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    61% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    • ๊ฐฑ๋ชจ๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
      ๊ฐฑ๋ชจ

      ์ˆ˜๊ฐ•ํ‰ 2

      โˆ™

      ํ‰๊ท  ํ‰์  5.0

      5

      31% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

      Swift Concurrency ๋Š” ๊ณต๋ถ€ํ•˜๊ณ  ์‹ถ๊ณ  WWDC๋Š” ๋ณด๊ธฐ ๋„ˆ๋ฌด ํž˜๋“  ๋ถ„๋“ค์—๊ฒŒ ์ถ”์ฒœํ•ด์ฃผ๊ณ  ์‹ถ์€ ๊ฐ•์˜

      • ๋ฅ˜์ฐฝํœ˜๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
        ๋ฅ˜์ฐฝํœ˜

        ์ˆ˜๊ฐ•ํ‰ 1

        โˆ™

        ํ‰๊ท  ํ‰์  5.0

        5

        31% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

        • jkjk950๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
          jkjk950

          ์ˆ˜๊ฐ•ํ‰ 3

          โˆ™

          ํ‰๊ท  ํ‰์  5.0

          5

          34% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

          • ์ดํƒœํ˜„๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
            ์ดํƒœํ˜„

            ์ˆ˜๊ฐ•ํ‰ 3

            โˆ™

            ํ‰๊ท  ํ‰์  5.0

            5

            31% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

            ๊ฐ•์˜๊ฐ€ ์•Œ์ฐจ์„œ ๋„ˆ๋ฌด ๋งŒ์กฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

            ์•จ๋Ÿฐ(Allen)๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜

            ์ง€์‹๊ณต์œ ์ž๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

            ๋น„์Šทํ•œ ๊ฐ•์˜

            ๊ฐ™์€ ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

            ์ง€์‹๊ณต์œ ์ž์˜ ๊นœ์งํ• ์ธ ์ค‘

            ์›” โ‚ฉ761,086

            5๊ฐœ์›” ํ• ๋ถ€ ์‹œ

            24%

            โ‚ฉ242,000

            โ‚ฉ3,805,430