January 27, 2019 โข โ๏ธโ๏ธโ๏ธ 13 min read
์ ์ญ์ผ๊ณ์ฐ๊ธฐ ์ฑ ๊ตฐ๋์ด
2018๋
9์ 3์ผ์ ์ ์ญ์ผ๊ณ์ฐ๊ธฐ ์ฑ ๊ตฐ๋์ด๋ฅผ ๊ตฌ๊ธ ํ๋ ์ด์คํ ์ด์ ์ฒ์์ผ๋ก ๋ฐ์นญํ๊ณ , ๊ทธ๋ก๋ถํฐ 6์ผ ํ์ธ 9์ 9์ผ์ ์ถ๊ฐ๋ก ์ ํ ์ฑ์คํ ์ด์ ๋ฐ์นญํ๋ค. ๋ฐ์นญํ ์ดํ๋ก ์ด๋ค ๋ธ๋ก๊ทธ ํ๋ซํผ์ด๋ React Native๋ก ์ฑ์ ๊ฐ๋ฐํ๊ณ ์๋๋ก์ด๋์ iOS ํ๋ซํผ์ ๋ชจ๋ ๋ฐ์นญํ๋ ์ด์ผ๊ธฐ๋ฅผ ๊ณต์ ํ๊ณ ์ถ์๋ค. (๋ณ๊ฑฐ ์๋ ์ฑ์ด์ง๋งโฆ) ํ์ง๋ง ๊ท์ฐจ๋์ฆ์ผ๋ก ์์ฑํ์ง ๋ชปํ๋ค. ๊ทธ๋์ ๊ตฐ๋์ด ์ฑ์ ๋ง ๋ช
์ค์น๋ฅผ ํ๊ณ๋ก React Native๋ก ํ์ด๋ธ๋ฆฌ๋ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ ํ๊ธฐ๋ฅผ ์์ฑํด๋ณด๋ คํ๋ค.
์ฐ์ , ๋ด๊ฐ ๊ฐ๋ฐํ ์ฑ์ ์๊ฐํ๊ฒ ๋ค. ๊ฐ๋จํ ์ ์ญ์ผ์ ๊ณ์ฐํ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ค. ๋ค๋ฅธ ์ฑ๊ณผ์ ์ฐจ๋ณ์ ์ ๋ ๊ฒ์ ์์๊ณ ์ฌํํ ๋์์ธ๊ณผ ์ฌ์ฉ์ฑ์ด๋ค. ํ์ญ ์ํ ๋ ์ฌ์ฉํ ํ ์ฑ์ ๋ง์ ์ ์ ๋ค์ด ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐํด ์ฌ์ฉ์ฑ์ด ๋ง์ด ๋ถ์กฑํ๋ค๊ณ ๋๊ผ๋ค. ๊ทธ๋์ ์ง์ ์ ์ญ์ผ๊ณ์ฐ๊ธฐ ์ฑ์ ๊ฐ๋ฐํด์ ํ์ญ ๊ตฐ์ธ๋ค๊ณผ ๊ณ ๋ฌด์ ๋ถ๋ค, ๋ถ๋ชจ๋๋ค์ด ๋ ์์๊ณ ์ฌํํ ๋์์ธ์ ์ ์ญ์ผ๊ณ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๊ฒ ํ๊ณ ์ถ์๋ค. ๋ฌผ๋ก ๋์์ธ์ ๋ฅ์์ธ ๋ด๊ฐ ํ์ง ์์๊ณ ๊ธ์ ๋์์ด๋ GOM๋์ด ํ์์ผ๋ก์จ ๋์์ฃผ์ จ๋ค. (๊ฐ์ฌํฉ๋๋ค! ๐ฅ)
๋ฐ์นญํ์ง ๋๋ต 4๊ฐ์์ด ์ง๋์ง ์์๋๋ฐ 2019๋ 1์ 25์ผ ๊ธ์์ผ ๊ธฐ์ค ์๋๋ก์ด๋ 3,400๋ช ์ค์น, iOS 6,600๋ช ์ด ์ค์นํ์ฌ ์ด 10,000๋ช ์ ์ ์ ๊ฐ ์ค์นํ๊ณ , ํ๋ฃจ์ 1,000๋ช ~ 1,300๋ช ์ ๋๊ฐ ์ฌ์ฉํ๋ ์ ์ญ์ผ๊ณ์ฐ๊ธฐ ์ฑ์ด ๋์๋ค. ๊ตฌ๊ธ ํ๋ ์ด์คํ ์ด์ ASO๊ฐ ๋ ์ข์์๋ ๋ถ๊ตฌํ๊ณ ์ฑ์คํ ์ด์ ์ค์น๋์ด ํญ์ ๋ ์ข์ ๊ฒ์ด ์ฝ๊ฐ ๋๋ผ์ ๋๋ฐ ์๋ง ์ ์ ์ธต์ ์ฌ์ฑ๋ถ๋ค์ด ์์ดํฐ์ ๋ง์ด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ฆฌ๋ผ ์ง์ํ๋ค. ํ์ฌ์ ๋ค๋๋ฉด์ ์ฌ์ด๋ ํ๋ก์ ํธ๋ก ํด๊ทผํ๊ณ ์ ๋ ์ ๊ทธ๋ฆฌ๊ณ ์ฃผ๋ง์ ํํ์ด ์์ ํ ์ฑ์ ์๊ฐ๋ณด๋ค ๋ง์ ๋ถ๋ค์ด ์ฌ์ฉํด์ฃผ์ ์ ์์ฒญ ๋ณด๋ ์์๋ค. ๋๋ต ์ฑ์ ๋ง๋ค๊ณ ์ฒ์ ๋ฐฐํฌํ๊ธฐ๊น์ง ๋ณด๋ฆ ์ ๋ ๊ฑธ๋ ธ๋๋ฐ ๊ทธ ๊ณผ์ ๊ณผ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ ๊ทธ๋ฆฌ๊ณ RN์ผ๋ก ๊ฐ๋ฐํ๋ฉด์ ๋๊ผ๋ ์ฅ์ , ๋จ์ ์ ๋๋ฅผ ์จ๋ณด๊ฒ ๋ค.
์ฑ์คํ ์ด ํ๋งค๋
ํ์ด์ด๋ฒ ์ด์ค ์ ๋๋ฆฌํฑ์ค ๋์ฌ๋ณด๋
์ฒ์์๋ ํจ๊ธฐ์ ๊ฐ๋์ฐจ์ ๊ฐ๋จํ ์ฑ์ด๋ swift๋ก iOS ์ฑ์ ๊ฐ๋ฐํ๊ณ , java๋ kotlin์ผ๋ก ์๋๋ก์ด๋ ์ฑ์ ๊ฐ๋ฐํ๋ฉด ๋๊ฒ ๋ค์ถ์ด์ swift๋ก ์ ์ญ์ผ๊ณ์ฐ๊ธฐ ์ฑ์ ๊ตฌ์ํ๊ณ ํ๋กํ ํ์ ์ ๊ฐ๋ฐํด๋ณด์๋ค. ๊ฐ๋จํ ์ค ์์์ง๋ง date ๊ณ์ฐ ๋ฑ swift์ ์ธ์ด์ ํน์ง์ ๋ง์ด ์ต์ํ์ง ์์ ๋ง์ ๋ํญ์ ๊ฒช์๋ค. ๊ทธ๋์ ์์ฐ์ค๋ javascript๋ฅผ ์ฌ์ฉํ๋ React Native์ ๋์ ๋๋ฆฌ๊ฒ ๋์๋ค. react์ javascript์๋ ์ฌ๋งํผ ์์ ์ด ์์๊ณ ํ ๋ฒ ๊ฐ๋ฐํด๋์ผ๋ฉด iOS์ ์๋๋ก์ด๋, ๋ ํ๋ซํผ์์ ์๋ํ๊ธฐ ๋๋ฌธ์ React Native๋ ๋ด๊ฐ ์๊ฐํ๊ธฐ์ ์ต๊ณ ์ ์ ํ์ด์๋ค.
react-native ๊ณต์ ์น์ฌ์ดํธ๋ฅผ ์ฐธ๊ณ ํด ๊ณต๋ถํ๋ฉด์ ๊ฐ๋ฐํ๋๋ฐ ์น ํ๋ก ํธ์๋ ๊ฐ๋ฐํ๋ฏ์ด ๋ชจ๋ฐ์ผ ์ฑ์ ๊ฐ๋ฐํ๋ ๊ฐ๋ฐ ๊ฒฝํ์ด ์ ์ธ๊ณ์๋ค. ๊ฒ๋ค๊ฐ expo๋ฅผ ์ฌ์ฉํ๋ฉด ๊ตณ์ด ํ ์คํธ ๊ธฐ๊ธฐ๋ฅผ ์ ์ ์ผ๋ก ์ฐ๊ฒฐํ์ง ์๊ณ , expo ์ฑ์ ์ค์นํด์ QR์ฝ๋๋ก ์ธ์ํ๋ฉด ๋ด๊ฐ ๊ฐ๋ฐํ๊ณ ์๋ ์ฑ์ ์ค์๊ฐ์ผ๋ก ํ์ธํด๋ณด๋ฉฐ ๊ฐ๋ฐํ ์ ์์ด์ ๋ค์ดํฐ๋ธ๋ฅผ ์ง์ ๊ฐ๋ฐํ ๋์๋ ์์ฐ์ฑ๊ณผ ํธ์์ฑ์ด ๋ง๋ ์๋๊ฒ ์ฐจ์ด๊ฐ ๋ฌ๋ค. ์ด๋์ RN RN ํ๋ ๊ตฌ๋ ๋๊ผ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ฐ์ผ ์ฑ์ ๋ฐ์ํ ๋์์ธ์ ๋ด๊ฐ ๊ฐ์ฅ ์ข์ํ๋ CSS์ flexbox๋ฅผ ์ฌ์ฉํด ์ฒ๋ฆฌํ๋ ๊ฒ ๋๋ฌธ์ ๋งค๋ ฅ์ ์ด์๋ค. ๊ฐ๋ฐ๊ฒฝํ์ ์์ด์ ๋ค์ดํฐ๋ธ๋ฅผ ๊ฐ๋ฐํ๋ค๋ ๋๋๋ณด๋ค๋ ์น๋ทฐ๋ฅผ ๊ฐ๋ฐํ๋ ๋๋์ด์ง๋ง React Native๋ ๋ค์ดํฐ๋ธ API๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ดํฐ๋ธ์์ ์ง์ ๋ ๋๋งํ๊ธฐ ๋๋ฌธ์ ๋ค์ดํฐ๋ธ์ ์ ์ฌํ ์ฑ๋ฅ, ์ฌ์ฉ์ฑ์ ๋ณด์ฌ์ค๋ค.
์ฒ์์๋ ์์์ ๋งํ๋ฏ์ด expo๋ผ๋ React Native๋ฅผ ํธํ๊ฒ ๊ฐ๋ฐํ ์ ์๋๋ก ๋์์ฃผ๋ ์๋ํํฐ ํด์ ์ฌ์ฉํ๋ค. ํ์ง๋ง ์ ์ ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ฉด์ expo์ ํ๊ณ๋ฅผ ๋๊ผ๋ค. ์ผ๋จ ์ฑ์ ์ฉ๋์ด ๋น์ ์์ ์ผ๋ก ์ปธ๊ณ , ๋ฌด์๋ณด๋ค ๋ค์ดํฐ๋ธ ๋ชจ๋์ react-native link
ํ ์ ์๋ค๋๊ฒ ์์ฒญ๋ ๋จ์ ์ด์๋ค. ๊ทธ๋์ ๊ฒฐ๊ตญ expo eject
๋ช
๋ น์ด๋ฅผ ํตํด expo๋ฅผ ๋ผ์ด๋๋ค. ๋ผ์ด๋ด๋ ค๋ฉด ํ๋ค์ค ์์๋๋ฐ expo ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐ์ง ์์์ ๊ทธ๋ฐ์ง ์ ๋ช
๋ น์ด๋ฅผ ํตํด ejectํ๊ณ ๋น๋๋ ์๋์๋ ๊ธฐ์ต์ด ๋๋ค. ์ ๊ฒฝํ์ ํตํด ์ฒ์๋ถํฐ ์ฌ๋งํ๋ฉด expo๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค๊ณ ํ๋จํ์ฌ ๋ค์ RN ํ๋ก์ ํธ๋ถํฐ๋ expo๋ฅผ ์ฌ์ฉํ์ง ์์๋ค. ๋ค๋ฅธ ๋ถ๋ค์๊ฒ๋ ๊ทธ๋ ๊ฒ ์ถ์ฒํ๊ณ ์๋ค.
๋ํ, ์ถ๊ฐ์ ์ผ๋ก ์ ์ ํ์ดํ์ ์ํด typescript
๋ฅผ ์ฌ์ฉํ์๊ณ , ๋ ํธํ ์คํ์ผ๋ง์ ์ํด styled-components
๋ฅผ ์ฌ์ฉํ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ฒ์์๋ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก redux
๋ฅผ ์ฌ์ฉํ์ง๋ง mobx
์ ๊ฐํธ์ฑ์ ๋ฐํด์ ์ค๊ฐ์ mobx
๋ก ๋ฏ์ด๊ณ ์น๋ ๊ณผ์ ์ ๊ฑฐ์ณ์ ์ข ๋นก์
๋ค. ์ด๋ฌํ ๊ฐ๋ฐํ๊ฒฝ์ ์ธํ
ํ ๋, ์ ๋ง ์ค๋ ๊ฑธ๋ฆฌ๊ณ ๋งค๋ฒ ์ฐพ๋๊ฒ ๋ฒ๊ฑฐ๋ก์์ react-native-awesome-starter๋ผ๋ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์์ฑํด์ ์ด๊ธฐ์ RN์ ๊ฐ๋ฐํ๊ฒฝ ์ธํ
ํ๋ ๋ฐฉ๋ฒ๋ค์ ์ ๋ฆฌํด๋์๋ค.
๊ตฐ๋์ด ์ด์(์ผ์ชฝ)๊ณผ ํ๋กํ ํ์ (์ค๋ฅธ์ชฝ)
์ฌ์ค ์ ์ญ์ผ๊ณ์ฐ๊ธฐ ์ฑ์ ๊ธฐ๋ฅ์ด ๋ง์ด ์์ด์ ๊ณผ์ ์ด๋๊ฒ ์์๊น ์ถ๊ธด ํ์ง๋ง ๊ฐ๋จํ ์จ๋ณด๋๋ก ํ๊ฒ ๋ค. ์ฐ์ ๋ค๋ฅธ ์ฑ๋ค์ ๋ฒค์น๋งํนํ๊ณ ์ด๋ค ๋ด์ฉ๋ค์ ์ด๋ป๊ฒ ํ์ํ๋ฉด ์ข์์ง ์๊ฐ์ ํด์ ์กฐ์กํ๊ฒ wireframe ์ผ์์ ์ค์ผ์น๋ก ๋์ถฉ ๊ทธ๋ ค๋ณด์๋ค. ๋ฐ๋ก ์์ ์ผ์ชฝ ์ฌ์ง์ด๋ค. ํ์ฌ์ ๋์์ธ๊ณผ ์์ ๋ค๋ฅด๋คโฆ! (๊ฐ์ฌํฉ๋๋ค. ๋์์ด๋๋, ์ ๋ฐ garbage๋ฅผ ์ฌํ์์์ ์์ผ์ฃผ์ ์ ใ ใ ) wireframe์ ๊ฐ์ง๊ณ React Native๋ก ์ฑ ๊ตฌ์กฐ๋ฅผ ์ด๋ป๊ฒ ๊ตฌ์ฑํ ์ง ๊ณ ๋ฏผํ๊ณ ํ๋กํ ํ์ (์ค๋ฅธ์ชฝ ์ฌ์ง)์ ๊ฐ๋ฐํ๋ค. ๊ทธ ํ, ๋์์ด๋๋๊ป ํ๋กํ ํ์ ์ ๋๋ฆฌ๊ณ ๋ฐ๋ก ๋งจ ์์ ์คํฌ๋ฆฐ์ท๊ณผ ๊ฐ์ ๋์์ธ์ ์ฃผ์ จ๋ค. ์ปดํฌ๋ํธ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋๋ ์ ํด๋์์ ๋์์ธ์ ์์๋๋ก ๊ทธ๋ฆฌ๋ ๊ฒ์ ์ฝ๊ฒ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ํธ์ง ํ๋ฉด๋ ๋ชจ๋ฌ๋ก ์ถ๊ฐํด์ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ ๊ฐ์ถ์๋ค.
๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ ๊ฐ์ถ์๋ค๊ณ ์๊ฐํ ํ, ๊ตฌ๊ธ ํ๋ ์ด์คํ ์ด์ ์ฑ์คํ ์ด ๊ฐ๋ฐ์ ๊ณ์ ์ ๊ตฌ์ ํด์ ๋ฐฐํฌ ์ค๋น๋ฅผ ํ๋ค. ๊ฐ๋ฐ์ ๊ณ์ ์ด ๋น์์๋ ๊ตณ์ด ๋นจ๋ฆฌ ๊ตฌ์ ์ ํด์ ์ถ์งํ๋ ์ด์ ๋ ์ ๋ฐํจ์ ๋ง๋ค์ง ์์ผ๋ฉด ํ๋ก์ ํธ๊ฐ ๋์จํด์ง ๊ฒ ๊ฐ์๊ณ ์ถ์๊ฐ ๊ณ์ ๋๋์ง ๊ฒ ๊ฐ์์์๋ค. ์ผ๋จ ๋ด ๋ชฉํ๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ๋ง ๊ฐ์ง ์์๊ณ ์ฌํํ ์ ์ญ์ผ๊ณ์ฐ๊ธฐ ์ฑ์ ๋ง๋ค๊ณ ๊ทธ ํ์ ๋ฒ๊ทธ๋ ๊ณ ์น๊ณ ๊ธฐ๋ฅ๋ ์ถ๊ฐํ ๊ณํ์ด์๋ค. ํด๊ทผ ํ์ ์ ๋ ๊ณผ ์ฃผ๋ง์ ๋ฐ๋ฉํ์ฌ ๋ณด๋ฆ๋ง์ ๋๋ฑ ๊ฐ๋ฐ์ ๋ง์น๊ณ ํ๋ ์ด์คํ ์ด์ ์ฑ์คํ ์ด์ ๋ฐ์นญํ๋ค. (์ ํ์ ์ฌ์ฌ๊ฐ ์ค๋ ๊ฑธ๋ ค์ 6์ผ ์ ๋ ํ์ ์ถ์ํ๋ค.)
์ฑ์คํ ์ด๊น์ง ์ถ์ํ ํ, ๋ค์ด๋ฒ ๊ณฐ์ ์นดํ์ ๋ค์ด๊ฐ์ ๊ตฐ๋์ด ์ฑ ํ๋ณด๋ฅผ ํ๋ค. ์๊ฐ๋ณด๋ค ๋ฐ์์ด ๋จ๊ฑฐ์ ๋ค. ๋์์ธ์ด ์์๊ณ ์ฌํํ๋ค๋ฉฐ ์ข์ํ์๋ ๋ถ๋ค์ด ๋ง์์ ๊ฐ๋ฐํ ๋ณด๋์ด ์์๊ณ ์ฆ๊ฑฐ์ ๋ค. ์ด ๋, ๋ฒ๊ทธ๊ฐ ๋ง์ด ๋ฐ๊ฒฌ๋์๋๋ฐ๋ ๋ถ๊ตฌํ๊ณ ๋ง์ ์ ์ ๋ถ๋ค์ด ๋ฒ๊ทธ๋ฆฌํฌํธ๋ ํด์ฃผ์๊ณ ์๊ฒฌ ์ ์๋ ๋ง์ด ํด์ฃผ์ ์ ํญํ ์์ ํ๊ณ ๋ฐ๋ก ๋ฐฐํฌํ๋ ๋ฑ ์ ์ ์ ์ํตํ๊ณ ์ด์ฌํ ํ๋ ๋ชจ์ต์ ๋ณด์ฌ์ฃผ๋ ค ์ ์ผ๋ค. ์ฒซ ์ถ์ ์ดํ, ์๋๊ณฑ ๋ฒ์ ๊พธ์คํ ๋ฐฐํฌ๋ฅผ ํตํด ๋ฒ๊ทธ ์์ ๋ฐ ๊ธฐ๋ฅ ์ถ๊ฐ๋ฅผ ํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ก ๋ง ๋ช ์ ์ ์ ๊ฐ ์ค์นํ ๊ฒ์ ๋ณด๊ฒ ๋์ด ๊ฐ์ฌํ๊ณ ๊ฐํ๊ฐ ์๋กญ๋ค. ๊ณ์ ์ฌ๋ฐ๋ ๊ธฐ๋ฅ๋ค์ ๋ง์ด ์ถ๊ฐํด์ ๊ตฐ๋์ด ์ฑ์ ํค์๋๊ฐ๊ณ ์ถ๋ค. ๐ฅ
๊ณผ์ ์ ์ฌ๊ธฐ๊น์ง๋ก ํ๊ณ ๋ฐ์์๋ถํฐ๋ ํธ๋ฌ๋ธ ์ํ , ์ถ์ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ฅ๋จ์ ๋ฑ์ ๊ณต์ ํด๋ณด๋๋ก ํ๊ฒ ๋ค.
React Native๋ฅผ ๊ฐ๋ฐํ๋ฉด์ iOS๋ x-code์์ ์ง์ ๋น๋ํ๊ณ , ์๋๋ก์ด๋๋ ์๋๋ก์ด๋ ์คํ๋์ค์์ ์ง์ ๋น๋ํ ์ผ์ด ๋ง์๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ ๋ค์ดํฐ๋ธ ๋ชจ๋์ ์ฌ์ฉํ๋ค๋ณด๋ ์ฝ์งํ ์ผ์ด ์ ๋ง ๋ง์๋ค. ๋น๋ ์๋ฌ๊ฐ ์ ๋ง ๋ง์ด ๋ฌ๋ค. ๊ทธ๋์ ์งง์ ๊ธฐ๊ฐ๋์ RN์ผ๋ก ๊ฐ๋ฐํ๋ฉด์ ๋ฐ์ํ๋ ์๋ฌ๋ค์ react-native-trouble-shooting ๋ ํฌ์งํ ๋ฆฌ์ ์ ๋ฆฌํด๋์๋ค.
ํน์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๋ฉด ์ฐธ๊ณ ํด์ฃผ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ๋ ํฌ์งํ ๋ฆฌ์ Trouble Shooting์ด๋ผ๋ฉด Pull Request ๋ถํ๋๋ฆฝ๋๋ค.
์ต๊ทผ์ ๊ฐ์ฅ ๊ธฐ์ต์ด ๋จ๋ ํธ๋ฌ๋ธ ์ํ
์ค์ ํ๋๋ iOS ์์ ฏ์ ๊ฐ๋ฐํ ๋์๋ค. ์ ์ ๋ถ๋ค์ ์์ ฏ ๊ธฐ๋ฅ ์์ฒญ์ด ๋๋ฌด ๋ง์์ ํฐ ๋ถ๋ด์ ๊ฐ๊ณ ์์ ฏ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๊ณ ์์๋๋ฐ ์์ ฏ ์ต์คํ
์
์์ ์ฑ์ ์ ์ฅ๋์ด์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ถ๋ถ์ด ์ ๋ง ์ด๋ ค์ ๊ณ , ๋ช ์ฃผ์งธ ์ฝ์ง๋ง ํ๊ณ ์์๋ค. iOS์ ์์ ฏ์ ๊ฐ๋ฐํ๊ธฐ ์ํด์๋ ๋น์ฐํ iOS ๊ฐ๋ฐ ๊ด๋ จ ์ง์๋ ํ์ํ๊ณ , ๊ณ์ digging์ ํ๋ค. ์ผ๋จ RN์์ iOS์ ์์ ฏ์ ์ถ๊ฐํ๋ ค๋ฉด react-native-today-widget ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผํ๊ณ , ๊ตฐ๋์ด ์ฑ์ ๋ฉ์ธ๊ณผ today widget extension ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ ค๋ฉด iOS์ App Group์ด๋ผ๋ ๊ฐ๋
์ ์ฌ์ฉํด์ผ ํ๋ค. ๊ทธ๋์ react-native-shared-group-preferences ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ์ฉํด์ผํ๋ค. ์์ ฏ ์ฝ๋์์ SharedGroupPreferences
๋ฅผ importํ๊ณ getItem
์ด๋ผ๋ static
ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋๋ฐ getItem
์ด๋ผ๋ ํจ์๋ ์ฝ์์ ์์ฐํ๋ ๊ฒ์ ํ์ธํ์ง๋ง ์ ์ ์ฌ์ฉํ ๋์๋ SharedGroupPreferences
๊ฐ undefined
๋ผ๋ ์๋ฌ๊ฐ ๋์ค๋ ์ํฉ์ด์ด์ ์ง์ง ํฌ๊ธฐํ๊ธฐ ์ผ๋ณด ์ง์ ์ด์๋ค. ๋ง์ ๊ฒ์ ์๋ํด๋ณด์๊ณ ๋ง์ ์๊ฐ์ด ํ๋ ๋ค. ์งํธ๋ผ๊ธฐ๋ฅผ ์ก๋ ์ฌ์ ์ผ๋ก ํด๋น ๋ ํฌ์งํ ๋ฆฌ์ ์ด์๋ฅผ ๋ณด์๋๋ฐ ๋ด ์ํฉ๊ณผ ๋น์ทํ ์ด์๊ฐ ์์๋ค. ๋ต๋ณ ์ค ํ๋๊ฐ link๊ฐ ์๋์์ ๊ฒ์ด๋ผ๋ ๋ต๋ณ์ด์๋ค. ํ์ง๋ง ๋๋ link๊ฐ ์๋์ด์๋ ๊ฒ์ ํ์ธํด์ ๊ทธ ๋ฌธ์ ๋ ์๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ฒ ์ค์ฐ์ด์๋ค. ์ฑ ๋ฉ์ธ์๋ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ link๋์ด์์์ง๋ง today widget extension์๋ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ link๊ฐ ์๋์ด์์์ด์ SharedGroupPreferences
๋ฅผ ์ฌ์ฉํ ์ ์์๋ ๊ฒ์ด๋ค. today widget extension์ react-native-shared-group-preferences
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ linkํ๋ ์ ์์ ์ผ๋ก ์๋ํ๋ค! ๋คํํ ๋ฌธ์ ์ ๋ํ solution์ ๋ฐ๊ฒฌํ๊ณ ๋ค๋ฆฌ ์ญ ๋ป๊ณ ์ ์ ์์๋ค. โ ๋ด๊ฐ ๋จ๊ธด ๋๊ธ
Microsoft์์ ๋ง๋ code push๋ React Native๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์๋ ํฌํจ๋์ด์์ ์ ๋๋ก ์์ฃผ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ด๋ค. ๋ค์ดํฐ๋ธ ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ์ ๋ฐ์ดํธ ์์ด ๊ฐ๋จํ ๋ช ๋ น์ด๋ง์ผ๋ก ์ฑ์ ์ ๋ฐ์ดํธ์ํฌ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค. code push์ ์๋ฆฌ๋ ๋ค์ดํฐ๋ธ ํ์ผ์์ ๋ก์ปฌ์ด ์๋ code push ์๋ฒ์ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค ํ์ผ์ ๋ฐ๋ผ๋ณด๊ณ ์๋ค๊ฐ ๊ฐ๋ฐ์๊ฐ code push ๋ช ๋ น์ด๋ฅผ ํตํด ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค ํ์ผ์ ๊ต์ฒดํ๋ฉด ์ฑ์ด ์ ๋ฐ์ดํธ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ์๋ฆฌ์ด๋ค. ๋ฌผ๋ก , ๋ค์ดํฐ๋ธ ๋ชจ๋์ ์ถ๊ฐํ ๊ฒ์ ์ฝ๋ ํธ์ฌ๋ก ์ ์ฉ์ด ์๋๋ค. ๊ทธ ๋์๋ ์ง์ ์ ๋ฐ์ดํธ๋ฅผ ํด์ค์ผํ๋ค. ํ์ง๋ง ๊ณ์ ์ฝ๋ ํธ์ฌ๋ฅผ ์ฌ์ฉํด์ ์ ๋ฐ์ดํธํ๋ ๊ฑด ์ข์ง ์๋ค๊ณ ์๊ฐํ๋ค. ์๋ํ๋ฉด ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ผ๋ง๋ ๊พธ์คํ ์ ๋ฐ์ดํธํ๋ ์ง๋ ASO์ ์ํฅ์ด ๋ฏธ์ณ์ง๊ธฐ ๋๋ฌธ์ด๋ค.
React Native์์ firebase๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ๋ด๊ฐ ์ฃผ๋ก ์ฌ์ฉํ ๋ถ๋ถ์ analytics์ event์ด๋ค. ์ ์ ๊ฐ ํน์ ์ก์
์ ์ทจํ์ ๋, firebase์์ event๋ฅผ trackingํด์ ์ ์ ๊ฐ ์ด๋ค ํ๋ก์ฐ๋ฅผ ์ทจํ๋์ง ๋ณผ ์ ์๊ณ , funnel์ ํตํด ์ด๋์ bounce rate(์ดํ๋ฅ )๊ฐ ๋ง์ด ๋ฐ์ํ๋์ง ๋ณผ ์ ์๋ ๋ฑ ์ ๊ณตํ๋ ํต๊ณ ๊ธฐ๋ฅ์ด ๋ง๋ค. ์์ firebase ์คํฌ๋ฆฐ์ท์ analytics์ ๋์ฌ๋ณด๋์ด๋ค. ์ถ๊ฐ์ ์ผ๋ก admob์ ์ฌ์ฉํด ๊ด๊ณ ๋ฐฐ๋๋ฅผ ๋ฌ ์ ์๋๋ฐ, react-native-firebase๋ฅผ ์ฌ์ฉํ ์๋ ์์ง๋ง ๋ ํธ๋ฆฌํ๊ฒ ์ธ ์ ์๊ฒ ์ ๊ณตํด์ฃผ๋ react-native-admob์ ์ฌ์ฉํ๋ค. ๋ํ cloud messaging์ ํตํด ํธ์ฌ ์๋ฆผ์ ๋ณด๋ด๋ ๊ธฐ๋ฅ์ ํด๋ณด๊ณ ์ถ์์ง๋ง ํ ๋ฒ ์ฝ์งํ๋ค๊ฐ ์๋์ ๋ณด๋ฅ์ค์ด๋ค. ์ด์จ๋ analytics
๊ธฐ๋ฅ๋ง์ผ๋ก๋ invertase ํ์ react-native-firebase
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ React Native๋ฅผ ํ๋ค๋ฉด ๊ผญ ์จ์ผํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
react-native-fast-image
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ React Native์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ <Image />
์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํด๋ ๋์ง๋ง react-native-fast-image
์ <FastImage />
๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฆ ๊ทธ๋๋ก ๋ ๋น ๋ฅด๊ฒ ์ด๋ฏธ์ง๋ฅผ ๋ ๋ํ ์ ์๋ค. ์ฃผ๊ธฐ๋ฅ์ผ๋ก๋ ์ด๋ฏธ์ง ์บ์ฌํ๊ธฐ, authorization headers๋ฅผ ์ถ๊ฐํ๊ธฐ, ์ด๋ฏธ์ง ๋ฏธ๋ฆฌ ๋ก๋ํ๊ธฐ, ์ด๋ฏธ์ง ์ฐ์ ์์ ๋งค๊ธฐ๊ธฐ ๋ฑ์ด ์๋ค. iOS์ ์ด๋ฏธ์ง ๋ก๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ SDWebImage์ Android์ ์ด๋ฏธ์ง ๋ก๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ glide๋ฅผ ํ๋ซํผ๋ง๋ค ์ง์ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ๋์๋ค. ๋ฐ๋ผ์ ๋ง์ ์ด๋ฏธ์ง๋ฅผ ๋ ๋ํ ์ผ์ด ์๋ค๋ฉด, React Native์์ react-native-fast-image
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฌ์ฉ์ ํ์๋ค.
react-native-egg๋ ์ด์คํฐ์๊ทธ๋ฅผ ์ฌ์ด๋๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์์ง ์ฌ์ฉ์ ์ํด๋ดค์ง๋ง ์ฑ ์์ ๋น๋ฐ์ค๋ฌ์ด ์ ์ค์ณ๋ฅผ ์จ๊ฒจ๋๊ณ ๊ฐ๋ฐ์ ์ํ ํ ์คํธ๋ชจ๋๋ก ์ง์ ํ๊ฒ ํ๊ฑฐ๋, ์ ์ ๋ค์ด ์ฐ์ฐํ ๋ฐ๊ฒฌํ๋ค๋ฉด ์ฌ๋ฏธ ์์๋ฅผ ๋๋๋งํ ์ด์คํฐ์๊ทธ๋ฅผ ์จ๊ฒจ๋์ ์ ์๋ค. ๊ตฐ๋์ด ์ฑ์๋ ๋์ค์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ์ด์คํฐ์๊ทธ๋ฅผ ์จ๊ฒจ๋์ ์๊ฐ์ด๋ค.
์์ดํฐ์ ์ฝํ ์ง๋์ธ ํ
ํฑ์ ๊ตฌํํด๋์ ์์ฃผ ์ข์ React Native ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ ์ ๊ฐ ๋ฒํผ์ ๋๋ฅผ ๋, ํผ๋๋ฐฑ์ ์ฃผ๋ ๋ฐ ํ
ํฑ๋งํผ ์ข์๊ฒ ์๋ค๊ณ ์๊ฐํ๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฃผ ์์ฝ๊ฒ React Native์์ ํ
ํฑ ํจ๊ณผ๋ฅผ ์ค ์ ์๋ค. ๋์ ์๋๋ก์ด๋๋ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์, Platform.OS
๋ก ๋ถ๊ธฐ ์ฒ๋ฆฌํด์ฃผ์ด์ผ ํ๋ค.
์งง๊ฒ๋๋ง ๊ตฐ๋์ด ์ฑ์ React Native๋ก ๊ฐ๋ฐํด๋ณด๋ฉด์ ๋ง์ ์ฝ์ง์ด ์์์ง๋ง ์ ๋ง ์ข์ ๊ฐ๋ฐ ๊ฒฝํ์ ํ๋ค. ๋ฌด์๋ณด๋ค๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ค์ดํฐ๋ธ ์ฑ๊ณผ ์ฌ์ฉ์ฑ, ์ฑ๋ฅ์ด ๊ฑฐ์ ๋์ผํ ์ฑ์ ๋ง๋ค ์ ์๋ ๊ฒ์ ์ ๋ง ์ ์ธ๊ณ์๋ค. ๊ฒ๋ค๊ฐ iOS์ ์๋๋ก์ด๋ ๋ ํ๋ซํผ์์ ๋์๊ฐ๋ค๋โฆ React Native์ ๊ดํฌ์ด ๋ ๊ฒ ๊ฐ๋ค. ๋ด๊ฐ ์๊ฐํ๋ React Native์ ์ฅ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
Cake ์ฑ์ ์ด์ฑ๋ฏผ ๊ฐ๋ฐ์๋์ด Cake ์ฑ์ ์๋๋ก์ด๋์ iOS ๋ ํ๋ซํผ์ ์ฑ์ ํผ์์ ํ ๋ฌ๋ง์ ๊ฐ๋ฐํ๊ณ ์ถ์ํ์ จ๋ค๊ณ ํ๋ค. ๋ง์ฝ์ ์๋๋ก์ด๋์ iOS ๊ฐ๊ฐ ๊ฐ๋ฐ์ ํ๋ค๋ฉด ์ธ์๊ณผ ์๊ฐ ๋ฑ ๋ฆฌ์์ค๊ฐ ๋ ํ์ํ์ ๊ฒ์ธ๋ฐ React Native์๊ธฐ์ ๊ฐ๋ฅํ๋ค. ํ ๊ฐ์ง ์์ค์ฝ๋๋ก ์๋๋ก์ด๋์ iOS์ ์ฝ๋๋ฅผ ๊ณต์ ํ๊ฒ ๋๋ ์์ฐ์ฑ๋ ๋์์ง๊ณ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ง๋ณด์ ๋น์ฉ์ด ํ์ ํ ๋ฎ์์ง๋ค. ๋ํ, ์๋๋ก์ด๋์ iOS๋ ์ฝ๋๋ฅผ ๊ณ ์น๊ณ ํ์ธํ ๋๋ง๋ค ๋น๋ํ๋ฉด ๊ฝค ์ค๋์๊ฐ์ ์ก์๋จน๋๋ฐ์ ๋ฐํด React Native๋ live reload ๊ธฐ๋ฅ์ ํตํด์ ์ฝ๋๋ฅผ ๊ณ ์น ๋๋ง๋ค, ๋ฐ๋ก๋ฐ๋ก ์์ ์ฌํญ์ ํ์ธํ ์ ์์ด์ ์์ฒญ ํธํ๊ณ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ ์ ์๋ค.
Javascript, CSS ๊ทธ๋ฆฌ๊ณ React๊ฐ ์ต์ํ๋ค๋ ์ ์ ํ์ React Native์ learning curve๋ ๋ง๋ ์๋๊ฒ ์งง๋ค. JS, React๊ฐ ๋ฅ์ํ๋ค๋ฉด React Native๋ฅผ ์ง์ ๊ฐ๋ฐํ๋ฉด์ ๋ชจ๋ฅด๋ ๊ฒ์ ๊ทธ๋๊ทธ๋๋ง๋ค ์ฐพ์๋ณด๋ฉฐ ๋ฅ์ํด์ง๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ๋ค. ๋ง์ ์ฝ์ง์ด ํ์ํ๊ฒ ์ง๋ง
๋ฐ์์ ํ ๋ฒ ๋ ์ธ๊ธํ๊ฒ ์ง๋ง awesome-react-native๋ฅผ ๋ณด๋ฉด ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ง์ด ๋ง๋ค์ด์ ธ ์์ด์ ๊ฐ๋ฐํ๋๋ฐ ๊ฑฐ์ ๋ฌธ์ ๊ฐ ์์๋ค. ๋ํ, ์์ฃผ ๋ฐฉ๋ํ npm ๋ชจ๋๋ค์ ๋ง์๊ป ์ค์นํด์ ์ฌ์ฉํ ์ ์๋ ์ ๋ ํฐ ์ฅ์ ์ค ํ๋์ด๋ค. ๋ค์ดํฐ๋ธ ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋๋ก์ด๋์ iOS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ณด๋ค์ผ ํจ์ฌ ์ ๊ฒ ์ง๋ง ๊ฒฝ์ํ๊ณ ์๋ ํ์ด๋ธ๋ฆฌ๋ ์ฑ ํ๋ ์์ํฌ์ธ flutter๋ณด๋ค๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ง๋ค. ํน์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค๋ฉด ์ง์ create-react-native-library๋ฅผ ํตํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ๋ฐํ ์ ์๋ค. (๋ฌผ๋ก Android, iOS ํ๋ซํผ์์ ๋์๊ฐ๋๋ก ์ง์ ์ฝ๋๋ฅผ ์์ฑํด์ผํด์ ๋ง์ ์ด๋ ค์์ด ์์ง๋ง ๋ง์ด๋ค.)
์์์ ๋งํ์ง๋ง code push๋ React Native๋ฅผ ์ฌ์ฉํ๋ ํฐ ์ด์ ์ค ํ๋์ด๋ค. ๋ฉฐ์น ์ฉ ๊ฑธ๋ฆฌ๋ iOS ์ฌ์ฌ ๋ฐ ๋ฐฐํฌ๋ฅผ ์๋ตํ๊ณ ๋ช ์ด๋ง์ ๋ฐฐํฌํ ์ ์๋ ์ ์ ์์ฃผ ๊ฐ๋ ฅํ๋ค.
React Native์ ํฌ์ด์ง๋ง ์์ฌ์ด ์ ์ด ์๋ค๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์๋๋ก์ด๋ ์์ ฏ์ react-native-android-widget-poc, iOS ์์ ฏ์ react-native-today-widget, ์ ํ์์น ์ฑ์ react-native-watch-connectivity, ๋ํ ์ฑ ๊ฐ์ ๋ฐ์ดํฐ ๊ณต์ ๋ react-native-shared-group-preferences ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฑ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์คํ์์ค๋ก ๊ฐ๋ฐ๋๊ณ ์์ง๋ง ์๋ฌด๋๋ ๋ค์ดํฐ๋ธ์ ์๋ก์ด API๋ค์ด ๋์ค๋ฉด ๋ฐ๋ก๋ฐ๋ก ์ง์๋๋ ๊ฒ์ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ์ค๋งํธ์์น ์ฑ์ด๋ ์์ ฏ ๊ฐ์ ๋ค๋ฅธ ํ์ฅ ๊ธฐ๋ฅ์ ์ฌ์ฉํด์ผ ํ๋ค๋ฉด React Native๋ ์ถ์ฒํ์ง ์๋๋ค. React Native๋ก iOS ์์ ฏ์ ๊ฐ๋ฐํ๊ณ ์์ง๋ง ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ์ธ์ง ๊ฐ๋ โ๋ก๋ํ ์ ์์โ ์ด๋ผ๊ณ ๋จ๋ ๋ฌธ์ ๊ฐ ์์ด์ ์ด์ง ๋ถ์์ ํ ์ ์ด ๋ณด์ธ๋ค.
React Native ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง์ด link์ํค๋ค๊ฐ ๋ณด๋ฉด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ๊ผฌ์ผ ๋๊ฐ ์๊ณ , ์๋ฎฌ๋ ์ดํฐ ๊ธฐ๊ธฐ์์ ์๋์ ์ํ๋ ๋ฑ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์ฐพ๊ธฐ ์ด๋ ค์ด ํธ๋ฌ๋ธ์ด ๋ฐ์ํ๊ธฐ ์ฝ๋ค. ๋ด๊ฐ ์์ง ์ด๋ณด๋ผ์ ๋ชป์ฐพ๋ ๊ฒ์ผ ์๋ ์๊ธด ํ์ง๋ง, ๋ถ์น์ ํ ์๋ฌ๋ฉ์ธ์ง๋ ๋ง๊ณ ํด์ ์๋๋ก์ด๋ ํน์ iOS ๋น๋๊ฐ ์๋ ๋์๋ ๋ง์ ์๊ฐ์ ํญํ ๊ตฌ๊ธ๋ง๊ณผ ์ํ์ฐฉ์ค๋ฅผ ์ํ๋ค. (์ด๋ ๋ด๊ณต์ด ์์ด๋ฉด ํด๊ฒฐ๋ ๊ฒ ๊ฐ๋ค.)
React Native ๊ด๋ จ ์์ ์ด ํ๊ตญ์ ์ถํ๋ ๊ฒ 2~3๊ถ ๋ฐ์ ๋ณด์ด์ง ์๊ณ , ํ๊ตญ์ React Native ์ปค๋ฎค๋ํฐ๊ฐ ์์์ ๊ทธ๋ฐ์ง ํ๊ตญ์ด๋ก ๋ ๊ฐ๋ฐ ์๋ฃ๋ฅผ ๋ง์ด ์ฐพ์๋ณผ ์ ์์๋ค.
React Native ๊ณต์ ํํ์ด์ง๋ RN์ผ๋ก ๊ฐ๋ฐํ๋ฉด์ ๋น์ฐ ์ ์ผ ๋ง์ด ๋ค์ฌ๋ค ๋ณธ ํํ์ด์ง์ผ ๊ฒ์ด๋ค. ์ด๋ค ์ปดํฌ๋ํธ, API๋ฅผ ์ ๊ณตํ๊ณ ์๋์ง ๋ณด๋ ์ฌ๋ฏธ๊ฐ ์๊ณ , ํ์ํ ์ปดํฌ๋ํธ์ ์์ ์ ๋ช ์ธ๊ฐ ์์ธํ ์ ํ์์ด์ ๋ง์ด ์ฐธ๊ณ ํด์ผํ ์ฌ์ดํธ์ด๋ค.
React Native์์ ํ์ํ ์ ์ฌ์ ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์ดํด๋์ ๋ ํฌ์งํ ๋ฆฌ๋ค. RN์ผ๋ก ๊ฐ๋ฐํ ๋ ๊ฐ์ฅ ๋ง์ด ๋ฐฉ๋ฌธํ๋ ๋ ํฌ์งํ ๋ฆฌ์ผ ๊ฒ์ด๋ค.
๋ค์ด๋ฒ ๊ฐ๋ฐ์ ์ปจํผ๋ฐ์ค์ธ deview 2018์์ cake ์ฑ์ ๊ฐ๋ฐํ์ snow์ ์ด์ฑ๋ฏผ ๊ฐ๋ฐ์๋์ด ๋ฐํํด์ฃผ์ React Native ๋ฐํ์๋ฃ์ด๋ค. ํ์ฅ์์ ์ฐธ์ํ๋๋ฐ React Native๊ฐ ์ด๋ ๊ฒ ๊ด์ฌ์ด ๋ง์ ๊ธฐ์ ์ธ์ง ์ฒ์ ์์๋ค. ์๋ง ์ธ์ ์ ์ด๋ฆ์ผ๋ก ์ด๊ทธ๋ก๊ฐ ๋ง์ด ๋๋ ธ๊ธด ํ์ง๋ง.. ใ ใ ์ง์ง ์์ ๋ฃ๋ ์ฌ๋๋ค๊น์ง ๊ฝ์ฐผ์ ์ ๋๋ก ์ธ๊ธฐ ์๋ ์ธ์ ์ด์๋ค. ์ธ๊ธฐ๊ฐ ์๋ ๋งํผ ๊ฐ์ ๋ด์ฉ๋ ์์ฐผ๋ค. ๋ง์นจ ๊ตฐ๋์ด๋ฅผ ํ์ฐฝ ๊ฐ๋ฐํ์ ๋ ์ฏค์ด์ด์ ๋ฐํ ๋ด์ฉ์ด ์์ ๋ค์ด์๊ณ , ๋ชฐ๋๋ React Native์ ๋์ ์๋ฆฌ์ ์ฌ๋ฌ๊ฐ์ง ๊ฐ๋ฐ ํ, ๋ ธํ์ฐ ๋ฑ์ ์ ์๋ฐ์ ์ ์์ด์ ์ข์๋ค. ๋ฐํ ์์ ์ ๊ฐ ์ ๋ฆฌํด๋์ ์๋ฃ
React Native๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๋ง์ ์ด๋ ค์์ด ์์์ง๋ง ๋ง์ ์ฝ์ง์ ํตํด ์๋ก์ด ๊ธฐ์ ์ ์ตํ ์ ์์๋ค. ํ์ง๋ง React Native๋ ๊ฐ์ธ ํ๋ก์ ํธ๋ ํ๋กํ ํ์
๊ฐ์ด ๋น ๋ฅด๊ณ ๊ฐ๋จํ๊ฒ ๋ง๋ค ๋์๋ ์ ํฉํ์ง๋ง ํ์ฌ์ ๋ํํ๋ก์ ํธ์์ ์ฐ๊ธฐ์๋ ๋ถ์ ํฉํ ๊ฒ ๊ฐ๋ค. ์์ง React Native๋ ๋ฒ์ ์
๊ทธ๋ ์ด๋๊ฐ ๊พธ์คํ๊ณ ๋น ๋ฅด๊ฒ ์ด๋ฃจ์ด์ง๊ณ ์๊ณ ๊ทธ ๋ง์ ๋ถ์์ ํ๋ค๋ ๋ง์ด๋๊น ๋ง์ด๋ค. ๊ทธ๋์ ๊ฐ์ธ ํ๋ก์ ํธ๋ก ์ฑ ๋ง๋ค ๋์๋ง React Native๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ ๊ฒ์ด๋ค. React Native๋ฅผ ์ฌ์ฉํ๋ ํ์ฌ๊ฐ ๊ฑฐ์ ์๊ธด ํ๋ค. ์ด๋ก์จ React Native ์ฒซ ๊ฐ๋ฐ๊ธฐ๋ฅผ ๋ง์น๋๋ก ํ๊ฒ ๋ค.
์ ์ง ๊ตฐ๋์ด ์ฑ ๊ฐ๋ฐ๊ธฐ๋ฅผ ์ฐ๋ค๊ฐ React Native ์ฐฌ์๊ธ๋ก ๋ฐ๋ ๊ฒ ๊ฐ์ ๋๋์ ์ธ ๋๋์ด ๋ค์ง๋งโฆ ์ด๋ณด ๋ธ๋ก๊ฑฐ๋ผ ๊ธ์ด ์๊ฐ๋ณด๋ค ๋์๊ฐ ์๊ณ ๊ธธ์ด์ง๊ธฐ๋ง ํด์ ์ฃ์กํฉ๋๋ค ๐ ๋ถ์กฑํ ๊ธ ๋ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค ๐ฅ
Personal blog by Jon Jee.
I hope to explain with words and code.