ํฐ์คํ ๋ฆฌ ๋ทฐ
[Lymo ๊ฐ๋ฐ์ผ์ง #4] React Native๋ก ๊ธฐ๊ธฐ์์ ์ฌ์ ์ค์ธ ๋ฏธ๋์ด ์ธ์ ๊ฐ๋ก์ฑ๊ธฐ
parkcool 2026. 3. 17. 00:182๏ธโฃ Lymo ๊ฐ๋ฐ์ผ์ง #2: https://parkcool.tistory.com/12
3๏ธโฃ Lymo ๊ฐ๋ฐ์ผ์ง #3: https://parkcool.tistory.com/14
4๏ธโฃ Lymo ๊ฐ๋ฐ์ผ์ง #4: ํ์ฌ ๊ธ
์ง๋ ์ธ ํธ์ ์ผ์ง๋ฅผ ํตํด AI์ ๋ฐฑ์๋, ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ์ ์์ฑํ๋ ๊ณผ์ ์ ๋ณด์ฌ๋๋ ธ์ต๋๋ค. ์ด์ ์ฌ์ฉ์์ ๋์ ๋ณด์ด๋ ๋ถ๋ถ์ธ ํ๋ก ํธ์๋ ๊ฐ๋ฐ๊ธฐ๋ก ๋์ด๊ฐ ์ฐจ๋ก์ ๋๋ค.
์ค๋ ๋ค๋ฃฐ ์ฃผ์ ๋ Lymo์ ์ ์ฒด์ฑ๊ณผ๋ ๊ฐ์ ๊ธฐ๋ฅ์ด์, ๊ฐ๋ฐ ๊ณผ์ ์์ ๊ฐ์ฅ ๋ง์ ์ ๋ฅผ ์ผ๋ ๋ถ๋ถ์ ๋๋ค. ๋ฐ๋ก ๊ธฐ๊ธฐ์์ ์ฌ์๋๋, ์ฆ ๋ค๋ฅธ ์์ ์คํธ๋ฆฌ๋ฐ ์ฑ์์ ๋์ค๋ ์์ ์ ์ค์๊ฐ์ผ๋ก ๊ฐ๋ก์ฑ๋ ๊ธฐ๋ฅ์ ๋๋ค.
๐ต๏ธ ๋ฏธ๋์ด ์ธ์ ๊ฐ๋ก์ฑ๊ธฐ
1ํธ์์ ๋ง์๋๋ ธ๋ค์ํผ, Lymo์ ํต์ฌ์ ์ธ ๊ธฐ๋ฅ ์ค ํ๋๋ ์ฌ์ฉ์๊ฐ ํ์ ์ฐ๋ ์์ ์ฑ(์คํฌํฐํ์ด, ์ ํ๋ธ ๋ฎค์ง, ๋ฉ๋ก ๋ฑ)์ ๊ทธ๋๋ก ์ธ ์ ์๋ค๋ ์ ์ ๋๋ค. ์์ ์ฑ์์ ์ฌ์ ์ค์ธ ์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์์ Lymo์์๋ ๊ทธ ๊ณก์ ํด์ ์ ๋ณด๋ง์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. ํ์ง๋ง ์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ค๋ ์์๋ถํฐ ๊ฑฐ๋ํ ๋ฒฝ์ ๋ถ๋ชํ์ต๋๋ค.

์๋๋ก์ด๋๋ฅผ ํฌํจํ ๋๋ถ๋ถ์ OS์์๋ ๋ณด์์ ์ํด ์ฑ๊ณผ ์ฑ ์ฌ์ด๋ฅผ ๋ถ๋ฆฌํ๋ ์๋๋ฐ์ค ์ํคํ ์ฒ๋ฅผ ์ ์ฉํ๊ณ ์์ต๋๋ค. ์ฆ, ๊ธฐ๋ณธ์ ์ผ๋ก Lymo๋ ์คํฌํฐํ์ด์์ ์ง๊ธ ๋ฌด์จ ๋ ธ๋๋ฅผ ์ฌ์ ์ค์ธ์ง ์ ์ ์์ต๋๋ค.
ํ์ง๋ง ๋ฐฉ๋ฒ์ด ์ ํ ์๋ ๊ฒ์ ์๋์์ต๋๋ค. ๋คํํ๋ ์๋๋ก์ด๋์์๋ MediaSessionManager๋ผ๋ API๋ฅผ ์ ๊ณตํฉ๋๋ค.

์๋๋ก์ด๋์์ ์๋จ ๋ฐ๋ฅผ ๋ด๋ฆฌ๋ฉด ๋์ค๋ ๋ฏธ๋์ด ์๋ฆผ์๋ ๊ณก ์ ๋ชฉ, ์ํฐ์คํธ, ์จ๋ฒ ์ํธ ์ ๋ณด ๋ฑ ๊ณก์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๊ฐ ๋ด๊ฒจ ์์ต๋๋ค. MediaSessionManager๋ฅผ ์ด์ฉํ๋ฉด ๋ค๋ฅธ ์ฑ์์๋ ํ์ฌ ์ฌ์ ์ค์ธ ์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด ์ ๋ณด๋ฅผ ๋ง์๋๋ก ๊ฐ์ ธ์ฌ ์๋ ์์ต๋๋ค. ๋ฏธ๋์ด ์ธ์ ๋ ๊ฒฐ๊ตญ ์๋ฆผ ์ ๋ณด์ ์ผ์ข ์ด๊ณ , ์๋ฆผ ์ ๋ณด์ ์ ๊ทผํ๋ค๋ ๊ฒ์ ๋ณด์์ ๋งค์ฐ ๋ฏผ๊ฐํ ๋ฌธ์ ์ค ํ๋์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ง์ฝ ์ฑ๋ค์ด ์๋ฆผ ์ ๋ณด์ ๋ง์๋๋ก ์ ๊ทผํ ์ ์๋๋ก ํ์ฉํด๋ฒ๋ฆฐ๋ค๋ฉด, ๋ด ์นดํก ์๋ฆผ์ ๋๋ ๋ชจ๋ฅด๋ ์ฌ์ด์ ๋ชจ๋ฅด๋ ์ฌ๋์ด ๊ฐ๋ก์ฑ๊ฐ ์๋ ์๋ ๋ฌด์์ด ์ผ์ด ์ผ์ด๋ ์๋ ์๊ฒ ๋ฉ๋๋ค.

๊ทธ๋์ ๊ฐค๋ญ์ ๊ธฐ๊ธฐ์ ํ์ฌ๋ One UI ๊ธฐ์ค์ผ๋ก, ์๋ฆผ ์ ๊ทผ ํ์ฉ ๊ถํ์ 'ํน๋ณํ ์ ๊ทผ'์ด๋ผ๋ ์ค์ ํ๋ฉด ๊น์ํ ๊ณณ์์ ์กฐ์ํ ์ ์์ต๋๋ค. ๊ทธ๋งํผ ๋ฏผ๊ฐํ๊ณ ์ค์ํ ๊ถํ์ด๋ผ๋ ๊ฒ์ด์ฃ .
โบ๏ธ ์น์ ํ UX
ํ์ง๋ง ์ฌ์ฉ์๋๋ฌ ์ค์ → ์ ํ๋ฆฌ์ผ์ด์ → ์ฐ์ธก ์๋จ ์ ์ธ ๊ฐ ๋ฒํผ → ํน๋ณํ ์ ๊ทผ ํ๋ฉด → ์๋ฆผ ์ ๊ทผ ํ์ฉ → Lymo ์ฑ ํ์ฉ ํด๋ฌ๋ผ๊ณ ํ ์๋ ์๋ ๋ ธ๋ฆ์ด์์ต๋๋ค. ๋ณด์๋ค์ํผ ๊ฒฝ๋ก๊ฐ ๋๋ฌด ๋ณต์กํ๊ณ ์ด๋ ต์์์. ๋คํํ ์ด ํ๋ฉด๊น์ง ํ ๋ฒ์ ๋ชจ์ ๋ค๋๋ฆฌ๋(?) ๋ฉ์๋๋ฅผ ์๋๋ก์ด๋์์ ์ ๊ณตํ๊ณ ์์์ต๋๋ค.

๊ทธ๋์ ์ ๋ Lymo๊ฐ ์๋ฆผ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌ๋ฐ์ง ๋ชป ํ์ผ๋ฉด ์ค์ ํ๋ฉด์ผ๋ก ๋ฐ๋ก ์ด๋ํ ์ ์๋๋ก ํ๋ UI๋ฅผ ๊ตฌํํ์์ต๋๋ค. ์ ์ฌ์ง์ ์๋ '์๋ฆผ ์ ๊ทผ ํ์ฉํ๊ธฐ'๋ฅผ ๋๋ฅด๋ฉด ํฐ์น ํ ๋ฒ์ ๊ถํ์ ํ์ฉํ ์ ์๋ ์ค์ ํ๋ฉด์ผ๋ก ๋ฐ๋ก ์ด๋ํ์ฌ ๊ถํ์ ๋ถ์ฌํ ์ ์๋ ๊ฒ์ด์ฃ .
๐ Expo Native Modules๋ก ๋ค๋ฆฌ ๋๊ธฐ
์ด๋ฒ ๋ฌธ๋จ์์๋ ์กฐ๊ธ ๊ธฐ์ ์ ์ธ ์๊ธฐ๋ฅผ ํด๋ณด๊ฒ ์ต๋๋ค. React Native๋ JS๋ก ๋ค์ดํฐ๋ธ ์ฑ์ ๋ง๋ค ์ ์๋๋ก ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ๊ทธ๋์ Kotlin ์ฝ๋๋ก ์์ฑํ ๋ค์ดํฐ๋ธ ๋ชจ๋์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋์ ์ฐ๊ฒฐํ๋ '๋ค๋ฆฌ'๊ฐ ํ์ํฉ๋๋ค.
์นด๋ฉ๋ผ ์ฌ์ฉ, ๋ง์ดํฌ ์ ๊ทผ, ์๋ฆผ ๋์ฐ๊ธฐ์ ๊ฐ์ด ์์ฃผ ์ฌ์ฉ๋๋ ๋ค์ดํฐ๋ธ ๊ธฐ๋ฅ๋ค์ ์ด๋ฏธ JS์์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋๋ก ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ง์ด ๊ณต๊ฐ๋์ด ์์ต๋๋ค. ์ด๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ JS์์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋๋ก '๋ค๋ฆฌ'๊น์ง ์ด๋ฏธ ์ ๊ตฌ์ถ๋ ์ํ์ ๋๋ค. ํ์ง๋ง ์ ๊ฐ ๊ตฌํํ๊ณ ์ ํ๋ '์๋ฆผ ์ ๊ทผ'์ ๋งค์ฐ ํน์ํ ๊ธฐ๋ฅ์ ๋๋ค. ๊ทธ๋์ ์ด๋ฏธ ๋๊ฐ ๋ง๋ค์ด ๋ ๊ณต๊ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์์ต๋๋ค. ์ฆ, ์ ๊ฐ Kotlin ์ฝ๋๋ ๋ฌผ๋ก JS์ ์ด๋ฅผ ์ฐ๊ฒฐํ๋ ๋ค๋ฆฌ๊น์ง ์ง์ ๊ตฌํํด์ผ ํ๋ค๋ ๋ป์ด์์ต๋๋ค.
์ ๋ ์ด ํ๋ก์ ํธ๋ฅผ Expo ํ๊ฒฝ์์ ๊ฐ๋ฐํ๊ณ ์๋๋ฐ์. ๋คํํ Expo๋ Native Modules๋ผ๋ ์ธ๋ จ๋ ๋ฐฉ์์ ํตํด ๋ค์ดํฐ๋ธ ๊ธฐ๋ฅ์ JS์์ ์ฌ์ฉํ ์ ์๋๋ก ํ๊ณ ์์์ต๋๋ค.

์ ํต์ ์ธ React Native ์ฑ๋ค์ JS์ ๋ค์ดํฐ๋ธ ์ฌ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ๋ธ๋ฆฟ์ง๋ฅผ ํต๊ณผํด์ผ ํ์ต๋๋ค. ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ JSON ๋ฌธ์์ด๋ก ์ง๋ ฌํํด์ ๋ณด๋ด๊ณ , ๋ฐ๋ํธ์์ ๋ค์ ์ญ์ง๋ ฌํํ๋ ๊ณผ์ ์ ํ์ฐ์ ์ผ๋ก ์ค๋ฒํค๋๋ฅผ ๋ฐ์์์ผฐ์ต๋๋ค.

ํ์ง๋ง Expo Native Modules๊ฐ ์ฌ์ฉํ๋ JSI (JavaScript Interface) ๋ฐฉ์์ ๋ค๋ฆ ๋๋ค. ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ๋ค์ดํฐ๋ธ ๊ฐ์ฒด์ ์ง์ ์ ๊ทผํ ์ ์๊ฒ ํด์ฃผ๋ C++ ๊ธฐ๋ฐ์ ์ธํฐํ์ด์ค์ ๋๋ค. ์ฝ๊ฒ ๋งํด, ์ค๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํฌ์ฅํด์ ํ๋ฐฐ๋ก ๋ณด๋ด๋ ๊ณผ์ ์์ด, ๋ค์ดํฐ๋ธ์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๊ฐ์ ๋ฐฉ์ ์์ ์ง์ ๋ํํ๋ ์ํคํ ์ฒ๋ฅผ ๋ง๋ ์ ์ ๋๋ค.
๋๋ถ์ด ๋๊ธฐ ํธ์ถ์ด ๊ฐ๋ฅํด์ง๊ณ ๋ค์ดํฐ๋ธ ์ฝ๋ ์์ฑ์ด ์ข ๋ ํธํด์ง๋ ๋ฑ ๋ถ๊ฐ์ ์ธ ์ด์ ๋ ์ฑ๊ธธ ์ ์์์ต๋๋ค.
๐ Headless JS๋ก ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ํํ๊ธฐ

์ ๋ ์ฌ์ฉ์๊ฐ ์คํฌํฐํ์ด๋ ์ ํ๋ธ ๋ฎค์ง์ผ๋ก ์์ ์ ์ฌ์ํ๋ฉด, ๊ทธ ์์ ์ ํด์์ ๋ํ ๊ถ๊ธ์ฆ์ ์ ๋ฐํ๋ ์๋ฆผ์ ๋์ฐ๋ ๊ธฐ๋ฅ๋ ๊ตฌํํ๊ณ ์ ํ์์ต๋๋ค. ๋จ์ํ ์ฌ์ฉ์์ ์์ฒญ์ ์ํด์๋ง ๊ณก์ ํด์์ ์ ๊ณตํ๋ฉด ์ฌ์ฉ์๋ค์ด ์ฑ์ ์ฌ์ฉํ๋ ๋น๋๊ฐ ๋จ์ด์ง ๊ฒ ๊ฐ์๊ฑฐ๋ ์.
์ ์คํฌ๋ฆฐ์ท์์ ๋ณด์๋ค์ํผ ๋จ์ํ '์ด ๊ณก์ ํด์์ ํ์ธํด๋ณด์ธ์' ๊ฐ์ ๊ณ ์ ๋ ๋ฉ์์ง๊ฐ ์๋๋ผ, ๊ณก์ ๋ด์ฉ์ ๋ฐ๋ผ ๋งค๋ฒ ๋ค๋ฅธ ๋ฉ์์ง๋ฅผ ์์ฑํ๊ณ ์ ํ์์ต๋๋ค. ์ฆ, ์๋ฒ์์ ๊ตฌ๋๋๋ LLM์ ์ด์ฉํ์ฌ์ผ ํ๊ธฐ ๋๋ฌธ์ ์๋ฒ๋ก์ ์์ฒญ์ ๋ณด๋ด ๋ฉ์์ง๋ฅผ ๋ฐ์์์ผ ํ๋ ๊ฒ์ด์์ฃ .
์ฑ์ ์ฌ๋ฐฉ๋ฌธ์จ์ ๋์ผ ์ ์๋ ์ข์ ์ ๋ต์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ํ์ง๋ง ์ด ๊ธฐ๋ฅ ์ญ์ ๊ตฌํ์ด ์ฝ์ง๋ง์ ์์์ต๋๋ค. ์ฑ์ด ๊บผ์ ธ ์์ ๋์๋ ๋ฏธ๋์ด ์ธ์ ์ ๊ณ์ ๊ฐ์งํ๊ธฐ ์ํด์๋ ๋ฐฑ๊ทธ๋ผ์ด๋์ ์์ญ์ ๋ง์ ธ์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์๋๋ก์ด๋๋ ๋ฐฐํฐ๋ฆฌ ์ ์ฝ์ ์ํด ํ๋ฉด์ด ๊บผ์ง๊ฑฐ๋ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋์ด๊ฐ React Native ์ฑ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๊ฐ์ฐจ ์์ด ๊บผ๋ฒ๋ฆฝ๋๋ค. ์ฑ์ด ๊บผ์ง๋ฉด ์๋ฌด๋ฆฌ ๋ค์ดํฐ๋ธ์์ ์์ ๋ณํ๋ฅผ ๊ฐ์งํด๋, ์ ์ ๊ฐ์ฌ๋ฅผ ๊ฐ์ ธ์ค๊ณ ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ์ค๊ณ ์๋ฆผ์ ๋์ธ JS๊ฐ ์๋ํ์ง ์๋ ๊ฒ์ด์ฃ .
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ค ๊ฒ์ด ๋ฐ๋ก Headless JS์ ๋๋ค. Headless JS๋ ์ฑ์ UI๊ฐ ์์ด๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ์ ์ ๋๋ค. ์ ๊ฐ ์ด๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํํ ๊ธฐ๋ฅ์ ์๋ ์๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋ค์ดํฐ๋ธ ๊ฐ์ง: ๋ค์ดํฐ๋ธ ๋จ์ `MediaNotificationListenerService`๊ฐ ์์ ์ฑ์ ์๋ฆผ ๋ณํ๋ฅผ ๊ฐ์งํฉ๋๋ค.
- JS ๊นจ์ฐ๊ธฐ: ๊ณก ์ ๋ณด๊ฐ ๋ฐ๋๋ฉด ๋ค์ดํฐ๋ธ ์์ง์ `MediaHeadlessTaskService`๋ฅผ ์คํํฉ๋๋ค. ์ด๋ ์๋น์ค๋ ์ ์๊ณ ์๋ JS๋ฅผ ์ ์ ๊นจ์๋๋ค.
- ์ํ: ์ ์์ ๊นฌ JS๋ ์ ๋ฌ๋ฐ์ ๊ณก ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ๋ฐฑ์๋์ ๋ฉ์์ง๋ฅผ ์์ฒญํ๊ณ ๊ทธ ๋ฉ์์ง๋ก ์๋ฆผ์ ๋์๋๋ค.
- ๋ค์ ์ทจ์นจ: ์์ ์ด ๋๋๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋ค์ ์ ๋ญ๋๋ค.
โก๏ธ ์ ๋ฆฌ ๋ฐ ๋ค์ ๋จ๊ณ

์ด๋ก์จ Lymo๋ ์์ ์ ๊ฐ์งํ๋ ๊ธฐ๋ฅ์ ๊ฐ๊ฒ ๋์์ต๋๋ค. ๋จ์ํ ์์ UI๋ฅผ ๋์ด, ์๋๋ก์ด๋ ์์คํ ์ ๊น์ ๊ณณ์ ์ ๊ทผํ๋ ๋ค์ดํฐ๋ธ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ฒ์ ๊ฒฐ์ฝ ์ฝ์ง ์์์ต๋๋ค. ํ์ง๋ง ๊ทธ๋งํผ ๊ฐ๋ฐ์๋ก์ ์์คํ ๊ฒฝํ์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด์ ์ฃผ์ ๊ธฐ๋ฅ์ ๋ชจ๋ ๊ตฌํํ์ผ๋, ๋ค์ ์ผ์ง์์๋ ์ด ๊ธฐ๋ฅ ์์ ๊ฐ์ฑ์ ์ ํ๋ ๊ณผ์ ์ ๋ค๋ค๋ณด๋ ค ํฉ๋๋ค. ์จ๋ฒ ์ํธ์ ์์์ ์ถ์ถํด ํ๋ฉด ์ ์ฒด์ ๋ถ์๊ธฐ๋ฅผ ๋ฐ๊พธ๋ ์๊ฐ์ ํจ๊ณผ๋ถํฐ, ๊ฐ์ฌ ๋๊ธฐํ ๋ก์ง๊น์ง... Lymo ๊ฐ๋ฐ๊ธฐ์ ๋ง์ง๋ง์ ์ฅ์ํ ํ๋ก ํธ์๋ UI/UX ์ต์ ํ ์ด์ผ๊ธฐ๋ก ๋์์ค๊ฒ ์ต๋๋ค.
์ค๋๋ ๊ธด ๊ธ ๋๊น์ง ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
'๐ป ๊ฐ๋ฐ ์ผ์ง > Lymo' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Lymo ๊ฐ๋ฐ์ผ์ง #3] AI ํ๊ฐ ๋๋ ค ์ก๊ธฐ (2) | 2025.12.26 |
|---|---|
| [Lymo ๊ฐ๋ฐ์ผ์ง #2] Genkit + RTDB๋ก ํด์ ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐํ๊ธฐ (2) | 2025.11.10 |
| [Lymo ๊ฐ๋ฐ์ผ์ง #1] AI๋ก ์์ ํด์ํด์ฃผ๋ ์ฑ ๋ง๋ค๊ธฐ (2) | 2025.09.23 |