๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native)๋ก ๋ชจ๋ฐ์ผ ์ฑ ๊ฐ๋ฐ์ ๋์ ํด๋ณด์ธ์!
"์์๋ง ํ๊ณ ๋์ ๋ชป ๋ณด๋ ์ฑ ํ๋ก๊ทธ๋๋ฐ์ No!!
React Native๋ก ๋๋ ์ด์ ์ฑ ๊ฐ๋ฐ์!!!"
โ ๊ฐ์ ์๊ฐ
โ Section 0 : React Native ์๊ฐ ๋ฐ ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ
React Native(๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ) ์๊ฐ ๋ฐ ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ์ ๋ํ ์ค๋ช
์ผ๋ก ์งํ๋ฉ๋๋ค. ๋ชจ๋ฐ์ผ ์ฑ Cross Platform Framework์ธ React Native๋ ์ด๋ป๊ฒ ํ๋์ ์ฝ๋๋ก iOS์ Android์์ ์ฑ ๊ตฌ๋์ด ๊ฐ๋ฅํ์ง, React Native ๊ฐ๋ฐ์ ํ์ํ ์ ์์ง์์ ์ด๋ ํ ๊ฒ๋ค์ด ์๋์ง ๋ฑ React Native์ ์ ๋ฐ์ ์ธ ์ดํด๋ฅผ ๋๊ธฐ ์ํด ๊ตฌ์ฑ๋์์ผ๋ฉฐ, React Native ๊ฐ๋ฐ์ ์ํ ํ๋ก๊ทธ๋จ ๋ฐ ํด ์ค์น ๋ฐฉ๋ฒ์ ์๋ ค๋๋ฆฝ๋๋ค. ๋ฆฌ์กํธ๋ค์ดํฐ๋ธ ๊ฐ๋ฐ์ ์ํ ํ๊ฒฝ๊ตฌ์ถ์ด ๊น๋ค๋ก์ธ ์ ์์ต๋๋ค. ๊ฐ๊ฐ์ ํ๋ก๊ทธ๋จ ๋ฐ ํด์ ๋ฒ์ ์ ๋ช
์ํ๊ธฐ ๋๋ฌธ์ ํธํ์ฑ Issue๋ ๊ฑฑ์ ํ์ง ์์ผ์
๋ ๋ฉ๋๋ค. ํ๋ํ๋ ๊ฐ์ด ์ค์นํด๋ณด๋ฉด์ ํ๊ฒฝ๊ตฌ์ถ์ ๋ํ ํ๋ค์ ๋ฎ์ถ ์ ์๋๋ก ๊ตฌ์ฑ๋ Section์
๋๋ค.
โ Section 1 : Simulator ๊ตฌ๋
๊ฐ๋ฐ ์ฝ๋๋ฅผ Android Emulator์ iOS Simulator์์ ๊ตฌ๋์์ผ๋ณด๋ ๋ฐฉ๋ฒ์ ๋ํ ์ค๋ช
์ผ๋ก ์งํ๋ฉ๋๋ค. React Native๋ Cross Platform Framework์ด์ง๋ง, iOS์ Android์์ ์ ๊ณตํ๋ Native Component Style ๋ฐ ์ฑ๊ฒฉ์ ๋ค์ ์์ดํ ๋ถ๋ถ์ด ์์ต๋๋ค. ๊ฐ๊ฐ์ Simulator ๊ตฌ๋์ ํตํด ์ฌ๋ฌ ๊ธฐ์ข
์ ๋จ๋ง๊ธฐ์์ Rendering๋๋ ์ถ๋ ฅ ํ๋ฉด์ ํ์ธํ ์ ์๋๋ก ๊ตฌ์ฑ๋ Section์
๋๋ค.
โ Section 2 : ECMAScript 6 (ES6)
React Native ๊ฐ๋ฐ์ ํ์ํ ์ ์์ง์์ธ ECMAScript 6 (ES6)์ ๊ธฐ์ด ๋ฌธ๋ฒ ์ค๋ช
์ผ๋ก ์งํ๋ฉ๋๋ค. React Native ๊ฐ๋ฐ์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ํต์ฌ๋ง์ ๋ฐ์ทํ์ฌ ๋ถํ์ํ ํ์ต์ ์ต์ํํ๊ณ ํจ์จ์ ์ธ ์ ์์ง์ ํ์ต์ด ๋ ์ ์๋๋ก ๊ตฌ์ฑ๋ Section์
๋๋ค.
โ Section 3 : React
React Native ๊ฐ๋ฐ์ ํ์ํ ์ ์์ง์์ธ React์ ๊ธฐ์ด ๋ฌธ๋ฒ ์ค๋ช
์ผ๋ก ์งํ๋ฉ๋๋ค. React Native ๊ฐ๋ฐ ์ฝ๋๋ฅผ ํ์ฉํ์ฌ ์ค๋ช
์ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์, React Native ๊ฐ๋ฐ ์ฝ๋์ ์น์ํด์ง์ค ์ ์์ต๋๋ค. ๋ฟ๋ง ์๋๋ผ, React Native ๊ฐ๋ฐ์ ํ์ํ ์์ง๋ฐฐ๊ธฐ ํต์ฌ๋ง์ ๋ฐ์ทํ์ฌ ํจ์จ์ ์ธ ์ ์์ง์ ํ์ต์ด ๋ ์ ์๋๋ก ๊ตฌ์ฑ๋ Section์
๋๋ค.
โ Section 4 : React Native Component
๋ณธ๊ฒฉ์ ์ธ React Native ๊ธฐ์ด ๋ฌธ๋ฒ ์ค๋ช
์ผ๋ก ์งํ๋ฉ๋๋ค. App ํ๋ฉด์ ๊ตฌ์ฑํ๋ ๋ค์ํ Component๋ค(View, Text, Button, Image, TextInput ๋ฑ)์ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ์ ๋ฐฐ์ฐ๊ณ , ์ฌํ ํ์ต์ ํตํด ์ฌ๋ฌ Component๋ค์ ์กฐํฉ์ ํ์ฉํ์ฌ Advancedํ ํ๋ฉด Rendering์ ๋ค๋ฃน๋๋ค. ํ๋์ ํ๋ฉด์ ๊ตฌ์ฑํ๊ธฐ ์ํ ๊ธฐ์ด ๋ฌธ๋ฒ ๋ฐ ์ฌํ ๋ด์ฉ์ ํ์ตํ ์ ์๋๋ก ๊ตฌ์ฑ๋ Section์
๋๋ค.
โ Section 5 : React Navigation Ver. 5
ํ๋ฉด ์ ํ์ ๋์์ฃผ๋ 3rd Party Library์ธ React Navigation์ ๊ธฐ์ด ๋ฌธ๋ฒ ์ค๋ช
์ผ๋ก ์งํ๋ฉ๋๋ค. ๊ฐ์ฅ ์ต์ ์ Update ๋ Ver. 5์ ๋ด์ฉ์ ๋ค๋ฃจ๋ฉฐ, Stack Navigator(๋ฒํผ์ ์ด์ฉํ ํ๋ฉด ์ ํ)/ Drawer Navigator(ํ๋ฉด ์ข์ฐ์ธก์์ ์ด๋ฆฌ๋ ์ ์ฐฝ)/ Tab Navigator(Tab ๋ฒํผ์ ์ด์ฉํ ํ๋ฉด ์ ํ)/ Vector Icon(๋ค์ํ๊ณ ํธ๋ฆฌํ Pictogram ์ฌ์ฉ)์ ๋ํ ํ์ต์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ฟ๋ง ์๋๋ผ, ๊ฐ Navigator์ ์กฐํฉ์ ํตํ ํ๋ฉด Tree ๊ตฌ์กฐ ์ค๊ณ(Nesting Navigator)๋ฅผ ํตํด ๋ค์ํ๊ณ ํ๋ถํ ํ๋ฉด ์ ํ ๋ฐฉ๋ฒ์ ํ์ตํ ์ ์๋๋ก ๊ตฌ์ฑ๋ Section์
๋๋ค.
โ Section 6 : Phone Resource ํ์ฉ
์ค๋งํธํฐ ์์ ํ์ฉ ๋ฐฉ๋ฒ์ ๋ํ ์ค๋ช
์ผ๋ก ์งํ๋ฉ๋๋ค. App์์ ์ฐ๋ฝ์ฒ/์นด๋ฉ๋ผ/๊ฐค๋ฌ๋ฆฌ ๋ฑ์ ๋จ๋ง๊ธฐ ์์์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ถ๊ฐ์ ์ธ 3rd Party Library์ ์ค์น๊ฐ ํ์์ ์ด๋ฉฐ, ์ ๊ทผ ๊ถํ ์ฌ๋ถ ํ๋จ ๋ฑ์ Process๊ฐ ์ ํ๋์ด์ผ ํฉ๋๋ค. iOS์ Android์ ๊ฐ ๋ณด์ ์ ์ฑ
์ ๊ธฐ๋ฐ์ผ๋ก ๋จ๋ง๊ธฐ ์์์ ํ์ฉํ๊ธฐ ์ํ ๊ถํ ๋ถ์ฌ ๋ฐฉ๋ฒ์ ์์๋ณด๊ณ , ์ค์ ๊ฐ๋ฐ์ ํตํด ์ค๋งํธํฐ ์์ ์ฌ์ฉ๋ฒ์ ํ์ตํ ์ ์๋๋ก ๊ตฌ์ฑ๋ Section์
๋๋ค.
โ Section 7 : Animation
๋ํ ๋ฐ ํ
์คํธ์ Animation ํจ๊ณผ๋ฅผ ๋ถ์ฌํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ค๋ช
์ผ๋ก ์งํ๋ฉ๋๋ค. React Native๋ Animation ํจ๊ณผ๋ฅผ ์ง์ํฉ๋๋ค. ์๊น, ํฌ๋ช
๋, ํ์ , ์ด๋ ๋ฑ์ ํจ๊ณผ๋ฟ๋ง ์๋๋ผ, ๊ฐ Animation ํจ๊ณผ์ ์กฐํฉ(Interpolation, Sequence, Parallel)์ ํตํด ๋ณด๋ค ๋ค์ํ๊ณ ํ์ฑํ ์๊ฐ์ ํจ๊ณผ์ ์ฐ์ถ ๋ฐฉ๋ฒ์ ํ์ตํ ์ ์๋๋ก ๊ตฌ์ฑ๋ Section์
๋๋ค.
โ Section 8 : Good To Know Things
React Native ๊ฐ๋ฐ์ ํ์ํ ๊ณ ๊ธ Skill์ ๋ํ ์ค๋ช
์ผ๋ก ์งํ๋ฉ๋๋ค. ์ฌํ ์ฝ๋ฉ์ ํ์ํ Debugger์ ์๊ฐ๋ฅผ ์์์ผ๋ก ์ฌ์ฌ์ฉ Component๋ฅผ ์ง์ ์์ฑํ์ฌ ์ฌ์ฉํด๋ณด๊ณ , Platform๋ณ๋ก ๊ฐ๊ธฐ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ ๋ฑ์ ๋ํ ํ์ต์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ณด๋ค Advancedํ ๋ด์ฉ์ ํ์ต๊ณผ ํ์
์์ ์ฌ์ฉํ๋ Skill์ ์ต๋์ ๋ชฉํ๋ก ๊ตฌ์ฑ๋ Section์
๋๋ค.
โ Section 9 : ๊ฐ์๋ฅผ ๋๋ด๋ฉฐ
๋ณธ ๊ฐ์ ํ์ต์ ๋ง์น์ ํ์ ์ฌ์ ์ ๋ํด ์ค๋ช
๋๋ฆฝ๋๋ค. ๋ณธ ๊ฐ์์์๋ React Native์ ๊ธฐ์ด์ ์ธ ๋ถ๋ถ์ ๋ค๋ค์ผ๋ฉฐ, ์ค์ App ๊ฐ๋ฐ ๋ฐ ํ์
์์์ Co-Work์ ์ํด์๋ Redux์ ๊ฐ๋
๊ณผ ํจ๊ป Back-End์ ๋ํ ์ดํด๋ ํ์์ ์
๋๋ค. Redux์ ํ์ต ๋ฐ ์ฌํ ์ฝ๋ฉ์ ํตํด ์ค์ App์ ๊ฐ๋ฐํด๋ณด๋ ํ์ ๊ฐ์๊ฐ Open๋์์ต๋๋ค!! ๋ก๊ทธ์ธ Process ๊ตฌํ, ์๋ฒ๋ก๋ถํฐ์ ๋ฐ์ดํฐ ์์ ๋ฐ ์ถ๋ ฅ ๋ฑ์ Advanced ๋ด์ฉ์ ํ์ต์ ์ํ์๋ ๋ถ๋ค๊ป์๋ ๋ค์ ๊ฐ์๋ฅผ ์๊ฐํ์๊ธฐ ๋ฐ๋๋๋ค.
์ง์๊ณต์ ์์ ํ์ ๊ฐ์(์ฌํ ๊ณผ์ )๊ฐ ๊ถ๊ธํ๋ค๋ฉด?
โ ๊ฐ์ ํน์ง
โ React Native ๊ฐ๋ฐ์ ํ์ํ ์ ์์ง์ ๋ด์ฉ์ ํ๋์ ๊ฐ์์ ๋ด์์ต๋๋ค
React Native ๊ฐ๋ฐ์ ์ํด์๋ ECMAScript 6 (ES6) ๋ฐ React์ ์ง์์ด ํ์ํฉ๋๋ค๋ง, ์ค์ React Native ๊ฐ๋ฐ์ ํ์ฉ๋๋ ์ง์์ ๊ทธ ์ ์ฒด ์ค ์ผ๋ถ์
๋๋ค. ์ด๋ค ๊ฒ๋ค์ ๋ฐฐ์์ผํ ์ง ๋ชฐ๋ผ์ ๋ชจ๋ ๋ด์ฉ์ ๊ณต๋ถํ๋ค๋ ๊ฒ์ ๊ต์ฅํ ๋นํจ์จ์ ์ด์ฃ . ๊ทธ๋์ ๋ณธ ๊ฐ์๋ React Native ๊ฐ๋ฐ์ ํต์ฌ์ด ๋๋ ์์๋ค๋ง์ ๋ฐ์ทํ์ฌ ๊ตฌ์ฑ๋์์ต๋๋ค. ๋จ ํ๋์ ๊ฐ์๋ก React Native ๊ธฐ์ด ํ์ต์ ์ฆ๊ธฐ์๊ธธ ๋ฐ๋๋๋ค.
โ React Native ๊ธฐ์ด๋ฅผ ๋ค๋ฃน๋๋ค
๋ณธ ๊ฐ์๋ Mobile App Front-End ๊ฐ๋ฐ์ ์ํ React Native ๊ธฐ์ด ํ์ต์ ๋ชฉํ๋ก ํ๊ณ ์์ต๋๋ค. ๊ธฐ์ด ๊ฐ๋
์ ํํํ ๋ค์ง ์ ์๋๋ก ์์ธํ ์ค๋ช
์ ๋ค๋ค์ผ๋ฉฐ, React Native ๊ฐ๋
์ด ์๋์ง๋ผ๋ ์ดํด๊ฐ ๋ฒ๊ฑฐ์ธ ์ ์๋ ์ฌํญ์ ๋ํด์๋ ๋ถ์ฐ ์ค๋ช
์ ํฌํจ์์ผฐ์ต๋๋ค. React Native๋ฅผ ์ฒ์ ๋ค๋ฃจ๋ ๋ถ๋ค๊ป์๋ ์ฝ๊ฒ ์ดํดํ์ค ์ ์์ผ์ค ๊ฒ๋๋ค.
โ React Navigation Ver. 5๋ฅผ ๋ค๋ฃน๋๋ค
๋ณธ ๊ฐ์์์๋ React Navigation์ ์ต์ ๋ฒ์ ์ธ Ver. 5๋ฅผ ๋ค๋ฃน๋๋ค. Ver. 4๋ก๋ถํฐ์ Update ์ดํ ํฐ ๋ณํ๋ค์ด ์์์ต๋๋ค. ์ค์ ์ฝ๋ฉ์ ํตํด ๊ณต์ ๋ฌธ์ ํ์ธ์ผ๋ก๋ ์ต๋ํ๊ธฐ ์ด๋ ค์ด ๋ด์ฉ๋ค์ ๋ค๋ฃจ๋ฉด์, ์ต์ ๋ฒ์ ์ React Navigation์ ํ์ตํ ์ ์๋๋ก ๊ตฌ์ฑ๋์์ต๋๋ค.
โ ๋น์ ๊ณต์๋ ์ฝ๊ฒ ๋ฐ๋ผํ ์ ์์ต๋๋ค
๋ณธ ๊ฐ์๋ ๋น์ ๊ณต์๋ ์ถฉ๋ถํ ๋ฐ๋ผ์ค์ค ์ ์๋๋ก ์ ์๋์์ต๋๋ค. ์ง์
์ฅ๋ฒฝ์ด ๋ฎ์ Script ์ธ์ด ๋ฐ API๋ฅผ ์ฌ์ฉํ ๋ฟ๋ง ์๋๋ผ, ์ฝ๊ฒ ํ์ตํ์ค ์ ์๋๋ก ์ฝ๋ฉ ์งํ ๋ฐฉ๋ฒ๊ณผ ์ค๋ช
์ ๋์ด๋/ํ
ํฌ ์กฐ์ ์ ์ ์ํ์์ต๋๋ค. App ๊ฐ๋ฐ ์ธ๊ณ์ ์ฒ์ ๋ฐ์ ๋ด๋๋ ๋น์ ๋ฌธ๊ฐ๋ถ๋ค๊ป์๋ ์ด ๊ฐ์๋ฅผ ํตํด App ๊ฐ๋ฐ์๊ฐ ๋์๊ธธ ๋ฐ๋๋๋ค.
โ ์ฐธ๊ณ ์ฌํญ
โ ๋ณธ ๊ฐ์์์๋ Mac์ ์ฌ์ฉํฉ๋๋ค. Mac ํ๊ฒฝ์ ๊ตฌ์ถํด ๋์๊ธฐ ๋ฐ๋๋๋ค.
โ ๋ณธ ๊ฐ์์์๋ React Native CLI๋ฅผ ์ฌ์ฉํฉ๋๋ค. React Native CLI์ ๋์ฒด์ฌ์ธ Expo CLI๋ Beginner๋ถ๋ค์๊ฒ๋ ์ฉ์ดํ ์ ์์ผ๋, ๊ฐ๋ฐ ์ธก๋ฉด์์์ ์์ ๋๊ฐ ํ์ ํ ๋ฎ์ต๋๋ค. React Native CLI ์ฌ์ฉ๋ฒ์ ์ตํ์
์ ๊ฐ๋ฐ์ ํ๊ณ์ ์ ๊ทน๋ณตํ์๊ธฐ ๋ฐ๋๋๋ค.
(โป ์ด ๊ฐ์๋ ์ง์๊ณต์ ์์ ์ฌ์ ์ ์ํด ๋ต๋ณ์ด ๋ฆ์ ์ ์๋ ์ ์ํด๋ฐ๋๋๋ค.)