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

์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต์‹ ์–ธ์–ด : ์ฝ”ํ‹€๋ฆฐ(Kotlin) ์‹œ์ž‘ํ•˜๊ธฐ

๋‹จ์ˆœํžˆ ์ฝ”ํ‹€๋ฆฐ ๋ฌธ๋ฒ•๋งŒ ๋‹ค๋ฃจ๋Š”๊ฒƒ์ด ์•„๋‹Œ ์š”์ฆ˜ ์œ ํ–‰ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ• ๋ฐ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. MVP๋ฅผ ํ†ตํ•œ ์•ˆ๋“œ๋กœ์ด๋“œ TDD ๊ฐœ๋…์„ ๋ฐฐ์šฐ๊ธฐ๋„ ์ข‹์Šต๋‹ˆ๋‹ค.

Thumbnail

์ดˆ๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[๋ชจ๋ฐ”์ผ ์•ฑ ๊ฐœ๋ฐœ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • ์ฝ”ํ‹€๋ฆฐ์˜ ๊ธฐ๋ณธ ๋ฐ ๊ณ ๊ธ‰ ๋ฌธ๋ฒ•

  • ์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ ๊ตฌ์กฐ ์ดํ•ด

  • Kotlin์„ ์‚ฌ์šฉํ•œ ํ™”๋ฉด ๊ตฌ์„ฑ ๋ฐ API ํ†ตํ•ฉ

  • ์•ˆ๋“œ๋กœ์ด๋“œ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด(MVC, MVP, MVVM)

  • UI ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ ๋ฐ ์œ ๋‹› ํ…Œ์ŠคํŠธ

์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต์‹ ์–ธ์–ด : ์ฝ”ํ‹€๋ฆฐ(Kotlin) ์‹œ์ž‘ํ•˜๊ธฐ

์ฝ”ํ‹€๋ฆฐ์€ ์ ฏ๋ธŒ๋ ˆ์ธ์ด๋ผ๋Š” ๊ธฐ์—…์ด 2011๋…„ ๋งŒ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ์˜คํ”ˆ์†Œ์Šค ์–ธ์–ด์ด๋ฉฐ, ์ž๋ฐ”๊ฐ€์ƒ๋จธ์‹ (JVM) ์–ธ์–ด๋ผ ์ž๋ฐ”์™€ ํ˜ธํ™˜๋˜๊ณ  ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์— ์ฃผ๋กœ ํ™œ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ฝ”ํ‹€๋ฆฐ์€ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์œ ๋ช…ํ•œ ์ œ์ดํฌ ์™“์Šจ์ด ์•Œ๋ฆฌ๋ฉด์„œ ์œ ๋ช…์„ธ๋ฅผ ํƒ€๊ธฐ ์‹œ์ž‘ํ–ˆ์œผ๋ฉฐ, ๊ตญ๋‚ด์—์„œ๋„ ์†Œ๊ทœ๋ชจ ๋ฐ‹์—…๋ถ€ํ„ฐ ์˜จ๋ผ์ธ ์ปค๋ฎค๋‹ˆํ‹ฐ๊นŒ์ง€ ์ ์ฐจ ํ™•์‚ฐ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 5์›” 18์ผ์—๋Š” ๊ตฌ๊ธ€์ด ์ฝ”ํ‹€๋ฆฐ์„ ๊ณต์‹ ์ง€์›ํ•˜๊ฒ ๋‹ค๋Š” ๋ฐœํ‘œ๋„ ํ–ˆ์—ˆ์ฃ .
 
์ด ๊ฐ•์˜๋Š” ํŠนํžˆ ์ž๋ฐ” ๋ฐ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ๋„์›€์„ ์žˆ๋„๋ก ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ฝ”ํ‹€๋ฆฐ ๋ฌธ๋ฒ•๋งŒ ๋‹ค๋ฃจ๋Š”๊ฒƒ์ด ์•„๋‹Œ ์š”์ฆ˜ ์œ ํ–‰ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ• ๋ฐ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. MVP๋ฅผ ํ†ตํ•œ ์•ˆ๋“œ๋กœ์ด๋“œ TDD ๊ฐœ๋…์„ ๋ฐฐ์šฐ๊ธฐ๋„ ์ข‹์Šต๋‹ˆ๋‹ค. ๊ฐ•์˜๋ฅผ ๋“ฃ๋‹ค๊ฐ€ ๊ถ๊ธˆํ•œ ์ƒ๊ธด๋‹ค๋ฉด ์งˆ๋ฌธ ๊ธฐ๋Šฅ์„ ์ ๊ทน ์ด์šฉํ•ด์ฃผ์„ธ์š” :)
 
์ด๋ฒˆ ๊ฐ•์ขŒ์— ํฌํ•จ๋œ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋Š” GitHub์˜ taehwandev/Kotlin-Udemy-Sample ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํ•™์Šต ๋ชฉํ‘œ

  • Android๋ฅผ Kotlin์„ ํ†ตํ•ด์„œ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ„๋‹จํ•œ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ์˜ ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Kotlin์„ ํ†ตํ•ด์„œ ๊ธฐ์กด ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์—์„œ ์‚ฌ์šฉํ•˜๋˜ Java ๋ฌธ๋ฒ• ์™ธ์—๋„ ๋” ์ตœ์‹  ์–ธ์–ด ๊ธฐ๋ฒ•์„ ๋ฏธ๋ฆฌ ์ตํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 ๋ฐฐ์šฐ๋Š” ๊ฒƒ๋“ค

kotlin_mvp
null ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•

retrolambda, Stream ๋“ฑ์˜ ์ตœ์‹  ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, null ์ฒ˜๋ฆฌ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฒ•๋“ค์„ ์ตํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MVP ํŒจํ„ด์†Œ๊ฐœ

MVP(Model-View-Presenter)์„ ํ†ตํ•œ ์ž‘์„ฑ์œผ๋กœ TDD ๊ฐ€๋Šฅํ•œ ๊ฐœ๋ฐœ ํ˜•ํƒœ๋„ ์ตํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„์›€์ด ๋˜๋Š” ๋ถ„๋“ค

  • Android ๊ฒฝํ—˜์ด ์žˆ์œผ๋ฉฐ, Java์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋Š” ๋ถ„์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ์˜ˆ์ œ ์ค‘์‹ฌ์œผ๋กœ ์ž‘์„ฑํ•˜์˜€์œผ๋ฉฐ Retrofit, Glide, RecyclerView์„ ํ†ตํ•ด ๊ฐ„๋‹จํ•œ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ์˜ ์ƒ˜ํ”Œ์„ ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค.
  • MVP๋ฅผ ํ†ตํ•œ Android TDD ์ž…๋ฌธ์„ ์œ„ํ•œ ๊ฐ•์ขŒ๋กœ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • Java ๊ธฐ์ดˆ ๋ฌธ๋ฒ•์„ ์–ด๋Š์ •๋„ ์ˆ™์ง€ํ–ˆ๋‹ค๋ฉด Kotlin ํ•™์Šต์— ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  ์‚ฌํ•ญ

  • Android Studio 3.0, Android Target API 26์„ ํ†ตํ•ด ์ƒ˜ํ”Œ ์˜ˆ์ œ๋ฅผ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • Android Studio ์‚ฌ์šฉ๋ฐฉ๋ฒ•๊ณผ GitHub ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ๋“ฑ์„ ์•Œ๊ณ  ์žˆ์œผ์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 ์ง€์‹๊ณต์œ ์ž ์†Œ๊ฐœ

๊ถŒํƒœํ™˜
์•ˆ๋“œ๋กœ์ด๋“œ ๊ฒฝ๋ ฅ 5๋…„ ์ฐจ์ธ ํ˜„์—… ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.๊ธฐ๋ณธ Android ๊ฒฝํ—˜๊ณผ ํ•จ๊ป˜ ์ตœ๊ทผ์—๋Š” Jetbrains์—์„œ ๊ฐœ๋ฐœํ•œ Kotlin์— ๋Œ€ํ•ด์„œ ๋†’์€ ๊ด€์‹ฌ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. http://thdev.tech - ๊ฟˆ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์ž!๋ผ๋Š” ๋ธ”๋กœ๊ทธ๋ฅผ ์šด์˜์ค‘์ด๋ฉฐ, ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ๊ณผ ๊ด€๋ จ๋œ ์ž๋ฃŒ๋“ค์„ ์ •๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.๋ธ”๋กœ๊ทธ์—๋Š” Kotlin๊ณผ Android์— ๋Œ€ํ•œ ์ž๋ฃŒ๋“ค์„ ๋‹ค์–‘ํ•˜๊ฒŒ ์˜ฌ๋ ค๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.๋ฏธ์ˆ™ํ•˜์ง€๋งŒ ์–ด๋ ต์ง€ ์•Š๊ฒŒ ์„ค๋ช…ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜์˜€๊ณ , ์˜์–ด ๋ฐœ์Œ์ด ์ข‹์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.๋‹ค์–‘ํ•œ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

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

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

  • ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์— ๊ด€์‹ฌ ์žˆ๋Š” ์‚ฌ๋žŒ

  • ์ฝ”ํ‹€๋ฆฐ์„ ์ฒ˜์Œ ๋ฐฐ์šฐ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ

  • ์ž๋ฐ”์—์„œ ์ฝ”ํ‹€๋ฆฐ์œผ๋กœ ์ „ํ™˜ํ•˜๋ ค๋Š” ๊ฐœ๋ฐœ์ž

  • ์•ˆ๋“œ๋กœ์ด๋“œ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์„ ๋ฐฐ์šฐ๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ

  • ์‹ค์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ์‹ค์Šตํ•˜๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ

์•ˆ๋…•ํ•˜์„ธ์š”
Tae-hwan kwon์ž…๋‹ˆ๋‹ค.

186

๋ช…

์ˆ˜๊ฐ•์ƒ

13

๊ฐœ

์ˆ˜๊ฐ•ํ‰

2

๊ฐœ

๋‹ต๋ณ€

4.2

์ 

๊ฐ•์˜ ํ‰์ 

1

๊ฐœ

๊ฐ•์˜

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

์ „์ฒด

43๊ฐœ โˆ™ (7์‹œ๊ฐ„ 1๋ถ„)

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

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

13๊ฐœ

4.2

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

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

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

โ‚ฉ22,000