๊ธฐ์ ์ฉ JVM ๋ฐ Android ํฌํธํด๋ฆฌ์ค์์ Kotlin ๋์ ์ ์ผ๊ด๋ ํจํด์ ๋ฐ๋ฅด์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ฃผ๋ก Android ๊ฐ๋ฐ ํ๋ก์ ํธ, Java ์๋น์ค์ ์ ํ์ ์ฌ์์ฑ, ๋๋ ์ํคํ ์ฒ ํตํฉ๋ณด๋ค๋ ๊ฐ๋ฐ ์๋๋ฅผ ์ฐ์ ์ํ๋ ํ๋ซํผ ํ์คํ ๋ ธ๋ ฅ ๋ฑ์ ํตํด ๋์ ๋ฉ๋๋ค. ์ ์ ๋ถ์์ ์ด๋ฌํ ํ๊ฒฝ์์ ์ ์ด๋ ฅ์ ๋์ฐพ๊ธฐ ์ํ ์๋๋ก ๋ฑ์ฅํ์ง๋ง, ํํธํ๋ ๋น๋ ๊ทธ๋ํ, ํผํฉ๋ ์ธ์ด ์คํ ํ๊ฒฝ, ๊ทธ๋ฆฌ๊ณ ํ ๊ฐ์ ๋๊ตฌ ํ์ฉ๋ ์ฐจ์ด๋ก ์ธํด ๊ทธ ํจ๊ณผ๊ฐ ์ ํ์ ์ ๋๋ค.
๋๊ท๋ชจ ์กฐ์ง์์ Kotlin ์ฝ๋๋ ๋จ๋ ์ผ๋ก ์คํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋๋ญ ๋๋ค. Java ์ฝ๋์ ํจ๊ป ์ปดํ์ผ๋๊ณ , ์์กด์ฑ ์ฃผ์ ํ๋ ์์ํฌ๋ฅผ ํตํด ํตํฉ๋๋ฉฐ, ๋ค์ํ ๋ฐํ์ ํ๊ฒฝ์ ๋ฐฐํฌ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ ์ ๋ถ์์ Kotlin ์์ค ํ์ผ ๋ด์์๋ง ์๋ํ๋ ๊ฒ์ด ์๋๋ผ ์ปดํ์ผ ๊ฒฝ๊ณ๋ฅผ ๋์ด ์๋ํด์ผ ํฉ๋๋ค. ์ฌ๋ณผ์ด JVM ๋ฐ Android ๋น๋ ํ์ดํ๋ผ์ธ์ ํตํด ์ด๋ป๊ฒ ์ ํ๋๋์ง ๋ช ํํ๊ฒ ํ์ ํ์ง ๋ชปํ๋ฉด ๋ถ์ ๊ฒฐ๊ณผ๊ฐ ์ค์ง์ ์ธ ์ ํธ๊ฐ ์๋ ๋จ์ํ ์ค๋ช ์๋ฃ๋ก ์ ๋ฝํ ์ํ์ด ์์ต๋๋ค.
Kotlin์ ์ํฅ ๋ถ์
Smart TS XL์ ๊ธฐ์ ์ด ์ ์ฅ์ ๊ฒฝ๊ณ๋ฅผ ๋์ด Kotlin ๋ณ๊ฒฝ ์์ ์ฑ์ ๋ํด ์ถ๋ก ํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
์ง๊ธ ํ์๊ธฐ์ ํ๋ํ ํ๋ก๊ทธ๋จ์ Kotlin ๋ถ์์ ์ญํ ์ ๋์ฑ ๋ณต์กํ๊ฒ ๋ง๋ญ๋๋ค. Kotlin์ ๋์ ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ ๊ฑฐ์ Java ์๋น์ค, ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์ธ๋ถ ํตํฉ ๊ณ์ธต์ ํ๊ธ ํจ๊ณผ๋ฅผ ๋ฏธ์น๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ํ๊ธ ํจ๊ณผ๋ฅผ ์ดํดํ๋ ค๋ฉด ๊ท์น ์ํ ์ด์์ ๊ฒ์ด ํ์ํฉ๋๋ค. ์ฝ๋ ๊ตฌ์กฐ๊ฐ ์คํ ๋์๊ณผ ์ด๋ป๊ฒ ์ผ์นํ๋์ง์ ๋ํ ์ถ์ ๊ฐ๋ฅํ ํต์ฐฐ๋ ฅ์ด ํ์ํ๋ฉฐ, ์ด๋ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๋ฐ์ ํ๊ฒ ๊ด๋ จ๋์ด ์์ต๋๋ค. ์ฝ๋ ์ถ์ ์ฑ ๊ทผ๊ฐ์ด ๋๋ ํ๋ํ ์ญ๋์ผ๋ก์.
Kotlin ์ฌ์ฉ์ด ํ๋๋จ์ ๋ฐ๋ผ ์ ์ ๋ถ์์ ๋๊ท๋ชจ ํ๊ฒฝ์์ ๊ฑฐ๋ฒ๋์ค, ๋ณด์ ์ํ ๋ฐ ๋ณ๊ฒฝ ์์ ์ฑ์ ์ง์ํ๋ ๋ฐ ์ ์ ๋ ์ค์ํ ์ญํ ์ ํ ๊ฒ์ผ๋ก ๊ธฐ๋๋ฉ๋๋ค. ์ด๋ฌํ ๊ธฐ๋๋ ๋ถ์์ ๋ ๋ฆฝ์ ์ธ ๊ฐ๋ฐ์ ๋๊ตฌ๋ก ์ทจ๊ธํ๋ ๊ฒ๋ณด๋ค๋ ๋ ๊ด๋ฒ์ํ ์์คํ ์ธํ ๋ฆฌ์ ์ค ๊ณ์ธต์ ์ผ๋ถ๋ก ์ธ์ํด์ผ ํ๋ค๋ ํ๊ณ๋ฅผ ๋๋ฌ๋ ๋๋ค. ๋ฆฐํ , ์๋ฏธ๋ก ์ ์ถ๋ก ๋ฐ ์ ์ ๋ถ์์ ๊ตฌ๋ถํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ ์ ์์ค Kotlin์ ์ฌ์ฉํ์ฌ ๋ณต์กํ JVM ๋ฐ Android ์ํ๊ณ์ ์์ ์ ์ผ๋ก ๊ณต์กดํด์ผ ํ๋ ๊ธฐ์ ์๊ฒ๋ ์ด๋ฌํ ์ดํด๊ฐ ํ์์ ์ ๋๋ค.
JVM ๋ฐ Android ํฌํธํด๋ฆฌ์ค์์ Kotlin ์ ์ ๋ถ์์ ์ ์ด ํ๋ฉด์ผ๋ก ํ์ฉํ๊ธฐ
Kotlin ํ๊ฒฝ์์ ์ ์ ๋ถ์์ ๊ฐ๋ฐ์์ ํธ์๋ฅผ ์ํ ๋๊ตฌ๊ฐ ์๋ ์ํคํ ์ฒ ๋ฉ์ปค๋์ฆ์ผ๋ก ๊ฐ์ฃผ๋ ๋ ๋น๋ก์ ์ ์ด ํ๋ฉด์ผ๋ก์์ ์ญํ ์ ์ํํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ๊ธ JVM ๋ฐ Android ํฌํธํด๋ฆฌ์ค์์ Kotlin์ ์ด๋ฏธ ๊ธฐ์กด์ ๊ณ์ธต ๊ตฌ์กฐ, ๋ฐํ์ ๊ฒฐํฉ๋, ์ด์์์ ์ ์ฝ ์กฐ๊ฑด์ ์๊ณ ์๋ ์์คํ ์ ๋์ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ถ์์ ๊ฐ๋ณ ์ ์ฅ์๋ ํ ์ฐจ์์ด ์๋, ์กฐ์ง์ ๋ฐ ๊ธฐ์ ์ ๊ฒฝ๊ณ๋ฅผ ๋์ด ์๋ํด์ผ ํฉ๋๋ค.
์ฃผ๋ ๊ฐ๋ฑ์ ์ฝํ๋ฆฐ์ ํํ๋ ฅ์ด ํ๋ถํ ์ถ์ํ ๋ชจ๋ธ๊ณผ ์ํฐํ๋ผ์ด์ฆ ์์คํ ์ ์๊ตฌ๋๋ ์ด์์์ ๊ธฐ๋์น ์ฌ์ด์ ๋ถ์ผ์น์์ ๋น๋กฏ๋ฉ๋๋ค. ์ฝํ๋ฆฐ์ ํ๋ฉด์ ์ธ ๊ฒ์ฌ๋ก๋ ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์ด ๋ณต์กํ ๋ก์ง, ์๋ฌต์ ์ธ ๊ณ์ฝ, ๊ทธ๋ฆฌ๊ณ ํ๋ ์์ํฌ ๊ธฐ๋ฐ์ ์คํ ๊ฒฝ๋ก๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ ์ ๋ถ์์ ์ด๋ฌํ ์์คํ ์ ๊ด์ฐฐ ๊ฐ๋ฅ์ฑ์ ํ๋ณต์์ผ ์ค ๊ฒ์ผ๋ก ๊ธฐ๋๋์ง๋ง, ๊ทธ ์ฑ๊ณต ์ฌ๋ถ๋ ์คํ ํ์ค, ์์กด์ฑ ๊ตฌ์กฐ, ๊ทธ๋ฆฌ๊ณ ๋ฐฐํฌ ๋ฐฉ์๊ณผ์ ์กฐํ์ ๋ฌ๋ ค ์์ต๋๋ค.
๋ค๊ตญ์ด ์คํ ๊ทธ๋ํ ๋ด ์ ์ ๋ถ์ ์์น ์ง์
์ํฐํ๋ผ์ด์ฆ JVM ํ๊ฒฝ์์ Kotlin ์ฝ๋๋ ์คํ ๊ฒฝ๋ก๋ฅผ ๋จ๋ ์ผ๋ก ์์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ญ ๋๋ค. ์ข ์ข Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์คํ์ ์์ํ๊ฑฐ๋, ์์ฑ๋ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, Kotlin์ด ์๋ ์๋น์ค์์ ํธ์ถ๋๋ API๋ฅผ ๋ ธ์ถํ๊ธฐ๋ ํฉ๋๋ค. Kotlin ์์ค ์ฝ๋ ๋ด์์๋ง ์๋ํ๋ ์ ์ ๋ถ์์ผ๋ก๋ ์ด๋ฌํ ์ํธ ์์ฉ์ ์ ํํ๊ฒ ๋ชจ๋ธ๋งํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ถ์์ Kotlin ์ํฐํฉํธ๋ฅผ ์ฌ๋ฌ ์ธ์ด, ๋น๋ ์ ํ ๋ฐ ๋ฐํ์ ์ปจํ ์ด๋์ ๊ฑธ์ณ ์๋ ๋ ๋์ ์คํ ๊ทธ๋ํ ๋ด์ ์์น์์ผ์ผ ํฉ๋๋ค.
Kotlin ์๋น์ค๊ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ซํผ ๊ตฌ์ฑ ์์์ ์ฐธ์ฌํ ๋ ์ด๋ฌํ ์์น ์ง์ ๋ฌธ์ ๊ฐ ๋ถ๋ช ํด์ง๋๋ค. ์๋ฅผ ๋ค์ด Kotlin ๋ฐ์ดํฐ ํด๋์ค์ ๋ณ๊ฒฝ ์ฌํญ์ ์ง๋ ฌํ ํ๋ ์์ํฌ๋ฅผ ํตํด Java ๋๋ JVM ์ด์ธ์ ์ธ์ด๋ก ์์ฑ๋ ํ์ ์๋น์์๊ฒ ์ ํ๋ ์ ์์ต๋๋ค. ์ธ์ด ๊ฐ ๊ทธ๋ํ ์ธ์์ด ์์ผ๋ฉด ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ ๋ก์ปฌ์๋ง ๊ตญํ๋์ด ์์คํ ์ ์ํฅ์ ์ ๋ฌํ์ง ๋ชปํฉ๋๋ค. ์ด๋ฌํ ํ๊ณ๋ ์์ ๋ ผ์๋ ๋ ๊ด๋ฒ์ํ ๋ฌธ์ ์ ๊ด๋ จ์ด ์์ต๋๋ค. ์์กด์ฑ ๊ทธ๋ํ ์ํ ๊ฐ์๋ถ์์ ํ ๊ฐ์์ฑ์ผ๋ก ์ธํด ๋ณํ์ ๊ฒฐ๊ณผ๊ฐ ๊ณผ์ํ๊ฐ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๋ฌํ ๋งฅ๋ฝ์์ ํจ๊ณผ์ ์ธ ์ ์ ๋ถ์์ Kotlin์ ์ด๊ธฐ์ข ์คํ ๊ทธ๋ํ ๋ด์ ํ๋์ ๋ ธ๋ ์ ํ์ผ๋ก ์ทจ๊ธํฉ๋๋ค. Kotlin ์ฌ๋ณผ๊ณผ ๋ฐ์ดํธ์ฝ๋ ์ํฐํฉํธ๋ฅผ ์ฐ๊ด์ํค๊ณ , ์ธ์ด ๊ฒฝ๊ณ๋ฅผ ๋๋๋๋ ํธ์ถ ์ฒด์ธ์ ์ถ์ ํ๋ฉฐ, ๋น๋ ๋ฐ ๋ฐฐํฌ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ฉด์ ์์กด์ฑ ๋ฐฉํฅ์ฑ์ ์ ์งํฉ๋๋ค. ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ํตํด ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ์ํคํ ์ฒ ์ค๊ณ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ณ๋์ฑ์ด ํฐ Kotlin ๋ชจ๋์ ๊ฒฉ๋ฆฌํ๊ฑฐ๋ ๊ณต์ ๊ณ์ฝ์ ์ฌ๊ตฌ์ฑํ์ฌ ์ํฅ ๋ฒ์๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
์ด๋ฌํ ํฌ์ง์ ๋์ด ๋ถ์กฑํ๋ฉด ์ข ์ข ์๋ชป๋ ํ์ ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ๋๊ตฌ๋ ์ํคํ ์ฒ ๊ฒฐํฉ๋๊ฐ ๊ณ์ ์ฆ๊ฐํ๋ ๋์์๋ ๋ฌธ์ ๋ฐ์ ๊ฑด์๊ฐ ๊ฐ์ํ๋ค๊ณ ๋ณด๊ณ ํ ์ ์์ต๋๋ค. ์ ์ ๋ถ์์ ์ฝํ๋ฆฐ ์ฝ๋๊ฐ ์์คํ ์ ์ฒด ์คํ์ ์ด๋ป๊ฒ ์ฐธ์ฌํ๋์ง, ๋จ์ํ ๋ก์ปฌ ๊ท์น์ ์ค์ํ๋์ง ์ฌ๋ถ๋ง์ ๋ณด์ฌ์ค ๋ ๋น๋ก์ ์ ์ด ํ๋ฉด์ผ๋ก์์ ์ญํ ์ ์ํํฉ๋๋ค.
Kotlin ๋ถ์ ์ํฌํ๋ก์์ ์ ์ด์ ํผ๋๋ฐฑ์ ๊ด๊ณ
Kotlin ๋ถ์ ํ๋ก๊ทธ๋จ์์ ๋ฐ๋ณต์ ์ผ๋ก ๋ฐ์ํ๋ ์คํจ ํจํด์ ํผ๋๋ฐฑ ๋ฉ์ปค๋์ฆ๊ณผ ์ ์ด ๋ฉ์ปค๋์ฆ์ ํผ๋ํ๋ ๊ฒ์ ๋๋ค. IDE ๊ฒ์ฌ, ๋ฆฐํฐ, ์ปค๋ฐ ์ ๊ฒ์ฌ๋ ๊ฐ๋ฐ์์๊ฒ ์ ์ํ ํผ๋๋ฐฑ์ ์ ๊ณตํ์ง๋ง, ๊ธฐ์ ํฌํธํด๋ฆฌ์ค ์ ์ฒด์ ๊ฑธ์ณ ๊ฐ์ ์ ์ธ ๊ฒฝ๊ณ๋ฅผ ์ค์ ํ์ง๋ ๋ชปํฉ๋๋ค. ์ ์ด ํ๋ฉด์ผ๋ก์์ ์ ์ ๋ถ์์ ๋ค๋ฅธ ์์ค์ ์ถ์ํ์ ๊ถํ์์ ์๋ํด์ผ ํฉ๋๋ค.
์ ์ด ์ค์ฌ ๋ถ์์ ์๊ฐ๊ณผ ํ ์ ๋ฐ์ ๊ฑธ์ณ ๋ถ๋ณ์ฑ์ ์ ์งํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค. ์ด๋ ๊ฐ๋ณ ๊ธฐ๋ฅ ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ๋์ด ์ง์๋๋ ํ์ฉ ๊ฐ๋ฅํ ์์กด์ฑ ๋ฐฉํฅ, ๋ณต์ก์ฑ ์๊ณ๊ฐ ๋ฐ ์ํคํ ์ฒ ์ ์ฝ ์กฐ๊ฑด์ ์ ์ํฉ๋๋ค. ์ฝํ๋ฆฐ ์์คํ ์์๋ ์ธ์ด ๊ธฐ๋ฅ์ผ๋ก ์ธํด ๋ณต์ก์ฑ ์ฆ๊ฐ๊ฐ ๊ฐ๋ ค์ง ์ ์์ผ๋ฏ๋ก ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ด ํนํ ์ค์ํฉ๋๋ค. ์ธ๋ผ์ธ ํจ์, ํ์ฅ ๋ฉ์๋ ๋ฐ DSL ์คํ์ผ ๊ตฌ๋ฌธ์ ๋์์ ๋จ์ํด ๋ณด์ด์ง๋ง ์ค์ ๋ก๋ ๋ณต์กํ ํํ๋ก ์์ถํ ์ ์์ต๋๋ค.
๋ถ์์ด ๊ฐ๋ฐ์ ํผ๋๋ฐฑ ๋ฃจํ์๋ง ๊ตญํ๋๋ฉด ์ด๋ฌํ ํจํด์ ์ฑ๋ฅ ์ ํ๋ ์ ์ง ๊ด๋ฆฌ ๋ณ๋ชฉ ํ์์ผ๋ก ๋๋ฌ๋ ๋๊น์ง ๋์ ๋์ง ์๊ฒ ์ถ์ ๋ฉ๋๋ค. ๋ฐ๋ฉด ์ ์ด ์ค์ฌ ๋ถ์์ ์๋น์ค ๊ฒฝ๊ณ ๋๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ณ์ฝ๊ณผ ๊ฐ์ ํฌํธํด๋ฆฌ์ค ์์ค์ ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ๋ผ Kotlin ์ฝ๋๋ฅผ ํ๊ฐํฉ๋๋ค. ์ด๋ฌํ ์ฐจ์ด์ ์ ๋ ๊ด๋ฒ์ํ ๋ ผ์๋ฅผ ๋ฐ์ํฉ๋๋ค. ์ ์ ๋ถ์ ํ๊ณํผ๋๋ฐฑ ๋๊ตฌ๋ง์ผ๋ก๋ ์๋กญ๊ฒ ๋ํ๋๋ ๊ตฌ์กฐ์ ์ํ์ ๊ฐ์งํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ์ ๋๋ค.
์ด๋ฌํ ์ ์ด ๊ณ์ธต์ ๊ตฌ์ถํ๋ ค๋ฉด ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋ณ ๊ฐ๋ฐ์ ํ๊ฒฝ์์ ๋ถ๋ฆฌํด์ผ ํฉ๋๋ค. ๋ถ์ ๊ฒฐ๊ณผ๋ CI ํ๊ฒฝ์์ ์ฌํ ๊ฐ๋ฅํด์ผ ํ๊ณ , ์ํคํ ์ฒ ๊ท์น๊ณผ์ ์ฐ๊ด์ฑ์ ์ถ์ ํ ์ ์์ด์ผ ํ๋ฉฐ, ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๊ฐ์ฌ๊ฐ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ๊ด์ ์์ ์ ์ ๋ถ์์ ์ฆ๊ฐ์ ์ธ ์์ ๋ณด๋ค๋ Kotlin ๋์ ์ด ํ๋๋จ์ ๋ฐ๋ผ ์ฅ๊ธฐ์ ์ธ ์์คํ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ฐ ๋ ์ค์ ์ ๋๊ฒ ๋ฉ๋๋ค.
Kotlin ๋ถ์ ๊ฒฐ๊ณผ๊ฐ ํฌํธํด๋ฆฌ์ค ์ ๋ฐ์ ๋ฏธ์น๋ ์ํฅ
์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ ํฌํธํด๋ฆฌ์ค ์์ค์์ ํด์๋ ์ ์์ ๋ ๋น๋ก์ ๊ธฐ์ ๊ฐ์น๋ฅผ ์ง๋๋๋ค. ์ฝํ๋ฆฐ ๋์ ์ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๋ถํฐ ๋ฐฑ์๋ ์๋น์ค, ๊ณต์ ์ธํ๋ผ ๊ตฌ์ฑ ์์์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ์์ญ์ ๊ฑธ์ณ ์ด๋ฃจ์ด์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ์์ญ ์ ๋ฐ์ ๊ฑธ์ณ ์ง๊ณํ๊ฑฐ๋ ๋น๊ตํ ์ ์๋ ๋ถ์ ๊ฒฐ๊ณผ๋ ์ ๋ต์ ์ด๋ผ๊ธฐ๋ณด๋ค๋ ์ ์ ์ ์ธ ์์ค์ ๊ทธ์นฉ๋๋ค.
ํฌํธํด๋ฆฌ์ค ์ ๋ฐ์ ๊ฑธ์น ํด์์ ์ํด์๋ ๋ค์ํ ์คํ ์ปจํ ์คํธ์์ ๋ฐ๊ฒฌ๋ ๊ฒฐ๊ณผ๋ฅผ ํ์คํํด์ผ ํฉ๋๋ค. ์๋๋ก์ด๋ ๋ชจ๋์์ ๋ฐ๊ฒฌ๋ ๋ฌธ์ ๋ ๋ฐฑ์๋ ์๋น์ค์์ ๋์ผํ ํจํด์ด ๋ํ๋ด๋ ์ด์์์ ์ํฅ๊ณผ ๋ค๋ฅผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ์ ๋ถ์์ ์ฝํ๋ฆฐ์์ ๋ฐ๊ฒฌ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐํฌ ํ๊ฒฝ์ ๋ง์ถฐ ๋งฅ๋ฝํํ๊ณ , ์๋ช ์ฃผ๊ธฐ ์ ์ฝ ์กฐ๊ฑด, ๋์์ฑ ๋ชจ๋ธ ๋ฐ ๋ฐํ์ ํ๋กํ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
์ด๋ฌํ ๋งฅ๋ฝํ๋ ํ๋ํ ๊ณํ ์๋ฆฝ์๋ ๋์์ด ๋ฉ๋๋ค. Kotlin์ ๊ธฐ์กด Java ์์คํ ์ด๋ ๋น JVM ์์คํ ์ด ์๋ก์ด ๊ตฌ์ฑ ์์์ ๊ณต์กดํ๋ ์ ์ง์ ํ๋ํ ๋ ธ๋ ฅ์ ์ผํ์ผ๋ก ์์ฃผ ๋์ ๋ฉ๋๋ค. ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ํตํด ์ด๋ค Kotlin ๋ชจ๋์ด ์์คํ ๋์์ ์์ ํํ๋์ง, ์ด๋ค ๋ชจ๋์ด ์๋ก์ด ๊ฒฐํฉ ์ํ์ ์ด๋ํ๋์ง ํ์ ํ ์ ์์ต๋๋ค. ์ด๋ ๋ค์๊ณผ ๊ฐ์ ํต์ฐฐ๋ ฅ๊ณผ๋ ์ผ๋งฅ์ํตํฉ๋๋ค. ์ ์ง์ ํ๋ํ ์ ๋ต๊ฐ์์ฑ์ด ์์ ๊ฒฐ์ ์ ์ํฅ์ ๋ฏธ์น๋ ๊ฒฝ์ฐ์ ๋๋ค.
ํฌํธํด๋ฆฌ์ค ๊ด์ ์ด ์๋ค๋ฉด ์ ์ ๋ถ์์ ๋จํธ์ ์ธ ๋ณด๊ณ ์๋ค์ ๋ชจ์์ผ๋ก ์ ๋ฝํ ๋ฟ์ ๋๋ค. ํ์ง๋ง ์ด ๊ด์ ์ ํ์ฉํ๋ฉด Kotlin ๋ถ์์ ๊ฑฐ๋ฒ๋์ค, ์ฐ์ ์์ ์ค์ , ์ํคํ ์ฒ ์งํ์ ์ ์ฉํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ ์ด ์์ญ์ ๋ถ์ ๊ฒฐ๊ณผ์ ์์ด ์๋๋ผ, ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์์คํ ์์ค์ ์์ฌ๊ฒฐ์ ์ ํ์ฑํ๋ ๋ฅ๋ ฅ์์ ๋น๋กฏ๋ฉ๋๋ค.
๊ธฐ์ ์ฉ JVM ๋ฐ ์๋๋ก์ด๋ ํ๊ฒฝ์์ ์ฌ์ฉ๋๋ Kotlin ์ ์ ๋ถ์ ๋๊ตฌ
๊ธฐ์ ํ๊ฒฝ์์ Kotlin ์ ์ ๋ถ์ ๋๊ตฌ์ ์ญํ ์ ์ข ์ข ์คํด๋ฉ๋๋ค. ๋๊ตฌ๋ค์ ์๋ก ๋์ฒด ๊ฐ๋ฅํ ์ค์บ๋๋ก ํ๊ฐํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ง๋ง, ์ค์ ๋ก๋ ๊ฐ ๋๊ตฌ๊ฐ ์๋ก ๋ค๋ฅธ ์์ค์ ์๋ฏธ๋ก ์ ์ดํด์ ์กฐ์ง์ ๋ฒ์๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. JVM ๋ฐ Android ํฌํธํด๋ฆฌ์ค์์ Kotlin ๋ถ์ ๋๊ตฌ๋ ํ์งํ๋ ๋ฌธ์ ๋ฟ๋ง ์๋๋ผ ๋ถ์ ๋ชจ๋ธ์ด ์ปดํ์ผ ๊ฒฝ๊ณ, ๋ฐฐํฌ ํ ํด๋ก์ง, ๊ทธ๋ฆฌ๊ณ ํ ๊ฐ ๊ฑฐ๋ฒ๋์ค ์๊ตฌ ์ฌํญ๊ณผ ์ผ๋ง๋ ์ ๋ถํฉํ๋์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๊ฐํด์ผ ํฉ๋๋ค.
๊ธฐ์ ๋ค์ ๋จ์ผ ๋ถ์ ๋๊ตฌ๋ก ํ์คํํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ญ ๋๋ค. ๋์ , ์ฝํ๋ฆฐ ๊ธฐ๋ฐ ๋ถ์ ๋๊ตฌ์ ํ๋ซํผ ์ ๋ฐ์ ๊ฑฐ๋ฒ๋์ค ์์คํ , ๋ณด์ ์ค์บ๋๊ฐ ๊ณต์กดํ๋ ๊ณ์ธตํ ํด์ฒด์ธ์ ๊ตฌ์ถํฉ๋๋ค. ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ํจ๊ณผ๋ ๊ฐ ๋๊ตฌ ๋ฒ์ฃผ์ ๋ถ์ ํ๊ณ์ ๋ถ์ ๊ฒฐ๊ณผ๊ฐ ์์ฌ ๊ฒฐ์ ๊ณผ์ ์ ์ด๋ป๊ฒ ๋ฐ์๋๋์ง๋ฅผ ์ดํดํ๋ ๋ฐ ๋ฌ๋ ค ์์ต๋๋ค. ์ด๋ฌํ ๊ตฌ๋ถ์ ์์ค ์ฝ๋ ๋ถ์๊ณผ ๊ด๋ จ๋ ๋ ๊ด๋ฒ์ํ ๋ ผ์, ์ฆ ๋ก์ปฌ ๊ฒ์ฌ์ ์์คํ ์์ค ์ถ๋ก ๊ฐ์ ๊ตฌ์กฐ์ ์ฐจ์ด๋ฅผ ๋ฐ์ํฉ๋๋ค.
Smart TS XL์ ๋ค๊ตญ์ด ์ ์ ๋ฐ ์ํฅ ๋ถ์ ๋ ์ด์ด์ ๋๋ค.
Smart TS XL์ Kotlin์ ๋ ๋ฆฝ์ ์ธ ์ธ์ด ์์ญ์ผ๋ก ์ทจ๊ธํ์ง ์๋๋ค๋ ์ ์์ Kotlin ๋ค์ดํฐ๋ธ ๋ถ์๊ธฐ์๋ ์ฐจ๋ณํ๋ฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ JVM ๋ฐ Android ํ๊ฒฝ์์ Kotlin์ ์๋น์ค, ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋ ๊ฑฐ์ ๊ตฌ์ฑ ์์๋ฅผ ์ฐ๊ฒฐํ๋ ๊ณ์ธต ์ญํ ์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. Smart TS XL์ ์ด๋ฌํ ํ์ค์ ๋ฐ์ํ์ฌ Java, ๋น๋ ์ค๋ช ์ ๋ฐ ์ธ๋ถ ํตํฉ ์ง์ ์ ํฌํจํ๋ ๋ค๊ตญ์ด ์ ์ ๋ถ์ ๊ทธ๋ํ ๋ด์์ Kotlin์ ๋ชจ๋ธ๋งํฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ Kotlin ์ฝ๋๊ฐ ๋จ์ผ ์ ์ฅ์๋ฅผ ๋์ด ๋น์ฆ๋์ค ํต์ฌ ์คํ ๊ฒฝ๋ก์ ์ฐธ์ฌํ ๋ ์ค์ํด์ง๋๋ค. ์๋ฅผ ๋ค์ด, Kotlin ์๋น์ค๋ ๊ธฐ์กด Java ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๋ API๋ฅผ ๋ ธ์ถํ๊ฑฐ๋ ํ์ ์์คํ ์ ๋ฐฐ์น ํ๋ก์ธ์ค๋ฅผ ํธ๋ฆฌ๊ฑฐํ ์ ์์ต๋๋ค. ๊ธฐ์กด Kotlin ๋๊ตฌ๋ ๋ก์ปฌ ๋ณต์ก์ฑ์ด๋ ์คํ์ผ ๋ฌธ์ ๋ฅผ ํ์ํ ์ ์์ง๋ง, Kotlin ๋ณ๊ฒฝ ์ฌํญ์ด ์์คํ ๊ฒฝ๊ณ๋ฅผ ๋์ด ์คํ ํ๋ฆ์ ์ด๋ป๊ฒ ๋ฐ๊พธ๋์ง ์ฌ๊ตฌ์ฑํ์ง๋ ๋ชปํฉ๋๋ค. Smart TS XL์ ์ด์ ๋ฌ๋ฆฌ ์ด๊ธฐ์ข ์ฝ๋๋ฒ ์ด์ค ์ ๋ฐ์ ๊ฑธ์ณ ์ข ์์ฑ ํ์, ํธ์ถ ์ฒด์ธ ์ฌ๊ตฌ์ฑ ๋ฐ ์ํฅ ์์ญ ์๋ณ์ ์ค์ ์ ๋ก๋๋ค.
์๋๋ก์ด๋ ํฌํธํด๋ฆฌ์ค์์๋ ์ด๋ฌํ ์ธ์ด ๊ฐ ๊ด์ ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. Kotlin UI ๋ ์ด์ด๋ ์ข ์ข ๊ณต์ SDK ๊ตฌ์ฑ ์์, ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋ฐฑ์๋ ์๋น์ค์ ์ํธ ์์ฉํฉ๋๋ค. ์๋๋ก์ด๋ ๋ชจ๋์๋ง ๊ตญํ๋ ์ ์ ๋ถ์์ผ๋ก๋ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ ๋์ ์ํ๊ณ์ ์ด๋ป๊ฒ ์ ํ๋๋์ง ์์ ํ ์ค๋ช ํ ์ ์์ต๋๋ค. Smart TS XL์ Kotlin ์ํฐํฉํธ๋ฅผ JVM ์๋น์ค ๋ฐ ๊ณต์ ๊ตฌ์ฑ ์์์ ์ฐ๊ด์์ผ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ๋ฆด๋ฆฌ์ค ์์ ๋ฐ ์ํ ๊ด๋ฆฌ ์ ๋ต์ ์๋ฆฝํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ๊ฐ์น๋ ์ํฅ ๋ถ์ ์ํํธ์จ์ด ํ ์คํธ์ ๊ด๋ จ๋ ๊ธฐ์ ์ ์๊ตฌ ์ฌํญ๊ณผ ์ผ๋งฅ์ํตํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๊ฐ๋ณ์ ์ธ ๋ฌธ์ ์ ์ ๋์ดํ๋ ๊ฒ๋ณด๋ค ๋ฌด์์ด ์ํฅ์ ๋ฐ๋์ง ์ดํดํ๋ ๊ฒ์ด ํจ์ฌ ์ค์ํฉ๋๋ค. Smart TS XL์ Kotlin ๊ธฐ๋ฐ ๋๊ตฌ๋ฅผ ๋์ฒดํ๋ ๊ฒ์ด ์๋๋ผ, ์์คํ ์ ๋ฐ์ ์คํ ๋ชจ๋ธ ๋ด์์ ํด๋น ๋๊ตฌ๋ค์ ๊ฒฐ๊ณผ๋ฌผ์ ๋งฅ๋ฝํํ๋ ํตํฉ ๊ณ์ธต ์ญํ ์ ํฉ๋๋ค. ๋ฐ๋ผ์ Kotlin ๋์ ์ด ํ๋ํ ๋ฐ ๊ฑฐ๋ฒ๋์ค ๊ณํ๊ณผ ๊ต์ฐจํ๋ ํฌํธํด๋ฆฌ์ค์ ์ ํฉํฉ๋๋ค.
Kotlin ๊ธฐ๋ฐ ๊ตฌ์กฐ ๋ฐ ๋ณต์ก์ฑ ๋ถ์์ ์ํ Detekt
Detekt๋ ๊ตฌ์กฐ์ ํ์ง๊ณผ ์ธ์ด ํน์ ์ ํจํด์ ์ด์ ์ ๋ง์ถ ๊ฐ์ฅ ์ค๋๋๊ณ ๊ถ์ ์๋ Kotlin ๊ธฐ๋ฐ ์ ์ ๋ถ์ ๋๊ตฌ์ ๋๋ค. Kotlin ๊ตฌ๋ฌธ๊ณผ ๊ด์ฉ๊ตฌ์ ๋ํ ๊น์ ์ดํด๋ฅผ ๋ฐํ์ผ๋ก ์ผ๋ฐ์ ์ธ JVM ๋ถ์๊ธฐ๊ฐ ๋์น๊ธฐ ์ฌ์ด ๋ฌธ์ ๋ค์ ํ์งํ๋ ๊ฒ์ด Detekt์ ๊ฐ์ ์ ๋๋ค. ์ด๋ฌํ ๋ฌธ์ ์๋ ํจ์ํ ๊ตฌ๋ฌธ์ผ๋ก ์ธํ ๊ณผ๋ํ ์ค์ฒฉ, ์ธ๋ผ์ธ ํจ์์ ๊ฐ์ ์ธ์ด ๊ธฐ๋ฅ์ ์ค์ฉ, ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๊ฐ๋ ์ฑ์ ์ ํดํ๋ ํจํด ๋ฑ์ด ํฌํจ๋ฉ๋๋ค.
๊ธฐ์ ํ๊ฒฝ์์ Detekt๋ ์ผ๋ฐ์ ์ผ๋ก Gradle ๋น๋ ๋ฐ CI ํ์ดํ๋ผ์ธ์ ํตํฉ๋์ด ํ ๊ฐ ์ผ๊ด๋ ๊ท์น ์ ์ฉ์ ๋ณด์ฅํฉ๋๋ค. ๊ท์น ๊ธฐ๋ฐ ๋ชจ๋ธ์ ์ฌ์ฉ์ ์ ์๋ฅผ ์ง์ํ๋ฏ๋ก ์กฐ์ง์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ถ ์ฝ๋ฉ ํ์ค ๋ฐ ์ํคํ ์ฒ ์ง์นจ์ ๋ง์ถ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ์ฐ์ฑ ๋๋ถ์ Detekt๋ ํนํ ๋น ๋ฅธ ๋์ ์๊ธฐ์ ๋๊ท๋ชจ Kotlin ๊ธฐ์ฌ์ ๊ธฐ๋ฐ์ ์์ ํํ๋ ๋ฐ ํจ๊ณผ์ ์ ๋๋ค.
ํ์ง๋ง Detekt์ ๋ถ์ ๋ฒ์๋ ์์ค ์ฝ๋ ์์ค์ ๊ฒ์ฌ์ ๊ตญํ๋ฉ๋๋ค. Detekt๋ Kotlin ํ์ผ์ ํด๋น ๋ชจ๋์ ์ปจํ ์คํธ ๋ด์์๋ง ํ๊ฐํ๋ฉฐ, ๋ชจ๋ ๊ฐ ์คํ ๋์์ ์ถ๋ก ํ๋ ค๊ณ ์๋ํ์ง ์์ต๋๋ค. Java์ Kotlin์ด ํผํฉ๋ ์์คํ ์์๋ ๋ณต์ก์ฑ์ด ๋ก์ปฌ ๊ตฌ์กฐ๋ณด๋ค๋ ์ํธ ์์ฉ์์ ๋น๋กฏ๋ ๋ ์ด๋ฌํ ํ๊ณ๊ฐ ๋๋๋ฌ์ง๊ฒ ๋ํ๋ฉ๋๋ค. Detekt๋ ๋ฐ์ง๋ ๋ก์ง์ ๊ฐ์กฐ ํ์ํ ์๋ ์์ง๋ง, ํด๋น ๋ก์ง์ด ๋ ๋์ ์คํ ๊ฒฝ๋ก ๋๋ ์๋น์ค ์ํธ ์์ฉ์ ์ด๋ป๊ฒ ๊ด์ฌํ๋์ง๋ ํ์ ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ํ๊ณ๋ ๋ฆฐํ ๊ณผ ์ฌ์ธต์ ์ธ ์ ์ ์ถ๋ก ์ฌ์ด์ ๊ณตํต์ ์ธ ๊ฒฝ๊ณ๋ฅผ ๋ฐ์ํ๋ฉฐ, ์ด๋ ์ ์ ์์ค ์ฝ๋ ๋ถ์์ ๋ํ ๋ ผ์์์ ๋ค๋ค์ง๋ ์ฐจ์ด์ ์ ๋๋ค. Detekt๋ ๋ถ๋ถ์ ์ธ ์ฝ๋ ์ต์ ํ์๋ ํ์ํ์ง๋ง, ๊ตฌ์กฐ์ ์ผ๋ก๋ ๊น๋ํ์ง๋ง ์์คํ ์ ์ผ๋ก๋ ์ํํ ์ฝ๋๋ฅผ ๊ณผ๋ํ๊ฒ ์ต์ ํํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ค๋ฅธ ๋ถ์ ๊ณ์ธต๊ณผ ํจ๊ป ๊ฒฐ๊ณผ๋ฅผ ํด์ํด์ผ ํฉ๋๋ค. ๊ธฐ์ ์ฉ ํด์ฒด์ธ์์ Detekt๋ ๋ ๋ฆฝ์ ์ธ ์ ์ด ๋ฉ์ปค๋์ฆ๋ณด๋ค๋ ์ด๊ธฐ ๋จ๊ณ์์ ์ํ ์ ํธ๋ฅผ ์์ฑํ๋ ์ญํ ์ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค.
ํฌํธํด๋ฆฌ์ค ์์ค์ ๊ฑฐ๋ฒ๋์ค๋ฅผ ์ํ Kotlin ๋ถ์๊ธฐ๊ฐ ํฌํจ๋ SonarQube
SonarQube๋ ์ค์ ์ง์ค์ ๊ด๋ฆฌ์ ์ธ์ด ๊ฐ ์ผ๊ด์ฑ์ ๊ฐ์กฐํจ์ผ๋ก์จ Kotlin ๋ถ์ ๋ถ์ผ์์ ์ฐจ๋ณํ๋ ์์น๋ฅผ ์ฐจ์งํ๊ณ ์์ต๋๋ค. Kotlin์ ์ฌ๋ฌ JVM ์ธ์ด ์ค ํ๋๋ก ์ฌ์ฉํ๋ ๊ธฐ์ ์์ SonarQube๋ ํฌํธํด๋ฆฌ์ค ์ ๋ฐ์ ๊ฑธ์ณ ํ์ง ์งํ, ๋ณด์ ์ทจ์ฝ์ , ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ถ์ ํ ์ ์๋ ํตํฉ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. SonarQube์ Kotlin ๋ถ์๊ธฐ๋ ์ด ํ๋ ์์ํฌ๋ฅผ Kotlin ์ฝ๋๋ฒ ์ด์ค๊น์ง ํ์ฅํ์ฌ Java ๋ฐ ๊ธฐํ ์ง์ ์ธ์ด์์ ๋น๊ต ๋ถ์์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
SonarQube์ ๊ฐ์ ์ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ๋ณํ์ ์ฌ๋ฌ ํ์ ๊ฑธ์น ๊ฒฐ๊ณผ๋ฅผ ์ข ํฉ์ ์ผ๋ก ๋ถ์ํ ์ ์๋ค๋ ์ ์ ๋๋ค. ์ด๋ฌํ ์ข ํฉ ๋ถ์์ ๊ด๋ฆฌ์์ ๊ฐ๋ , ์ถ์ธ ๋ถ์, ๊ท์ ์ค์ ๋ณด๊ณ ์ ์ ์ฉํฉ๋๋ค. Kotlin ํ๊ฒฝ์์ SonarQube๋ ๊ณต์ ๋ชจ๋์ ๋ณต์ก์ฑ ์ฆ๊ฐ๋ ์ ์ฅ์ ์ ๋ฐ์ ๊ฑธ์น ๊ท์น ์ ์ฉ ๋ถ๊ท ํ๊ณผ ๊ฐ์ ๋ฐ๋ณต์ ์ธ ํจํด์ ํ์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ธ์ฌ์ดํธ๋ Kotlin ๋์ ํ๋ ๊ณผ์ ์์ ํ์ง ๊ธฐ์ค์ ํ์คํํ๋ ค๋ ์กฐ์ง์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
๋์์ SonarQube์ ๋ชจ๋ธ์ ๋ณธ์ง์ ์ผ๋ก ๋ฉํธ๋ฆญ ๊ธฐ๋ฐ์ ๋๋ค. ์ฝ๋ ํน์ฑ์ ์ ์์ ์๊ณ๊ฐ์ผ๋ก ๋ณํํ๋๋ฐ, ์ด๋ก ์ธํด ํน์ ๋ฐ๊ฒฌ ์ฌํญ์ ๊ทผ๋ณธ์ ์ธ ์คํ ์๋ฏธ๊ฐ ๋ชจํธํด์ง ์ ์์ต๋๋ค. ๋์์ ๊ฐ๊ฒฐํ ํํ์์ผ๋ก ์์ถํ๋ Kotlin ๊ธฐ๋ฅ์ ๋ฉํธ๋ฆญ ์ธก๋ฉด์์๋ ์ํ๋๊ฐ ๋ฎ์ ๋ณด์ผ ์ ์์ง๋ง, ๋ฏธ๋ฌํ ๋ฐํ์ ๊ฒฐํฉ์ ์ ๋ฐํ ์ ์์ต๋๋ค. ์ด๋ฌํ ํ๊ณ๋ ์ ์ง๋ณด์์ฑ ๋ฉํธ๋ฆญ ํ๊ณ ๋ถ์์์ ์ ๊ธฐ๋ ๋นํ๊ณผ ์ผ๋งฅ์ํตํฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก SonarQube๋ Kotlin ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์์คํ ๋์์ ๋ํ ํ์ ์ ์ธ ํ๊ฐ๋ณด๋ค๋ ๊ฑฐ๋ฒ๋์ค ์ ํธ๋ก ํด์ํ ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค. SonarQube๋ ํญ๋์ ๋ถ์ ๋ฒ์์ ์ผ๊ด์ฑ์ ์ ๊ณตํ์ง๋ง, ์ฌ์ธต์ ์ธ ๋ถ์๊ณผ ์คํ ์ปจํ ์คํธ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด์๋ ๋ณด์์ ์ธ ๋๊ตฌ์ ์์กดํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ JVM ๋ฐ Android ํฌํธํด๋ฆฌ์ค์์ SonarQube๋ ์ข ์ข ๋ณด๋ค ์ ๋ฌธํ๋ ๋ถ์ ์์ง ์์ ๊ตฌ์ถ๋ ๋ณด๊ณ ๋ฐ ๊ท์ ๊ณ์ธต ์ญํ ์ ํฉ๋๋ค.
ํ๋ซํผ ์ ์ฝ์ด ์๋ Kotlin ๋ถ์์ ์ํ Android Lint
Android Lint๋ Kotlin ์ ์ ๋ถ์์ ํน์ ๋ถ๋ถ์ ๋ค๋ฃจ๋ฉฐ, Android ํ๋ซํผ ์ ์ฝ ์กฐ๊ฑด์ ๊ณ ๋ คํ์ฌ ์ฝ๋๋ฅผ ํ๊ฐํฉ๋๋ค. Kotlin์ ์ต์ Android ๊ฐ๋ฐ์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ธ์ด์ด๋ฉฐ, Android Lint๋ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ, ๋ฆฌ์์ค ์ฌ์ฉ, ์ค๋ ๋ฉ ๋ฐ API ํธํ์ฑ๊ณผ ๊ด๋ จ๋ ํ๋ซํผ๋ณ ๊ท์น์ ์ ์ํฉ๋๋ค. ์ด๋ฌํ ๊ท์น์ ๋ชจ๋ฐ์ผ ํ๊ฒฝ์์๋ง ๋ฐ์ํ๋ ๊ฒฐํจ์ ๋ฐฉ์งํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
๊ธฐ์ ์ฉ ์๋๋ก์ด๋ ํฌํธํด๋ฆฌ์ค์์ Android Lint๋ ์ผ๋ฐ์ ์ธ JVM ๋ถ์์ผ๋ก๋ ์ ์ฉํ๊ธฐ ์ด๋ ค์ด ํ๋ซํผ ๊ธฐ๋์น์ ๋ง์ถฐ Kotlin ์ฝ๋๋ฅผ ์ต์ ํํจ์ผ๋ก์จ ์ฆ๊ฐ์ ์ธ ๊ฐ์น๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ถ์ ์ ํ ์๋ช ์ฃผ๊ธฐ ์ฒ๋ฆฌ, ๋นํจ์จ์ ์ธ ๋ฆฌ์์ค ์ ๊ทผ, UI ์ค๋ ๋ ์์ ์ ์ค์ฉ๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฐ์งํฉ๋๋ค. ์ด๋ฌํ ๋ฌธ์ ์ ๋ค์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฑ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ฏ๋ก, Android Lint๋ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌํจํ๋ ๋ชจ๋ Kotlin ๋ถ์ ์คํ์์ ํ์์ ์ธ ์์์ ๋๋ค.
ํ์ง๋ง Android Lint๋ ์๋์ ์ผ๋ก ๋ฒ์๊ฐ ์ข์ต๋๋ค. ๋ฐฑ์๋ ์๋น์ค, ๊ณต์ JVM ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ ์ข ์์ฑ์ ๋ถ์ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ Android Lint์ ๋ถ์ ๊ฒฐ๊ณผ๋ Android ๋ฐํ์ ๋ด์์๋ ์๋ฏธ๊ฐ ์์ง๋ง, Kotlin ์ฝ๋๊ฐ ๋ ๊ด๋ฒ์ํ ์ํฐํ๋ผ์ด์ฆ ์ํฌํ๋ก์ ์ฐธ์ฌํ ๋๋ ๊ด๋ จ์ฑ์ด ๋จ์ด์ง๋๋ค. ์ด๋ฌํ ๋ถ๋ฆฌ๋ ํ๋ซํผ๋ณ ํต์ฐฐ๋ ฅ๊ณผ ์์คํ ์ ๋ฐ์ ๋ํ ์ดํด๋ฅผ ์กฐํ์์ผ์ผ ํ๋ ๋ถ์ฐ ์์คํ ์ ์ ์ ๋ถ์์์ ๋ ผ์๋๋ ๋ฌธ์ ์ ์ ๋ฐ์ํฉ๋๋ค.
์ค์ ๋ก Android Lint๋ ํฌ๊ด์ ์ธ ๋ถ์ ์๋ฃจ์ ์ด๋ผ๊ธฐ๋ณด๋ค๋ ํนํ๋ ๋๊ตฌ์ ๊ฐ๊น์ต๋๋ค. Kotlin ๊ธฐ๋ฐ ๋๊ตฌ ๋ฐ ํฌํธํด๋ฆฌ์ค ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ๋ณด์ํ์ฌ ํ๋ซํผ ๊ท์ ์ค์๋ฅผ ๋ณด์ฅํ๋ ๋์์ ์์คํ ๊ฐ ๋น๊ต ๋ถ์์ ๋ค๋ฅธ ๊ณ์ธต์ ๋งก๊น๋๋ค. Android ๋ฐ JVM Kotlin ์์ฐ์ ๋ชจ๋ ๊ด๋ฆฌํ๋ ๊ธฐ์ ์ ๊ฒฝ์ฐ, ์ด๋ฌํ ๊ฒฝ๊ณ๋ฅผ ์ธ์ํจ์ผ๋ก์จ Android ์ค์ฌ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋ฐ์ผ์ด ์๋ ํ๊ฒฝ์ ์๋ชป ์ ์ฉํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
๊ธฐ์ ์ฉ JVM ๋ฐ ์๋๋ก์ด๋ ํ๊ฒฝ์์ ์ฌ์ฉ๋๋ Kotlin ์ ์ ๋ถ์ ๋๊ตฌ
๊ธฐ์ ํ๊ฒฝ์์ Kotlin ์ ์ ๋ถ์ ๋๊ตฌ์ ์ญํ ์ ์ข ์ข ์คํด๋ฉ๋๋ค. ๋๊ตฌ๋ค์ ์๋ก ๋์ฒด ๊ฐ๋ฅํ ์ค์บ๋๋ก ํ๊ฐํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ง๋ง, ์ค์ ๋ก๋ ๊ฐ ๋๊ตฌ๊ฐ ์๋ก ๋ค๋ฅธ ์์ค์ ์๋ฏธ๋ก ์ ์ดํด์ ์กฐ์ง์ ๋ฒ์๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. JVM ๋ฐ Android ํฌํธํด๋ฆฌ์ค์์ Kotlin ๋ถ์ ๋๊ตฌ๋ ํ์งํ๋ ๋ฌธ์ ๋ฟ๋ง ์๋๋ผ ๋ถ์ ๋ชจ๋ธ์ด ์ปดํ์ผ ๊ฒฝ๊ณ, ๋ฐฐํฌ ํ ํด๋ก์ง, ๊ทธ๋ฆฌ๊ณ ํ ๊ฐ ๊ฑฐ๋ฒ๋์ค ์๊ตฌ ์ฌํญ๊ณผ ์ผ๋ง๋ ์ ๋ถํฉํ๋์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๊ฐํด์ผ ํฉ๋๋ค.
๊ธฐ์ ๋ค์ ๋จ์ผ ๋ถ์ ๋๊ตฌ๋ก ํ์คํํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ญ ๋๋ค. ๋์ , ์ฝํ๋ฆฐ ๊ธฐ๋ฐ ๋ถ์ ๋๊ตฌ์ ํ๋ซํผ ์ ๋ฐ์ ๊ฑฐ๋ฒ๋์ค ์์คํ , ๋ณด์ ์ค์บ๋๊ฐ ๊ณต์กดํ๋ ๊ณ์ธตํ ํด์ฒด์ธ์ ๊ตฌ์ถํฉ๋๋ค. ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ํจ๊ณผ๋ ๊ฐ ๋๊ตฌ ๋ฒ์ฃผ์ ๋ถ์ ํ๊ณ๋ฅผ ์ดํดํ๊ณ ๋ถ์ ๊ฒฐ๊ณผ๊ฐ ์์ฌ ๊ฒฐ์ ๊ณผ์ ์ ์ด๋ป๊ฒ ๋ฐ์๋๋์ง ํ์ ํ๋ ๋ฐ ๋ฌ๋ ค ์์ต๋๋ค. ์ด๋ฌํ ๊ตฌ๋ถ์ ๋ ๊ด๋ฒ์ํ ๋ ผ์๋ฅผ ๋ฐ์ํฉ๋๋ค. ์์ค ์ฝ๋ ๋ถ์๊ธฐ ๊ทธ๋ฆฌ๊ณ ์ง์ญ์ ๊ฒ์ฌ์ ์์คํ ์์ค ์ถ๋ก ๊ฐ์ ๊ตฌ์กฐ์ ์ฐจ์ด์ .
Smart TS XL์ ๋ค๊ตญ์ด ์ ์ ๋ฐ ์ํฅ ๋ถ์ ๋ ์ด์ด์ ๋๋ค.
Smart TS XL์ Kotlin์ ๋ ๋ฆฝ์ ์ธ ์ธ์ด ์์ญ์ผ๋ก ์ทจ๊ธํ์ง ์๋๋ค๋ ์ ์์ Kotlin ๋ค์ดํฐ๋ธ ๋ถ์๊ธฐ์๋ ์ฐจ๋ณํ๋ฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ JVM ๋ฐ Android ํ๊ฒฝ์์ Kotlin์ ์๋น์ค, ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋ ๊ฑฐ์ ๊ตฌ์ฑ ์์๋ฅผ ์ฐ๊ฒฐํ๋ ๊ณ์ธต ์ญํ ์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. Smart TS XL์ ์ด๋ฌํ ํ์ค์ ๋ฐ์ํ์ฌ Java, ๋น๋ ์ค๋ช ์ ๋ฐ ์ธ๋ถ ํตํฉ ์ง์ ์ ํฌํจํ๋ ๋ค๊ตญ์ด ์ ์ ๋ถ์ ๊ทธ๋ํ ๋ด์์ Kotlin์ ๋ชจ๋ธ๋งํฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ Kotlin ์ฝ๋๊ฐ ๋จ์ผ ์ ์ฅ์๋ฅผ ๋์ด ๋น์ฆ๋์ค ํต์ฌ ์คํ ๊ฒฝ๋ก์ ์ฐธ์ฌํ ๋ ์ค์ํด์ง๋๋ค. ์๋ฅผ ๋ค์ด, Kotlin ์๋น์ค๋ ๊ธฐ์กด Java ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๋ API๋ฅผ ๋ ธ์ถํ๊ฑฐ๋ ํ์ ์์คํ ์ ๋ฐฐ์น ํ๋ก์ธ์ค๋ฅผ ํธ๋ฆฌ๊ฑฐํ ์ ์์ต๋๋ค. ๊ธฐ์กด Kotlin ๋๊ตฌ๋ ๋ก์ปฌ ๋ณต์ก์ฑ์ด๋ ์คํ์ผ ๋ฌธ์ ๋ฅผ ํ์ํ ์ ์์ง๋ง, Kotlin ๋ณ๊ฒฝ ์ฌํญ์ด ์์คํ ๊ฒฝ๊ณ๋ฅผ ๋์ด ์คํ ํ๋ฆ์ ์ด๋ป๊ฒ ๋ฐ๊พธ๋์ง ์ฌ๊ตฌ์ฑํ์ง๋ ๋ชปํฉ๋๋ค. Smart TS XL์ ์ด์ ๋ฌ๋ฆฌ ์ด๊ธฐ์ข ์ฝ๋๋ฒ ์ด์ค ์ ๋ฐ์ ๊ฑธ์ณ ์ข ์์ฑ ํ์, ํธ์ถ ์ฒด์ธ ์ฌ๊ตฌ์ฑ ๋ฐ ์ํฅ ์์ญ ์๋ณ์ ์ค์ ์ ๋ก๋๋ค.
์๋๋ก์ด๋ ํฌํธํด๋ฆฌ์ค์์๋ ์ด๋ฌํ ์ธ์ด ๊ฐ ๊ด์ ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. Kotlin UI ๋ ์ด์ด๋ ์ข ์ข ๊ณต์ SDK ๊ตฌ์ฑ ์์, ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋ฐฑ์๋ ์๋น์ค์ ์ํธ ์์ฉํฉ๋๋ค. ์๋๋ก์ด๋ ๋ชจ๋์๋ง ๊ตญํ๋ ์ ์ ๋ถ์์ผ๋ก๋ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ ๋์ ์ํ๊ณ์ ์ด๋ป๊ฒ ์ ํ๋๋์ง ์์ ํ ์ค๋ช ํ ์ ์์ต๋๋ค. Smart TS XL์ Kotlin ์ํฐํฉํธ๋ฅผ JVM ์๋น์ค ๋ฐ ๊ณต์ ๊ตฌ์ฑ ์์์ ์ฐ๊ด์์ผ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ๋ฆด๋ฆฌ์ค ์์ ๋ฐ ์ํ ๊ด๋ฆฌ ์ ๋ต์ ์๋ฆฝํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ๊ฐ์น๋ ๊ธฐ์ ์ ์๊ตฌ ์ฌํญ๊ณผ ๋ค์๊ณผ ๊ฐ์ ์ ์์ ๋ถํฉํฉ๋๋ค. ์ํฅ ๋ถ์ ์ํํธ์จ์ด ํ ์คํ ์ํฅ์ ๋ฐ๋ ๋ถ๋ถ์ ์ดํดํ๋ ๊ฒ์ด ๊ฐ๋ณ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋์ดํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ค์ํ ๊ฒฝ์ฐ์ ๋๋ค. Smart TS XL์ Kotlin ๊ธฐ๋ฐ ๋๊ตฌ๋ฅผ ๋์ฒดํ๋ ๊ฒ์ด ์๋๋ผ, ์์คํ ์ ๋ฐ์ ์คํ ๋ชจ๋ธ ๋ด์์ ํด๋น ๋๊ตฌ๋ค์ ๊ฒฐ๊ณผ๋ฌผ์ ๋งฅ๋ฝํํ๋ ํตํฉ ๊ณ์ธต ์ญํ ์ ํฉ๋๋ค. ๋ฐ๋ผ์ Kotlin ๋์ ์ด ํ๋ํ ๋ฐ ๊ฑฐ๋ฒ๋์ค ๊ณํ๊ณผ ๊ต์ฐจํ๋ ํฌํธํด๋ฆฌ์ค์ ์ ํฉํฉ๋๋ค.
Kotlin ๊ธฐ๋ฐ ๊ตฌ์กฐ ๋ฐ ๋ณต์ก์ฑ ๋ถ์์ ์ํ Detekt
Detekt๋ ๊ตฌ์กฐ์ ํ์ง๊ณผ ์ธ์ด ํน์ ์ ํจํด์ ์ด์ ์ ๋ง์ถ ๊ฐ์ฅ ์ค๋๋๊ณ ๊ถ์ ์๋ Kotlin ๊ธฐ๋ฐ ์ ์ ๋ถ์ ๋๊ตฌ์ ๋๋ค. Kotlin ๊ตฌ๋ฌธ๊ณผ ๊ด์ฉ๊ตฌ์ ๋ํ ๊น์ ์ดํด๋ฅผ ๋ฐํ์ผ๋ก ์ผ๋ฐ์ ์ธ JVM ๋ถ์๊ธฐ๊ฐ ๋์น๊ธฐ ์ฌ์ด ๋ฌธ์ ๋ค์ ํ์งํ๋ ๊ฒ์ด Detekt์ ๊ฐ์ ์ ๋๋ค. ์ด๋ฌํ ๋ฌธ์ ์๋ ํจ์ํ ๊ตฌ๋ฌธ์ผ๋ก ์ธํ ๊ณผ๋ํ ์ค์ฒฉ, ์ธ๋ผ์ธ ํจ์์ ๊ฐ์ ์ธ์ด ๊ธฐ๋ฅ์ ์ค์ฉ, ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๊ฐ๋ ์ฑ์ ์ ํดํ๋ ํจํด ๋ฑ์ด ํฌํจ๋ฉ๋๋ค.
๊ธฐ์ ํ๊ฒฝ์์ Detekt๋ ์ผ๋ฐ์ ์ผ๋ก Gradle ๋น๋ ๋ฐ CI ํ์ดํ๋ผ์ธ์ ํตํฉ๋์ด ํ ๊ฐ ์ผ๊ด๋ ๊ท์น ์ ์ฉ์ ๋ณด์ฅํฉ๋๋ค. ๊ท์น ๊ธฐ๋ฐ ๋ชจ๋ธ์ ์ฌ์ฉ์ ์ ์๋ฅผ ์ง์ํ๋ฏ๋ก ์กฐ์ง์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ถ ์ฝ๋ฉ ํ์ค ๋ฐ ์ํคํ ์ฒ ์ง์นจ์ ๋ง์ถ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ์ฐ์ฑ ๋๋ถ์ Detekt๋ ํนํ ๋น ๋ฅธ ๋์ ์๊ธฐ์ ๋๊ท๋ชจ Kotlin ๊ธฐ์ฌ์ ๊ธฐ๋ฐ์ ์์ ํํ๋ ๋ฐ ํจ๊ณผ์ ์ ๋๋ค.
ํ์ง๋ง Detekt์ ๋ถ์ ๋ฒ์๋ ์์ค ์ฝ๋ ์์ค์ ๊ฒ์ฌ์ ๊ตญํ๋ฉ๋๋ค. Detekt๋ Kotlin ํ์ผ์ ํด๋น ๋ชจ๋์ ์ปจํ ์คํธ ๋ด์์๋ง ํ๊ฐํ๋ฉฐ, ๋ชจ๋ ๊ฐ ์คํ ๋์์ ์ถ๋ก ํ๋ ค๊ณ ์๋ํ์ง ์์ต๋๋ค. Java์ Kotlin์ด ํผํฉ๋ ์์คํ ์์๋ ๋ณต์ก์ฑ์ด ๋ก์ปฌ ๊ตฌ์กฐ๋ณด๋ค๋ ์ํธ ์์ฉ์์ ๋น๋กฏ๋ ๋ ์ด๋ฌํ ํ๊ณ๊ฐ ๋๋๋ฌ์ง๊ฒ ๋ํ๋ฉ๋๋ค. Detekt๋ ๋ฐ์ง๋ ๋ก์ง์ ๊ฐ์กฐ ํ์ํ ์๋ ์์ง๋ง, ํด๋น ๋ก์ง์ด ๋ ๋์ ์คํ ๊ฒฝ๋ก ๋๋ ์๋น์ค ์ํธ ์์ฉ์ ์ด๋ป๊ฒ ๊ด์ฌํ๋์ง๋ ํ์ ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ํ๊ณ๋ ๋ฆฐํ ๊ณผ ์ฌ์ธต์ ์ธ ์ ์ ์ถ๋ก ์ฌ์ด์ ๊ณตํต์ ์ธ ๊ฒฝ๊ณ๋ฅผ ๋ฐ์ํ๋ฉฐ, ์ด๋ ์ ์ ์์ค ์ฝ๋ ๋ถ์์ ๋ํ ๋ ผ์์์ ๋ค๋ค์ง๋ ์ฐจ์ด์ ์ ๋๋ค. Detekt๋ ๋ถ๋ถ์ ์ธ ์ฝ๋ ์ต์ ํ์๋ ํ์ํ์ง๋ง, ๊ตฌ์กฐ์ ์ผ๋ก๋ ๊น๋ํ์ง๋ง ์์คํ ์ ์ผ๋ก๋ ์ํํ ์ฝ๋๋ฅผ ๊ณผ๋ํ๊ฒ ์ต์ ํํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ค๋ฅธ ๋ถ์ ๊ณ์ธต๊ณผ ํจ๊ป ๊ฒฐ๊ณผ๋ฅผ ํด์ํด์ผ ํฉ๋๋ค. ๊ธฐ์ ์ฉ ํด์ฒด์ธ์์ Detekt๋ ๋ ๋ฆฝ์ ์ธ ์ ์ด ๋ฉ์ปค๋์ฆ๋ณด๋ค๋ ์ด๊ธฐ ๋จ๊ณ์์ ์ํ ์ ํธ๋ฅผ ์์ฑํ๋ ์ญํ ์ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค.
ํฌํธํด๋ฆฌ์ค ์์ค์ ๊ฑฐ๋ฒ๋์ค๋ฅผ ์ํ Kotlin ๋ถ์๊ธฐ๊ฐ ํฌํจ๋ SonarQube
SonarQube๋ ์ค์ ์ง์ค์ ๊ด๋ฆฌ์ ์ธ์ด ๊ฐ ์ผ๊ด์ฑ์ ๊ฐ์กฐํจ์ผ๋ก์จ Kotlin ๋ถ์ ๋ถ์ผ์์ ์ฐจ๋ณํ๋ ์์น๋ฅผ ์ฐจ์งํ๊ณ ์์ต๋๋ค. Kotlin์ ์ฌ๋ฌ JVM ์ธ์ด ์ค ํ๋๋ก ์ฌ์ฉํ๋ ๊ธฐ์ ์์ SonarQube๋ ํฌํธํด๋ฆฌ์ค ์ ๋ฐ์ ๊ฑธ์ณ ํ์ง ์งํ, ๋ณด์ ์ทจ์ฝ์ , ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ถ์ ํ ์ ์๋ ํตํฉ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. SonarQube์ Kotlin ๋ถ์๊ธฐ๋ ์ด ํ๋ ์์ํฌ๋ฅผ Kotlin ์ฝ๋๋ฒ ์ด์ค๊น์ง ํ์ฅํ์ฌ Java ๋ฐ ๊ธฐํ ์ง์ ์ธ์ด์์ ๋น๊ต ๋ถ์์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
SonarQube์ ๊ฐ์ ์ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ๋ณํ์ ์ฌ๋ฌ ํ์ ๊ฑธ์น ๊ฒฐ๊ณผ๋ฅผ ์ข ํฉ์ ์ผ๋ก ๋ถ์ํ ์ ์๋ค๋ ์ ์ ๋๋ค. ์ด๋ฌํ ์ข ํฉ ๋ถ์์ ๊ด๋ฆฌ์์ ๊ฐ๋ , ์ถ์ธ ๋ถ์, ๊ท์ ์ค์ ๋ณด๊ณ ์ ์ ์ฉํฉ๋๋ค. Kotlin ํ๊ฒฝ์์ SonarQube๋ ๊ณต์ ๋ชจ๋์ ๋ณต์ก์ฑ ์ฆ๊ฐ๋ ์ ์ฅ์ ์ ๋ฐ์ ๊ฑธ์น ๊ท์น ์ ์ฉ ๋ถ๊ท ํ๊ณผ ๊ฐ์ ๋ฐ๋ณต์ ์ธ ํจํด์ ํ์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ธ์ฌ์ดํธ๋ Kotlin ๋์ ํ๋ ๊ณผ์ ์์ ํ์ง ๊ธฐ์ค์ ํ์คํํ๋ ค๋ ์กฐ์ง์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
๋์์ SonarQube์ ๋ชจ๋ธ์ ๋ณธ์ง์ ์ผ๋ก ๋ฉํธ๋ฆญ ๊ธฐ๋ฐ์ ๋๋ค. ์ฝ๋ ํน์ฑ์ ์ ์์ ์๊ณ๊ฐ์ผ๋ก ๋ณํํ๋๋ฐ, ์ด๋ ํน์ ๋ฐ๊ฒฌ ์ฌํญ์ ๊ทผ๋ณธ์ ์ธ ์คํ ์๋ฏธ๋ฅผ ๋ชจํธํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ๋์์ ๊ฐ๊ฒฐํ ํํ์์ผ๋ก ์์ถํ๋ Kotlin ๊ธฐ๋ฅ์ ๋ฉํธ๋ฆญ ์ธก๋ฉด์์๋ ์ํ๋๊ฐ ๋ฎ์ ๋ณด์ผ ์ ์์ง๋ง, ๋ฏธ๋ฌํ ๋ฐํ์ ๊ฒฐํฉ์ ์ ๋ฐํ ์ ์์ต๋๋ค. ์ด๋ฌํ ํ๊ณ๋ ๊ธฐ์กด ๋ถ์์์ ๋ฐ๊ฒฌ๋ ๋นํ๊ณผ ์ผ๋งฅ์ํตํฉ๋๋ค. ์ ์ง๋ณด์์ฑ ์งํ ์ ํ.
๊ฒฐ๊ณผ์ ์ผ๋ก SonarQube๋ Kotlin ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์์คํ ๋์์ ๋ํ ํ์ ์ ์ธ ํ๊ฐ๋ณด๋ค๋ ๊ฑฐ๋ฒ๋์ค ์ ํธ๋ก ํด์ํ ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค. SonarQube๋ ํญ๋์ ๋ถ์ ๋ฒ์์ ์ผ๊ด์ฑ์ ์ ๊ณตํ์ง๋ง, ์ฌ์ธต์ ์ธ ๋ถ์๊ณผ ์คํ ์ปจํ ์คํธ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด์๋ ๋ณด์์ ์ธ ๋๊ตฌ์ ์์กดํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ JVM ๋ฐ Android ํฌํธํด๋ฆฌ์ค์์ SonarQube๋ ์ข ์ข ๋ณด๋ค ์ ๋ฌธํ๋ ๋ถ์ ์์ง ์์ ๊ตฌ์ถ๋ ๋ณด๊ณ ๋ฐ ๊ท์ ๊ณ์ธต ์ญํ ์ ํฉ๋๋ค.
ํ๋ซํผ ์ ์ฝ์ด ์๋ Kotlin ๋ถ์์ ์ํ Android Lint
Android Lint๋ Kotlin ์ ์ ๋ถ์์ ํน์ ๋ถ๋ถ์ ๋ค๋ฃจ๋ฉฐ, Android ํ๋ซํผ ์ ์ฝ ์กฐ๊ฑด์ ๊ณ ๋ คํ์ฌ ์ฝ๋๋ฅผ ํ๊ฐํฉ๋๋ค. Kotlin์ ์ต์ Android ๊ฐ๋ฐ์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ธ์ด์ด๋ฉฐ, Android Lint๋ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ, ๋ฆฌ์์ค ์ฌ์ฉ, ์ค๋ ๋ฉ ๋ฐ API ํธํ์ฑ๊ณผ ๊ด๋ จ๋ ํ๋ซํผ๋ณ ๊ท์น์ ์ ์ํฉ๋๋ค. ์ด๋ฌํ ๊ท์น์ ๋ชจ๋ฐ์ผ ํ๊ฒฝ์์๋ง ๋ฐ์ํ๋ ๊ฒฐํจ์ ๋ฐฉ์งํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
๊ธฐ์ ์ฉ ์๋๋ก์ด๋ ํฌํธํด๋ฆฌ์ค์์ Android Lint๋ ์ผ๋ฐ์ ์ธ JVM ๋ถ์์ผ๋ก๋ ์ ์ฉํ๊ธฐ ์ด๋ ค์ด ํ๋ซํผ ๊ธฐ๋์น์ ๋ง์ถฐ Kotlin ์ฝ๋๋ฅผ ์ต์ ํํจ์ผ๋ก์จ ์ฆ๊ฐ์ ์ธ ๊ฐ์น๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ถ์ ์ ํ ์๋ช ์ฃผ๊ธฐ ์ฒ๋ฆฌ, ๋นํจ์จ์ ์ธ ๋ฆฌ์์ค ์ ๊ทผ, UI ์ค๋ ๋ ์์ ์ ์ค์ฉ๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฐ์งํฉ๋๋ค. ์ด๋ฌํ ๋ฌธ์ ์ ๋ค์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฑ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ฏ๋ก, Android Lint๋ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌํจํ๋ ๋ชจ๋ Kotlin ๋ถ์ ์คํ์์ ํ์์ ์ธ ์์์ ๋๋ค.
ํ์ง๋ง Android Lint๋ ์๋์ ์ผ๋ก ๋ฒ์๊ฐ ์ข์ต๋๋ค. ๋ฐฑ์๋ ์๋น์ค, ๊ณต์ JVM ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ ์ข ์์ฑ์ ๋ถ์ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ Android Lint์ ๋ถ์ ๊ฒฐ๊ณผ๋ Android ๋ฐํ์ ๋ด์์๋ ์๋ฏธ๊ฐ ์์ง๋ง, Kotlin ์ฝ๋๊ฐ ๋ ๊ด๋ฒ์ํ ์ํฐํ๋ผ์ด์ฆ ์ํฌํ๋ก์ ์ฐธ์ฌํ ๋๋ ๊ด๋ จ์ฑ์ด ๋จ์ด์ง๋๋ค. ์ด๋ฌํ ๋ถ๋ฆฌ๋ ํ๋ซํผ๋ณ ํต์ฐฐ๋ ฅ๊ณผ ์์คํ ์ ๋ฐ์ ๋ํ ์ดํด๋ฅผ ์กฐํ์์ผ์ผ ํ๋ ๋ถ์ฐ ์์คํ ์ ์ ์ ๋ถ์์์ ๋ ผ์๋๋ ๋ฌธ์ ์ ์ ๋ฐ์ํฉ๋๋ค.
์ค์ ๋ก Android Lint๋ ํฌ๊ด์ ์ธ ๋ถ์ ์๋ฃจ์ ์ด๋ผ๊ธฐ๋ณด๋ค๋ ํนํ๋ ๋๊ตฌ์ ๊ฐ๊น์ต๋๋ค. Kotlin ๊ธฐ๋ฐ ๋๊ตฌ ๋ฐ ํฌํธํด๋ฆฌ์ค ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ๋ณด์ํ์ฌ ํ๋ซํผ ๊ท์ ์ค์๋ฅผ ๋ณด์ฅํ๋ ๋์์ ์์คํ ๊ฐ ๋น๊ต ๋ถ์์ ๋ค๋ฅธ ๊ณ์ธต์ ๋งก๊น๋๋ค. Android ๋ฐ JVM Kotlin ์์ฐ์ ๋ชจ๋ ๊ด๋ฆฌํ๋ ๊ธฐ์ ์ ๊ฒฝ์ฐ, ์ด๋ฌํ ๊ฒฝ๊ณ๋ฅผ ์ธ์ํจ์ผ๋ก์จ Android ์ค์ฌ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋ฐ์ผ์ด ์๋ ํ๊ฒฝ์ ์๋ชป ์ ์ฉํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
CI ๊ธฐ๋ฐ Kotlin ๊ฒ์ฌ ํ์คํ๋ฅผ ์ํ Qodana
Qodana๋ JetBrains์ ๊ฒ์ฌ ์์ง์ ๊ฐ๋ณ ๊ฐ๋ฐ์ ํ๊ฒฝ์ ๋์ด ์ง์์ ํตํฉ(CI) ์ํฌํ๋ก๋ก ํ์ฅํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ Kotlin ํ๊ฒฝ์์ ์ด๋ฌํ ๋ณํ๋ ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ก์ปฌ IDE ๊ตฌ์ฑ, ํ๋ฌ๊ทธ์ธ ๋ฒ์ ๋ฐ ๊ฐ๋ฐ์๋ณ ์ค์ ๊ณผ ๋ถ๋ฆฌํ ์ ์๋ค๋ ์ ์์ ์ค์ํฉ๋๋ค. ์ฌ๋ฌ ์ ์ฅ์์์ ์์ ํ๋ Kotlin ํ์ ์ข ์ข ๋ก์ปฌ์์ ์ ์ฉ๋๋ ๊ท์น์ด ํ๋ก์ ํธ๋ง๋ค ๋ฏธ๋ฌํ๊ฒ ๋ค๋ฅธ ๊ฒ์ฌ ๋ถ์ผ์น ๋ฌธ์ ๋ฅผ ๊ฒช์ต๋๋ค. Qodana๋ ์ ์ด๋ CI ํ๊ฒฝ์์ ๊ฒ์ฌ๋ฅผ ์คํํ์ฌ ์ผ๊ด๋๊ณ ์ฌํ ๊ฐ๋ฅํ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํจ์ผ๋ก์จ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
์คํ ๊ด์ ์์ Qodana๋ ์์ค ๋ถ์ ๊ณ์ธต์์ ์๋ํ๋ฉฐ IntelliJ IDEA ๊ฒ์ฌ์ ์ฌ์ฉ๋๋ ๊ฒ๊ณผ ๋์ผํ ์๋ฏธ๋ก ์ ์ดํด ๊ธฐ๋ฅ์ ํ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด Kotlin ์ธ์ด ๊ตฌ๋ฌธ, null ์์ ์ฑ ๊ท์น ๋ฐ ์ปดํ์ผ๋ฌ ์ ๋ ฌ ๊ฒ์ฌ๋ฅผ ์ ํํ๊ฒ ์ธ์ํ ์ ์์ต๋๋ค. CI ํ์ดํ๋ผ์ธ์์ ์ด๋ ์ํฐํฉํธ๊ฐ ์์ฑ๋๊ฑฐ๋ ๋ฐฐํฌ๋๊ธฐ ์ ์ ๊ตฌ์กฐ์ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ๊ฐ์งํ ์ ์๋๋ก ํฉ๋๋ค. JetBrains ํด๋ง์ ํ์ค์ผ๋ก ์ฌ์ฉํ๋ ๊ธฐ์ ์ ๊ฒฝ์ฐ, Qodana๋ ์์ ํ ์๋ก์ด ๋ถ์ ๋ชจ๋ธ์ ๋์ ํ์ง ์๊ณ ๋ ๊ฐ๋ฐ์ ํผ๋๋ฐฑ ๋ฃจํ์ ์ค์ ์ง์ค์ ๊ท์ ์ ์ฉ ๊ฐ์ ์ฐ๊ฒฐ ๊ณ ๋ฆฌ ์ญํ ์ ํฉ๋๋ค.
ํ์ง๋ง Qodana์ ๋ถ์ ๋ฒ์๋ ์๋์ ์ผ๋ก ์ข์ต๋๋ค. ๋ชจ๋, ์๋น์ค ๋๋ ๋ฐํ์ ๊ฒฝ๊ณ๋ฅผ ๋๋๋๋ ์คํ ๊ฒฝ๋ก๋ฅผ ์ฌ๊ตฌ์ฑํ๋ ค๊ณ ์๋ํ์ง ์์ต๋๋ค. Kotlin ์ฝ๋๋ ์ฃผ๋ก ์ ์ฅ์ ๋ฒ์ ๋ด์์ ๋ถ์๋๋ฉฐ, ๋ถ์ ๊ฒฐ๊ณผ๋ ํ์ ์ฌ์ฉ์๋ ๋ฐฐํฌ ํ ํด๋ก์ง์์ ์๊ด๊ด๊ณ ์์ด ๋ณด๊ณ ๋ฉ๋๋ค. ๋ณต์กํ JVM ํฌํธํด๋ฆฌ์ค์์ Qodana๋ ๊ณต์ API๋ ๋น๋ ํ์ ๊ตฌ์ฑ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ์์คํ ์ ๊ฒฐํฉ์ ํ์ ํ์ง ๋ชปํ ์ฑ ๋ก์ปฌ์์์ ์ ํ์ฑ๋ง ํ์ธํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ ํ์ ์์ ๋ ผ์๋ ๋ ๊ด๋ฒ์ํ ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ์ํฉ๋๋ค. ์ฝ๋ ๋ถ์ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ค ์ฝ๋ ์ค์ฌ ๋๊ตฌ๋ ์ผ๊ด์ฑ ์ ์ง์๋ ํ์ํ์ง๋ง ์์คํ ๋์ ๋ชจ๋ธ๋ง์๋ ํ๊ณ๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ Qodana๋ ์ง๋จ ๊ณ์ธต๋ณด๋ค๋ ์ผ๊ด์ฑ ์ ์ง๋ฅผ ์ํ ๊ฐ์ ๊ณ์ธต์ผ๋ก์ ๊ฐ์ฅ ํจ๊ณผ์ ์ผ๋ก ๊ธฐ๋ฅํฉ๋๋ค. Qodana๋ ๋น๋ ์์ ์ Kotlin ์ฝ๋๊ฐ ํฉ์๋ ๊ฒ์ฌ ํ์ค์ ์ค์ํ๋๋ก ๋ณด์ฅํ์ง๋ง, ๋ณด์์ ์ธ ๋ถ์ ์ ๊ทผ ๋ฐฉ์์ ํตํด ํด๋น ์ฝ๋๊ฐ ๋ ํฐ ์ํฐํ๋ผ์ด์ฆ ์์คํ ์ ํตํฉ๋ ํ ์ด๋ป๊ฒ ๋์ํ๋์ง ์ค๋ช ํฉ๋๋ค.
๋ชจ๋ฐ์ผ ํ๋ซํผ ์ ์ฝ ์กฐ๊ฑด ํ์์์ Kotlin ๋ถ์์ ์ํ Android Lint
Android Lint๋ Kotlin ์ ์ ๋ถ์ ์ํ๊ณ ๋ด์์ ๋ ํนํ ์์น๋ฅผ ์ฐจ์งํฉ๋๋ค. ๊ทธ ์ด์ ๋ JVM๋ง์ ๊ธฐ์ค์ผ๋ก ์ฝ๋๋ฅผ ํ๊ฐํ๋ ๊ฒ์ด ์๋๋ผ Android ํ๋ซํผ์ ๊ด์ ์์ ์ฝ๋๋ฅผ ํ๊ฐํ๊ธฐ ๋๋ฌธ์ ๋๋ค. Kotlin์ ์ต์ Android ๊ฐ๋ฐ์ ์ฃผ์ ์ธ์ด์ด๋ฉฐ, Android Lint๋ Android SDK ์ฌ์ฉ๋ฒ, ์ ํ๋ฆฌ์ผ์ด์ ์๋ช ์ฃผ๊ธฐ, ๋ฆฌ์์ค ๊ด๋ฆฌ ์ ์ฝ ์กฐ๊ฑด์ ๋ํ ๊น์ ์ดํด๋ฅผ ๋ฐํ์ผ๋ก ๊ฐ๋ฐ๋์์ต๋๋ค. ์ด๋ฌํ ํ๋ซํผ ์ค์ฌ์ ์ธ ์ ๊ทผ ๋ฐฉ์ ๋๋ถ์ ์ผ๋ฐ์ ์ธ Kotlin ๋๋ JVM ๋ถ์ ๋๊ตฌ๋ก๋ ๋ฐ๊ฒฌํ ์ ์๋ ๋ฌธ์ ๋ค์ ์ฐพ์๋ผ ์ ์์ต๋๋ค.
๊ธฐ์ ์ฉ ์๋๋ก์ด๋ ํฌํธํด๋ฆฌ์ค์์ Android Lint๋ ๋ผ์ดํ์ฌ์ดํด ๊ด๋ฆฌ ์ค๋ฅ, ์ค๋ ๋ฉ ์๋ฐ, ๋นํจ์จ์ ์ธ ๋ฆฌ์์ค ์ ๊ทผ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ์ํ์ ์ ์ดํ๋ โโ๋ฐ ํ์์ ์ ๋๋ค. Kotlin์ ์ถ์ํ๋ ๊ฐ๊ฒฐํ ๊ตฌ๋ฌธ ๋ค์ ํ๋ซํผ ์ํธ ์์ฉ์ ์จ๊ฒจ ์ด๋ฌํ ์ํ์ ๋ชจํธํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. Android Lint๋ UI ์ค๋ ๋ ์ ๊ทผ ํจํด ๋ฐ ์ปดํฌ๋ํธ ๋ผ์ดํ์ฌ์ดํด ๊ฒฝ๊ณ์ ๊ฐ์ด ์๋๋ก์ด๋ ๋ฐํ์ ์๋ฏธ ์ฒด๊ณ์ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๊ท์น์ ์ ์ฉํจ์ผ๋ก์จ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
์ด๋ฌํ ๊ฐ์ ์๋ ๋ถ๊ตฌํ๊ณ Android Lint์ ์ ์ฉ ๋ฒ์๋ ๋ชจ๋ฐ์ผ ํ๊ฒฝ์ ๋์ด์์ง ๋ชปํฉ๋๋ค. Android์ ๋ฐฑ์๋ ์๋น์ค ๊ฐ์ ๊ณต์ ๋๋ Kotlin ์ฝ๋๋ Android Lint ๊ฒ์ฌ๋ฅผ ํต๊ณผํ ์ ์์ง๋ง, ๋ชจ๋ฐ์ผ์ด ์๋ ์คํ ํ๊ฒฝ์์๋ ์ํ์ ์ด๋ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ถ๋ฆฌ๋ ํนํ ํ๋ซํผ ๊ฐ์ Kotlin ๋ชจ๋์ ์ฌ์ฌ์ฉํ๋ ๊ธฐ์ ์์ ์ค์ํฉ๋๋ค. Android Lint๋ ๋ชจ๋ฐ์ผ ๋์์ ๋ํ ๋์ ์์ค์ ๋ถ์ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ง๋ง, ๊ทธ ๊ฒฐ๊ณผ๋ JVM ๋ฐฑ์๋ ์๋น์ค๋ ๋ฐฐ์น ์ํฌ๋ก๋์๋ ์ผ๋ฐํํ ์ ์์ต๋๋ค.
์ด ๊ฒฝ๊ณ๋ ๋ค์์์ ๋ค๋ฃฌ ๊ณผ์ ๋ค๊ณผ ์ผ์นํฉ๋๋ค. ๋ถ์ฐ ์์คํ ์ ์ ์ ๋ถ์ํ๋ซํผ๋ณ ์ ํ์ฑ์ด ์์คํ ์ ๋ฐ์ ์์ ์ฑ์ ๋ณด์ฅํ์ง ์๋ ๊ฒฝ์ฐ, Android Lint๋ ํน์ ๋ถ์ ๋๊ตฌ๋ก ๊ฐ์ฃผํด์ผ ํฉ๋๋ค. Android Lint๋ ํ๋ซํผ ๊ท์ ์ค์๋ฅผ ๋ณด์ฅํจ์ผ๋ก์จ ๋ณด๋ค ๊ด๋ฒ์ํ Kotlin ๋ถ์ ์์ ์ ๋ณด์ํ๋ ๋์์, ํ๋ซํผ ๊ฐ ์ข ์์ฑ ๋ถ์์ ๊ธฐ์ ์คํ์ ๋ค๋ฅธ ๋๊ตฌ์ ๋งก๊น๋๋ค.
Checkstyle๊ณผ Kotlin ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ ์ธ์ด ๊ฐ ์ผ๊ด์ฑ์ ํ๋ณดํ์ธ์.
Checkstyle์ ์๋ฐ ์ํ๊ณ์์ ์ฝ๋ฉ ๊ท์น๊ณผ ๊ตฌ์กฐ์ ๊ท์ ์ ๊ฐ์ ํ๋ ๋๊ตฌ๋ก ์์๋์์ต๋๋ค. Kotlin์ ๋์ ํ๋ ๊ธฐ์ ํ๊ฒฝ์์๋ ๊ธฐ์กด ์๋ฐ ์ฝ๋๋ฒ ์ด์ค์ ํจ๊ป ์ฌ์ฉํ๋ฉด์ ์ธ์ด ๊ฐ ์คํ์ผ ๋ฐ ๊ตฌ์กฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํด Checkstyle์ Kotlin ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ์กฐ์ง์ด ์ ์ง์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ฉด์ ์ฐจ์ด์ ์ ์ต์ํํ๊ณ ์ ํ๋ ์ ํ๊ธฐ์ ๊ฐ์ฅ ํํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.
๊ฑฐ๋ฒ๋์ค ๊ด์ ์์ Checkstyle์ ๊ธฐ์กด CI ํ์ดํ๋ผ์ธ์ ์ฝ๊ฒ ํตํฉ๋๋ ์น์ํ ๊ฐ์ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค. Checkstyle์ ๊ท์น์ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋จํ๊ณ ์ ์ธ์ ์ด๋ฉฐ, ๋ช ๋ช ๊ท์น, ํ์ ์ง์ ๋ฐ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ ์ ์ฝ ์กฐ๊ฑด์ ์ค์ ์ ๋ก๋๋ค. Kotlin์ ์ด๋ฌํ ๊ท์น์ ์ ์ฉํ๋ฉด ๊ธฐ์ฌ์์ ํ๋์ ์์ ํํ๊ณ Java ๋ชจ๋๊ณผ Kotlin ๋ชจ๋ ๊ฐ์ ํ๋ฉด์ ์ธ ์ฐจ์ด๋ฅผ ์ค์ฌ ๊ฒํ ๋ฐ ๊ฐ์ฌ ๊ณผ์ ์ ๊ฐ์ํํ ์ ์์ต๋๋ค.
ํ์ง๋ง Checkstyle์ ๋ถ์ ๊น์ด๋ ์ ํ์ ์ ๋๋ค. Kotlin ํน์ ์ ์๋ฏธ๋ก ์ ์ธ์์ด ๋ถ์กฑํ๊ณ , null ์์ ์ฑ, ์ค๋งํธ ํ๋ณํ, ๊ณ ์ฐจ ํจ์์ ๊ฐ์ ์ธ์ด์ ํน์ง์ ๋ชจ๋ธ๋งํ์ง ์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก Kotlin ํ๊ฒฝ์์ Checkstyle์ด ์ ์ํ๋ ๋ถ์ ๊ฒฐ๊ณผ๋ ํผ์์ ์ด๋ฉฐ, ๋ ์ฌ์ธต์ ์ธ ๊ตฌ์กฐ์ ๋ฌธ์ ๋ฅผ ๋์น ์ ์์ต๋๋ค. Checkstyle์ ์คํ ๋์์ ์ถ๋ก ํ๊ฑฐ๋ ์์กด์ฑ ์ฒด์ธ์ ๋ถ์ํ ์ ์์ผ๋ฏ๋ก, Kotlin ๋ถ์์ ์ฃผ์ ๋๊ตฌ๋ก ์ฌ์ฉํ๊ธฐ์๋ ์ ํฉํ์ง ์์ต๋๋ค.
์ด๋ฌํ ํ๊ณ๋ ๊ตฌ๋ฌธ ์ค์ฌ ๋๊ตฌ๊ฐ ์๋ฏธ๋ก ์ ์ํ์ ํฌ์ฐฉํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช๋ ์ ์ ์์ค ์ฝ๋ ๋ถ์ ๋ถ์ผ์์ ํํ ๋ํ๋๋ ํ์์ ๋ฐ์ํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ Kotlin ํ๊ฒฝ์์ Checkstyle์ ๋ณด์กฐ์ ์ธ ์ ์ด ๋๊ตฌ๋ก์ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค. ์ธ์ด ์ ํ ๊ณผ์ ์์ ๊ธฐ๋ณธ ์ผ๊ด์ฑ์ ์ ์งํ๋๋ก ์ง์ํ์ง๋ง, ์ฝ๋ ๋์ ๋ฐ ํ๋ํ ์ํ์ ๋ํ ์๋ฏธ ์๋ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ๋ ค๋ฉด Kotlin์ ์ง์ํ๋ ์์คํ ์์ค ๋ถ์ ๋๊ตฌ์ ํจ๊ป ์ฌ์ฉํด์ผ ํฉ๋๋ค.
Kotlin ๋ณด์ ์ค์ฌ ์ ์ ๋ถ์์ ์ํ Snyk ์ฝ๋
Snyk Code๋ ์ทจ์ฝ์ ํ์ง ๋ฐ ์์ ํ์ง ์์ ์ฝ๋ฉ ํจํด์ ์ด์ ์ ๋ง์ถฐ Kotlin ์ ์ ๋ถ์์ ๋ณด์ ์ค์ฌ์ ๊ด์ ์ ๋์ ํฉ๋๋ค. Snyk Code์ Kotlin ์ง์ ๊ธฐ๋ฅ์ ๋ฐ์ดํฐ ํ๋ฆ ๋ฌธ์ , ์ธ์ ์ ์ํ, ๊ทธ๋ฆฌ๊ณ ์ ์ฉ๋ ์ ์๋ ์ํฉ์ผ๋ก ์ด์ด์ง ์ ์๋ ์์ ํ์ง ์์ API ์ฌ์ฉ์ ์๋ณํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. Kotlin ์๋น์ค๊ฐ ์ธ๋ถ ์ ๋ ฅ์ด๋ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ธฐ์ ํ๊ฒฝ์์ ์ด๋ฌํ ๋ณด์ ์ค์ฌ ๋ถ์์ ๋งค์ฐ ์ค์ํ ์ํ ์์ญ์ ๋์ํฉ๋๋ค.
์ด ๋๊ตฌ์ ๋ถ์ ๋ชจ๋ธ์ ๋ณด์ ํ๋ฆ๊ณผ ๊ด๋ จ๋ ํจํด ์ธ์ ๋ฐ ์๋ฏธ๋ก ์ ์ถ๋ก ์ ์ค์ ์ ๋ก๋๋ค. ์ฌ์ฉ์ ์ ์ด ๋ฐ์ดํฐ๊ฐ Kotlin ์ฝ๋๋ฅผ ํตํด ์ด๋ป๊ฒ ์ ํ๋๋์ง ๋ถ์ํ๊ณ , ์์ ํ ์ฝ๋ฉ ๊ธฐ์ค์ ์๋ฐํ ์ ์๋ ๊ตฌ๋ฌธ์ ํ์ํฉ๋๋ค. ์ด๋ฌํ ํน์ง ๋๋ถ์ Snyk Code๋ ์ธ๋ถ ์ฌ์ฉ์์๊ฒ ๋ ธ์ถ๋๋ Kotlin ๊ธฐ๋ฐ API ๋ฐ ๋ง์ดํฌ๋ก์๋น์ค์ ํนํ ์ ์ฉํฉ๋๋ค. ๋ณด๋ค ๊ตฌ์ฒด์ ์ด์ง๋ง ์ํฅ๋ ฅ์ด ํฐ ๋ฌธ์ ์ ํ์ ์ง์ค์ ์ผ๋ก ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ธ ์ฝ๋ ํ์ง ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ๋ณด์ํฉ๋๋ค.
๋์์ Snyk Code๋ ํฌ๊ด์ ์ธ ๊ตฌ์กฐ์ ๋๋ ์ํคํ ์ฒ์ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ๋ ค๋ ์๋๋ ํ์ง ์์ต๋๋ค. Snyk Code์ ๋ถ์ ๊ฒฐ๊ณผ๋ ๋ณด์ ๋ฒ์์ ๊ตญํ๋๋ฉฐ, ์ทจ์ฝ์ ์ด ๋ ๊ด๋ฒ์ํ ์์คํ ์ข ์์ฑ์ด๋ ๋ฐฐํฌ ์ํคํ ์ฒ์ ์ด๋ป๊ฒ ์ํธ ์์ฉํ๋์ง์ ๋ํ ์ค๋ช ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ๊ตฌ์กฐ์ ์ผ๋ก ๋ณต์กํ์ง๋ง ๋น์ฅ ์ทจ์ฝํ์ง ์์ Kotlin ์ฝ๋๋ ์ด์์์ ๋ถ์์ ์ฑ์ ์ด๋ํ๋๋ผ๋ Snyk Code ๋ถ์์ ํต๊ณผํ์ฌ ์ฐ๋ ค ์ฌํญ์ผ๋ก ํ์๋์ง ์์ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ ์ถฉ์์ ๋ค์ ๋ ผ์์ ์ผ๋งฅ์ํตํฉ๋๋ค. ๋ณด์ ์นจํด ๋ฐฉ์ง๋ณด์ ์ค์บ๋๋ ํน์ ์ํ ๋ชจ๋ธ์ ๋์์ผ๋ก ํ์ง๋ง, ์์คํ ์ ์ฒด์ ๋ํ ํฌ๊ด์ ์ธ ์ดํด๋ฅผ ๋์ฒดํ ์๋ ์์ต๋๋ค. ์ํฐํ๋ผ์ด์ฆ Kotlin ํ๊ฒฝ์์ Snyk Code๋ ํน์ ์ํ์ ํนํ๋ ๋ณด์ ๊ณ์ธต โโ์ญํ ์ ํฉ๋๋ค. ์ด๋ ๋ฐฉ์ด ํ์ธ๋ฅผ ๊ฐํํ์ง๋ง, ์์คํ ํ๋ํ ๋ฐ ์ฅ๊ธฐ์ ์ธ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ณด๋ค ๊ด๋ฒ์ํ ๋ถ์ ์ ๋ต์ ํตํฉ๋์ด์ผ ํฉ๋๋ค.
์ํฐํ๋ผ์ด์ฆ JVM ๋ฐ ์๋๋ก์ด๋ ํ๊ฒฝ์์ Kotlin ์ ์ ๋ถ์ ๋๊ตฌ ๋น๊ต
| ๋ถ์ ๋ฅ๋ ฅ | SMART TS XL | ๋ฐ ํ ํธ | ์ฝ๋ค๋ | SonarQube (Kotlin) | ์๋๋ก์ด๋ ๋ฆฐํธ | ์ฒดํฌ์คํ์ผ(์ฝํ๋ฆฐ) | Snyk ์ฝ๋ |
|---|---|---|---|---|---|---|---|
| Kotlin ์ธ์ด ์ธ์ | ๊ฐ๋ฅ | ๊ฐ๋ฅ | ๊ฐ๋ฅ | ๊ฐ๋ฅ | ๊ฐ๋ฅ | ์ผ๋ถ์ | ๊ฐ๋ฅ |
| Java-Kotlin ์ธ์ด ๊ฐ ๋ถ์ | ๊ฐ๋ฅ | ์๋ | ์ ํ๋ | ์ ํ๋ | ์๋ | ์ผ๋ถ์ | ์ ํ๋ |
| ์์คํ ์ ์ฒด ์ข ์์ฑ ๊ทธ๋ํ | ๊ฐ๋ฅ | ์๋ | ์๋ | ์ผ๋ถ์ | ์๋ | ์๋ | ์๋ |
| ๋ชจ๋ ๊ฐ ์ํฅ ๋ถ์ | ๊ฐ๋ฅ | ์ ํ๋ | ์๋ | ์ผ๋ถ์ | ์๋ | ์๋ | ์๋ |
| ์คํ ๊ฒฝ๋ก ์ฌ๊ตฌ์ฑ | ๊ฐ๋ฅ | ์๋ | ์๋ | ์๋ | ์๋ | ์๋ | ์ ํ๋ |
| CI ํ์ดํ๋ผ์ธ ํตํฉ | ๊ฐ๋ฅ | ๊ฐ๋ฅ | ๊ฐ๋ฅ | ๊ฐ๋ฅ | ๊ฐ๋ฅ | ๊ฐ๋ฅ | ๊ฐ๋ฅ |
| IDE ์ค์ฌ ํผ๋๋ฐฑ | ์๋ | ์ผ๋ถ์ | ์ผ๋ถ์ | ์ผ๋ถ์ | ์ผ๋ถ์ | ์๋ | ์๋ |
| ์๋๋ก์ด๋ ํ๋ซํผ ์๋ฏธ๋ก | ์ผ๋ถ์ | ์๋ | ์๋ | ์๋ | ๊ฐ๋ฅ | ์๋ | ์ผ๋ถ์ |
| ๋ณด์ ์ค์ฌ ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์ | ์ผ๋ถ์ | ์๋ | ์๋ | ์ผ๋ถ์ | ์๋ | ์๋ | ๊ฐ๋ฅ |
| ํฌํธํด๋ฆฌ์ค ์์ค์ ๊ฑฐ๋ฒ๋์ค ๊ฐ์์ฑ | ๊ฐ๋ฅ | ์๋ | ์๋ | ๊ฐ๋ฅ | ์๋ | ์ผ๋ถ์ | ์ผ๋ถ์ |
| ๋ค์ค ์ ์ฅ์ ์๊ด๊ด๊ณ | ๊ฐ๋ฅ | ์๋ | ์๋ | ์ผ๋ถ์ | ์๋ | ์๋ | ์๋ |
| ํ๋ํ ์ค๋น๋ ํ๊ฐ | ๊ฐ๋ฅ | ์๋ | ์๋ | ์๋ | ์๋ | ์๋ | ์๋ |
๊ธฐ์ ์ง์ ์ญํ ์์ ์ฌ์ฉ๋๋ ๊ธฐํ Kotlin ์ ์ ๋ถ์ ๋๊ตฌ
์ฃผ์ ๋ถ์ ํ๋ซํผ ์ธ์๋ ๊ธฐ์ ๋ค์ ์ข ์ข ๋ณด๋ค ๊ตฌ์ฒด์ ์ธ ์ ์ด ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ์ฝํ๋ฆฐ ๊ด๋ จ ๋๊ตฌ๋ค์ ๋ณด์กฐ์ ์ผ๋ก ํ์ฉํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ค์ ์คํ ๋์์ด๋ ์์คํ ์ ๋ฐ์ ์์กด์ฑ ๊ตฌ์กฐ์ ๋ํ ํฌ๊ด์ ์ธ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ๋๋ก ์ค๊ณ๋ ๊ฒ์ด ์๋๋๋ค. ์คํ๋ ค ํฌ๋งทํ ์ ๊ทํ, IDE ์ค์ฌ์ ํผ๋๋ฐฑ, ๋ฐ์ดํธ์ฝ๋ ๊ฒ์ฌ, ์์กด์ฑ ๊ด๋ฆฌ์ ๊ฐ์ ํน์ ์ญํ ์ ์ํํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ค์ ๊ฐ์น๋ ์ฌ์ธต์ ์ธ ๋ถ์ ๊ณ์ธต์ ๋์ฒดํ๋ ๊ฒ์ด ์๋๋ผ, ๋ณด์กฐ์ ์ธ ๋ฉ์ปค๋์ฆ์ผ๋ก ์๋์ ์ผ๋ก ํ์ฉ๋ ๋ ๋๋ฌ๋ฉ๋๋ค.
์ฑ์ํ ์ฝํ๋ฆฐ ๊ฐ๋ฐ ํ๊ฒฝ์์๋ ์ด๋ฌํ ๋๊ตฌ๋ค์ด ์ข ์ข ๊ท๋ชจ ํ์ฅ์ ๋ฐ๋ผ ๋ฐ์ํ๋ ํน์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์ ๋ฉ๋๋ค. ํฌ๋งทํ ์ค๋ฅ, ์ผ๊ด์ฑ ์๋ ๊ฐ๋ฐ์ ํผ๋๋ฐฑ, ๋๋ ์์กด์ฑ ๊ฐ์์ฑ ๋ถ์กฑ๊ณผ ๊ฐ์ ๋ฌธ์ ๋ค์ ์ ๋๋ก ๊ด๋ฆฌ๋์ง ์์ผ๋ฉด ๋ถ์ ๊ฒฐ๊ณผ์ ๋ํ ์ ๋ขฐ๋๋ฅผ ๋จ์ด๋จ๋ฆด ์ ์์ต๋๋ค. ๋ณด์กฐ ๋๊ตฌ๋ค์ ๊ฐ๋ฐ ์ํฌํ๋ก์ ํน์ ์ธก๋ฉด์ ์์ ํํจ์ผ๋ก์จ ์ด๋ฌํ ๋ฌธ์ ๋ค์ ์ํํ๋ ๋ฐ ๋์์ ์ค๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ๋๊ตฌ๋ค์ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ ๋ฐํ์ ๋์, ๋ชจ๋ ๊ฐ ์ํธ ์์ฉ, ๋๋ ์ํคํ ์ฒ ์๋์ ๋ํ ๋งฅ๋ฝ ์ ๋ณด๊ฐ ๋ถ์กฑํ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฏ๋ก ์ ์คํ๊ฒ ํด์ํด์ผ ํฉ๋๋ค.
์ด๋ฌํ ๋๊ตฌ๋ค์ ํ๊ณ๋ฅผ ๋ช ํํ ์ธ์งํ ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ค์ ์ฃผ์ ๊ด๋ฆฌ ๋ฉ์ปค๋์ฆ์ผ๋ก ์ผ์ผ๋ ค๋ ๊ธฐ์ ๋ค์ ์ข ์ข ์๋ชป๋ ํ์ , ํํธํ๋ ๋ณด๊ณ , ๋๋ ์ค๋ณต๋ ์ ๋ฌด์ ์ง๋ฉดํ๊ฒ ๋ฉ๋๋ค. ์ ์ ํ๊ฒ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ๋๊ตฌ๋ค์ ์ก์์ ์ค์ด๊ณ ์ผ๊ด์ฑ์ ๊ฐํํ์ฌ, ๊ณ ์ฐจ์ ๋ถ์ ํ๋ซํผ์ด ๋์ฑ ๊นจ๋ํ๊ณ ์์ธก ๊ฐ๋ฅํ ์ ํธ ํ๋ฉด์์ ์๋ํ ์ ์๋๋ก ํด์ค๋๋ค.
- ์ผ์ดํ๋ฆฐํธ
์ํ ์ค๋ช Kotlin ์ ์ฉ ํฌ๋งทํฐ ๋ฐ ๊ฒฝ๋ ๊ตฌ์กฐ ๊ฒ์ฌ๊ธฐ๋ก, ์ผ๊ด๋ ์ฝ๋ ์คํ์ผ์ ๊ฐ์ ํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค.
์ฅ์ :- ๋๊ท๋ชจ Kotlin ๊ฐ๋ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ฐ์ ๊ฑธ์ณ ์์์ ํ์คํํฉ๋๋ค.
- ๋ฎ์ ์คํ ๋น์ฉ๊ณผ ์์ฌ์ด CI ํตํฉ
- ์ฝ๋ ๊ฒํ ์ ์คํ์ผ ๊ด๋ จ ์ค๋ฅ๋ฅผ ์ค์
๋๋ค.
๋จ์ : - ์๋ฏธ๋ก ์ ๋ถ์์ด๋ ํ๋๋ก ์ ๋ถ์์ ํ์ง ์์ต๋๋ค.
- ์ํคํ ์ฒ ๋๋ ๋ฐํ์ ์ํ์ ๊ฐ์งํ ์ ์์ต๋๋ค.
- ์์ ๊ฐ์ ์ ์ฉ ์ธ์๋ ๊ฐ์น๊ฐ ์ ํ์ ์ ๋๋ค.
- IntelliJ IDEA Kotlin ๊ฒ์ฌ
์ํ ์ค๋ช Kotlin ์ปดํ์ผ๋ฌ ์๋ฏธ๋ก ๋ฐ JetBrains ๋ถ์ ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ IDE ํตํฉ ๊ฒ์ฌ ๊ธฐ๋ฅ.
์ฅ์ :- Kotlin ์ธ์ด ๊ตฌ์กฐ์ ๋ํ ๊น์ด ์๋ ์ดํด
- ๊ฐ๋ฐ ๊ณผ์ ์ค ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ
- ๋ ์์ ์ฑ ๋ฐ ์ธ์ด ๊ธฐ๋ฅ ์ค์ฉ์ ๋ํ ๊ฐ๋ ฅํ ํ์ง
๋จ์ : - ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
- ํ ๊ฐ ํ์คํ๊ฐ ์ด๋ ต์ต๋๋ค.
- ํฌํธํด๋ฆฌ์ค ์์ค์ ๊ฐ์ ์งํ ๋๋ ์๊ด๊ด๊ณ ์์
- Kotlin์ ์ง์ํ๋ SpotBugs
์ํ ์ค๋ช Kotlin ์ฝ๋์์ ์์ฑ๋ JVM ์ํฐํฉํธ์ ์ ์ฉ๋๋ ๋ฐ์ดํธ์ฝ๋ ์์ค์ ์ ์ ๋ถ์ ๋๊ตฌ์ ๋๋ค.
์ฅ์ :- ์์ค ์ฝ๋๊ฐ ์๋ ์ปดํ์ผ๋ ๋ฐ์ดํธ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ํฉ๋๋ค.
- ํน์ ๋ฐํ์ ์์ค ๊ฒฐํจ ํจํด์ ๊ฐ์งํ ์ ์์ต๋๋ค.
- ์์ค ์ฝ๋๊ฐ ๋ถ์์ ํ๊ฑฐ๋ ์์ฑ๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
๋จ์ : - Kotlin ํน์ ์ ์๋ฏธ๋ก ์ ๋ํ ์ดํด ๋ถ์กฑ
- Kotlin ๊ด์ฉ ์ฝ๋์์ ์คํ๋ฅ ์ด ๋ ๋๊ฒ ๋ํ๋จ
- Kotlin ์ฐ์ ๋์์ธ ํจํด๊ณผ์ ๋ถ์ผ์น
- Kotlin์ฉ PMD
์ํ ์ค๋ช Kotlin ๊ตฌ๋ฌธ์ ์ง์ํ๋๋ก ํ์ฅ๋ ๊ท์น ๊ธฐ๋ฐ ์ ์ ๋ถ์ ์์ง์ ๋๋ค.
์ฅ์ :- ์๋ฐ ์ค์ฌ ์กฐ์ง์ ์ํ ์ต์ํ ๊ฑฐ๋ฒ๋์ค ๋ชจ๋ธ
- ๊ฐ๋จํ ๊ท์น ์ ์ ๋ฐ CI ํตํฉ
- Java์์ Kotlin์ผ๋ก์ ์ ํ ํ๊ฒฝ์ ์ง์ํฉ๋๋ค.
๋จ์ : - Kotlin ์ธ์ด์ ๋ํ ๊ธฐ์ด์ ์ธ ์ดํด
- ํ๋๋ณด๋ค๋ ๊ตฌ๋ฌธ ํจํด์ ์ด์ ์ ๋ง์ถ๋ค
- Kotlin ๊ด์ฉ์ ์ฝ๋๋ฒ ์ด์ค์๋ ๊ด๋ จ์ฑ์ด ์ ํ์ ์ ๋๋ค.
- OWASP ์ข
์์ฑ ๊ฒ์ฌ(JVM ์ปจํ
์คํธ)
์ํ ์ค๋ช Kotlin ์ํฐํฉํธ๋ฅผ ํฌํจํ๋ JVM ํ๋ก์ ํธ์ ์ข ์์ฑ ์ทจ์ฝ์ ์ค์บ๋๋ฅผ ์ ์ฉํ์ต๋๋ค.
์ฅ์ :- ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ ค์ง ์ทจ์ฝ์ ์ ์๋ณํฉ๋๋ค.
- JVM ์ํ๊ณ ๋ด์์ ์ธ์ด์ ๊ตฌ์ ๋ฐ์ง ์์
- ๊ท์ ์ค์ ๋ฐ ๊ฐ์ฌ ์๊ฑด์ ์ง์ํฉ๋๋ค.
๋จ์ : - ์์ค ์ฝ๋ ์์ค์ Kotlin ๋ถ์์ ์ํ๋์ง ์์ต๋๋ค.
- ์ฌ์ฉ์ ์ ์ ์ฝ๋์ ๋์์ ํ๊ฐํ์ง ์์ต๋๋ค.
- ์ข ์์ฑ ์ฌ์ฉ๋์ด๋ ์คํ ์ํฅ์ ๋ชจ๋ธ๋งํ ์ ์์ต๋๋ค.
์๋ฐ์ ์ฝํ๋ฆฐ์ด ํผํฉ๋ ์ปดํ์ผ ํ๊ฒฝ์์๋ ์ด์๋จ๋ ์ฝํ๋ฆฐ ์ฝ๋ ํ์ง ์ ํธ
Kotlin ์์คํ ์์ ์ฝ๋ ํ์ง ์ ํธ๋ ๋จ์ผ ์ธ์ด ๋๋ ๋จ์ผ ์ปดํ์ผ ๋จ๊ณ ๊ด์ ์์ ๋์ถ๋ ๊ฒฝ์ฐ ์ ๋ขฐ์ฑ์ ์์ต๋๋ค. ์ํฐํ๋ผ์ด์ฆ JVM ํ๊ฒฝ์์ Kotlin์ Java์ ํจ๊ป ์ปดํ์ผ๋๊ณ , ์ด๋ ธํ ์ด์ ํ๋ก์ธ์๋ ์ถ๊ฐ ์์ค ์ฝ๋๋ฅผ ์์ฑํ๋ฉฐ, ๋ฐ์ดํธ์ฝ๋๋ ๋ฐฐํฌ ์ ์ ๋ณํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ๊ณ์ธตํ๋ ์ปดํ์ผ ํ๊ฒฝ์ ๊ณ ๋ คํ์ง ์์ ์ ์ ๋ถ์์ ๋ถ๋ถ์ ์ผ๋ก๋ ์ฌ๋ฐ๋ฅด์ง๋ง ์ ์ฒด์ ์ผ๋ก๋ ์๋ชป๋ ์ ํธ๋ฅผ ์์ฑํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
๋ฌธ์ ๋ ๋ถ์์ ๋ถ์ฌ๊ฐ ์๋๋ผ, ๋น๋ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ถ์ ๊ฒฐ๊ณผ๊ฐ ๋ถ์์ ํ๋ค๋ ์ ์ ๋๋ค. ๊ฐ๋ณ์ ์ผ๋ก๋ ์์ ํด ๋ณด์ด๋ Kotlin ๊ตฌ๋ฌธ์ด๋ผ๋ ๊ณต์ ์ํฐํฉํธ, ์ ฐ์ด๋ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ์๋๋ก์ด๋ ๋ณํ์ผ๋ก ์ปดํ์ผ๋ ๋ ๋ฏธ๋ฌํ ์ํ์ ์ด๋ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ํฐํ๋ผ์ด์ฆ๊ธ ์ฝ๋ ํ์ง ์งํ๋ Kotlin ์ฝ๋๊ฐ ์ธ์ด ๊ฒฝ๊ณ, ๋ชจ๋ ๊ฒฝ๊ณ ๋ฐ ๋น๋ ์๊ฐ ๋ณํ์ ๊ฑฐ์น ํ์๋ ์๋ฏธ๋ฅผ ์ ์งํด์ผ ํฉ๋๋ค.
Kotlin๊ณผ Java์ ์ํธ ์ด์ฉ์ฑ์ ์จ๊ฒจ์ง ํ์ง ์ ํ์ ์์ธ์ด ๋ ์ ์์ต๋๋ค.
Kotlin์ด ๊ธฐ์ ํ๊ฒฝ์์ ์ฑํ๋๋ ์ฃผ์ ์๋๋ ฅ ์ค ํ๋๋ Java์์ ์ํํ ์ํธ ์ด์ฉ์ฑ์ ์ฝ์ํ๋ค๋ ์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋์์ ์ด๋ฌํ ์ํธ ์ด์ฉ์ฑ์ ์ ์ ๋ถ์ ๋๊ตฌ๊ฐ ์ ํํ๊ฒ ๋ชจ๋ธ๋งํ๊ธฐ ์ด๋ ค์ด ํ์ง ์ ํ์ ์ง์์ ์ธ ์์ธ์ด ๋๊ธฐ๋ ํฉ๋๋ค. Kotlin ์ฝ๋๋ Kotlin์ null ์์ ์ฑ ๋ฐ ๋ถ๋ณ์ฑ ๊ฐ์ ์ ๊ณ ๋ คํ์ฌ ์ค๊ณ๋์ง ์์ Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก Kotlin ์์ค ํ์ผ ๋ด์์๋ ๊ฒฌ๊ณ ํด ๋ณด์ด๋ ์ฝ๋๋ Java ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ทจ์ฝ์ฑ์ ๋ฌผ๋ ค๋ฐ์ ์ ์์ต๋๋ค.
Kotlin ์์ค ์ฝ๋ ๋ด์์๋ง ์๋ํ๋ ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ด๋ฌํ ์ทจ์ฝ์ ์ ๊ฐ๊ณผํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ, ๊ทธ ์ด์ ๋ ์ํ์ด Kotlin ๊ตฌ๋ฌธ ์์ฒด์์ ๋ฐ์ํ๋ ๊ฒ์ด ์๋๋ผ ์ํธ ์ด์ฉ์ฑ ๊ณ์ธต์์ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. Kotlin์ ํ์ ์์คํ ์ด ํ๋ซํผ ํ์ ๊ณผ ์ํธ ์์ฉํ ๋ ๋ณด์ฅ์ ์ํํ๋ ๋ถ๋ถ์ด ๋ฐ๋ก ๊ทธ ์ทจ์ฝ์ ์ ๋๋ค. ์ด๋ฌํ ์ํธ ์์ฉ์ ๊ทธ๋ ์ง ์์ผ๋ฉด ์ ์ ๋๋ Kotlin ์ฝ๋์ ๋ ํ์ฉ, ๊ฒ์ฌ๋์ง ์์ ํ๋ณํ, ๊ฐ๋ณ ์ํ ๋ฑ์ ์กฐ์ฉํ ๋ค์ ๋์ ํ ์ ์์ต๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ด๋ฌํ ํํ์ ๋ค์ด ๋์ ๋์ด ์์ค ์ฝ๋ ์์ค์์๋ ์์ ์ ์ผ๋ก ๋ณด์ด๋ ํ์ง ์งํ๋ฅผ ์๊ณกํฉ๋๋ค.
Java์ Kotlin์ด ํผํฉ๋ ์์คํ ์์๋ ์ฝ๋ ํ์ง ์ ํธ๋ฅผ ๋ด๋ถ ์ผ๊ด์ฑ๋ณด๋ค๋ ๊ฒฝ๊ณ ๊ฐ ์ํธ ์์ฉ์ด๋ผ๋ ๊ด์ ์์ ํด์ํด์ผ ํฉ๋๋ค. ๋ณด๊ณ ๋ ๋ณต์ก๋๊ฐ ๋ฎ์ Kotlin ๋ชจ๋์ด๋ผ๋ ํ์ ์ด ๋์จํ Java API์ ํ์ ์ด ์๊ฒฉํ Kotlin ์ฌ์ฉ์ ์ฌ์ด์์ ์ํ์ฑ์ด ๋์ ์ด๋ํฐ ์ญํ ์ ํ ์ ์์ต๋๋ค. ์ํ ๋ณต์ก๋๋ ๊ท์น ์๋ฐ ํ์์ ๊ฐ์ ๊ธฐ์กด ์งํ๋ ์ด๋ฌํ ๊ฒฝ๊ณ ๊ธฐ๋ฐ ์ํ์ ์ ๋๋ก ํฌ์ฐฉํ์ง ๋ชปํ์ฌ ํ์ด ์๋ชป๋ ๋ฆฌํฉํ ๋ง ๋์์ ์ฐ์ ์ํ๊ฒ ๋ง๋ญ๋๋ค.
์ด๋ฌํ ์ญ๋์ฑ์ ๋ณด๋ค ๊ด๋ฒ์ํ ๊ด์ฐฐ ๊ฒฐ๊ณผ์ ์ผ์นํฉ๋๋ค. ํผํฉ ์ธ์ด ํ๋ํKotlin์ ๊ฒฝ์ฐ, ํ์ง ์ ํ๋ ๊ฐ๋ณ ๊ตฌ์ฑ ์์ ๋ด๋ถ๋ณด๋ค๋ ํตํฉ ๊ณผ์ ์์ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ํจ๊ณผ์ ์ธ Kotlin ๋ถ์์ ์ด๋ฌํ ํตํฉ ๊ณผ์ ์ ๋ช ํํ๊ฒ ๋๋ฌ๋ด์ด ์ํธ ์ด์ฉ์ฑ์ด ์ธ์ด ์์ค์ ๋ณด์ฅ์ ์ ํดํ๋ ์ง์ ์ ๊ฐ์กฐํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ๊ฐ์์ฑ์ด ์๋ค๋ฉด ๊ธฐ์ ์ ๊ตฌ๋ฌธ์ ๊น๋ํจ์ ๊ตฌ์กฐ์ ์์ ์ฑ์ผ๋ก ์ค์ธํ ์ํ์ด ์์ต๋๋ค.
์ปดํ์ผ ์ค๋ฅ ๋ฐ ์์ค ์์ค ์ธก์ ๊ฐ์ ์๊ณก
์ํฐํ๋ผ์ด์ฆ Kotlin ์์คํ ์ ์์ ์์ค ์ฝ๋๋ฅผ ๊ทธ๋๋ก ๋ฐฐํฌํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ญ ๋๋ค. ๋์ ์ฝ๋ ์์ฑ, ๋ฐ์ดํธ์ฝ๋ ์๋น, ํจํค์ง ์ต์ ํ ๋ฑ์ ํฌํจํ๋ ๋ค๋จ๊ณ ์ปดํ์ผ ํ์ดํ๋ผ์ธ์ ๊ฑฐ์ณ ์์ฑ๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ฐฐํฌํฉ๋๋ค. ์ด๋ฌํ ๋จ๊ณ๋ ์์ค ์ฝ๋ ์์ค์์ ์๋ํ๋ ์ ์ ๋ถ์ ๋๊ตฌ๋ก๋ ๊ด์ฐฐํ ์ ์๋ ๋ฐฉ์์ผ๋ก ์ ์ด ํ๋ฆ, ๋ฐ์ดํฐ ํ๋ฆ, ์ข ์์ฑ ๊ด๊ณ๋ฅผ ํฌ๊ฒ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์์ค ์ฝ๋ ๊ฒ์ฌ๋ง์ผ๋ก๋ ํ์ ํ ์ ์๋ ํ์ง ์ ํธ๊ฐ ๋ฐฐํฌ ๊ฐ๋ฅํ ๊ฒฐ๊ณผ๋ฌผ๋ก ๋ณํ๋๋ ๊ณผ์ ์์ ์ ์ง๋์ง ์์ ์ ์์ต๋๋ค.
ํํ ๋ฐ์ํ๋ ์๊ณก ์ค ํ๋๋ ์ด๋ ธํ ์ด์ ์ฒ๋ฆฌ์ ์ฝ๋ ์์ฑ ๊ณผ์ ์์ ๋น๋กฏ๋ฉ๋๋ค. Kotlin ํ๋ก์ ํธ๋ ๋น๋ ์์ ์ ํด๋์ค๋ฅผ ์์ฑํ๊ฑฐ๋, ์์กด์ฑ์ ์ฃผ์ ํ๊ฑฐ๋, ๊ตฌ์ฑ ๋ก์ง์ ํฉ์ฑํ๋ ํ๋ ์์ํฌ์ ์์กดํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ด๋ฌํ ์์ฑ๋ ์์๋ฅผ ๋ฌด์ํ๊ฑฐ๋ ๋ถํฌ๋ช ํ ๊ฒ์ผ๋ก ์ทจ๊ธํ์ฌ ์คํ ๋์์ ๋ํ ๋ถ์์ ํ ๋ชจ๋ธ์ ์์ฑํ ์ ์์ต๋๋ค. ์์ฑ๋ ์ฝ๋๋ฅผ ์ ์ธํ ํ์ง ์งํ๋ ๋ณต์ก์ฑ์ ๊ณผ์ํ๊ฐํ๊ณ ํ ์คํธ ์ฉ์ด์ฑ์ ๊ณผ๋ํ๊ฐํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
๋ ๋ค๋ฅธ ์๊ณก ์์ธ์ ์ํฐํฉํธ ๊ตฌ์ฑ์ ๋๋ค. Kotlin ๋ชจ๋์ ์ฌ๋ฌ ์๋น์ค ๋๋ Android ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ํจํค์ง๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด ๊ณผ์ ์์ ์ฝ๋๊ฐ ์ฌ๋ฐฐ์น๋๊ฑฐ๋, ์ ฐ์ด๋ฉ๋๊ฑฐ๋, ๋ค๋ฅธ ๊ตฌ์ฑ ์์์ ๋ณํฉ๋ ์ ์์ต๋๋ค. ์์ค ์์ค ๋ถ์์ผ๋ก๋ ์ด๋ฌํ ๋ณํ์ด ๊ฒฐํฉ๋๋ ์คํ ์์์ ์ด๋ค ์ํฅ์ ๋ฏธ์น ์ง ์ ํํ๊ฒ ์์ธกํ ์ ์์ต๋๋ค. ๊ฐ๋ณ์ ์ผ๋ก๋ ๋์จํ๊ฒ ๊ฒฐํฉ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ๋ชจ๋๋ ์ฌ๋ฌ ์ํฐํฉํธ์ ํฌํจ๋๋ฉด ํต์ฌ ์ข ์์ฑ์ด ๋ ์ ์์ต๋๋ค.
์ด๋ฌํ ์๊ณก์ ์์ ๋ ผ์๋ ๋ฌธ์ ์ ๋ค์ ๋ฐ์ํฉ๋๋ค. ์ฝ๋ ๋ณ๋์ฑ ์งํ๋น๋ ์ปจํ ์คํธ์ ๋ณํ๋ ์ฝ๋ ์ ์ง ๊ด๋ฆฌ์ ์ด์ ๋น์ฉ์ ๋ณ๊ฒฝํฉ๋๋ค. ์ํฐํฉํธ ์์ค์ ๋์์ ๊ณ ๋ คํ์ง ์๋ Kotlin ํ์ง ์ ํธ๋ ํ๋ํ ๋ ธ๋ ฅ์ ์๋ชป๋ ์์ญ์ผ๋ก ์ด๋ ์ํ์ด ์์ต๋๋ค. ๊ธฐ์ ์ ์๋ฅ์์ผ๋ก๋ ๋ณต์กํด ๋ณด์ด๋ ์ฝ๋์ ๋ฆฌํฉํ ๋ง์ ํฌ์ํ๋ฉด์ ์ฌ์ฌ์ฉ์ ํตํด ์ํ์ ์ฆํญ์ํค๋ ๋ ๊ฐ๋จํ ๊ตฌ์ฑ ์์๋ฅผ ๊ฐ๊ณผํ ์ ์์ต๋๋ค.
Kotlin ์ ์ ๋ถ์์ด ์ค์ง์ ์ธ ํจ๊ณผ๋ฅผ ์ ์งํ๋ ค๋ฉด ์ปดํ์ผ ์ํฐํฉํธ๋ฅผ ์ง์ ๋ชจ๋ธ๋งํ๊ฑฐ๋ ์์ค ์ฝ๋ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ํฐํฉํธ ์์ค์ ๊ฒฐ๊ณผ์ ์ฐ๊ด์์ผ์ผ ํฉ๋๋ค. ์ด๋ฌํ ์ฐ๊ด ๊ด๊ณ๊ฐ ์์ผ๋ฉด ์์คํ ๊ท๋ชจ๊ฐ ์ปค์ง๊ณ ๋น๋ ํ์ดํ๋ผ์ธ์ด ๋์ฑ ์ ๊ตํด์ง์ ๋ฐ๋ผ ํ์ง ์ ํธ์ ์์ธก๋ ฅ์ด ๋จ์ด์ง๋๋ค.
์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ์ด์ ์ํฅ๊ณผ ์๊ด๊ด๊ณ๊ฐ ์๋ ํ์ง ์ ํธ
Kotlin ์ ์ ๋ถ์์ด ๊ธฐ์ ์ ์์ฌ๊ฒฐ์ ์ ์ง์ํ๋ ค๋ฉด ํ์ง ์ ํธ๊ฐ ๋ฏธ์ ์ ํธ๋๊ฐ ์๋ ์ด์ ๊ฒฐ๊ณผ์ ์๊ด๊ด๊ณ๊ฐ ์์ด์ผ ํฉ๋๋ค. ์ฌ์ํ ์คํ์ผ ๋ณ๊ฒฝ์ด๋ ๋๊ตฌ ๊ตฌ์ฑ ์ ๋ฐ์ดํธ์ ๋ฐ๋ผ ๋ณ๋ํ๋ ์ ํธ๋ ์ฅ๊ธฐ์ ์ธ ๊ณํ ์๋ฆฝ์ ๋์์ด ๋์ง ์์ต๋๋ค. ๊ธฐ์ ์ ์ปดํ์ผ ์ฃผ๊ธฐ ์ ๋ฐ์ ๊ฑธ์ณ ์์ ์ ์ด๋ฉฐ Kotlin ์ฝ๋๊ฐ ์ฅ์ ๋ฐ์, ์ ์ง ๊ด๋ฆฌ ๋ ธ๋ ฅ ๋ฐ ๋ณ๊ฒฝ ์ํ์ ๋ฏธ์น๋ ์ํฅ์ ๋ฐ์ํ๋ ์งํ๋ฅผ ํ์๋ก ํฉ๋๋ค.
์ด๋ฌํ ์ ํธ๋ ๊ท์น ์๋ฐ๋ณด๋ค๋ ๊ตฌ์กฐ์ ํน์ฑ์์ ๋น๋กฏ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์๋ฅผ ๋ค์ด ํน์ Kotlin ๋ชจ๋์ ๋ํ ์์กด์ฑ ์ง์ค, ๋ณ๊ฒฝ ์ธํธ์ ํน์ ํด๋์ค๊ฐ ๋ํ๋๋ ๋น๋, Kotlin ์๋น์ค์์ ์์๋๋ ํธ์ถ ์ฒด์ธ์ ๊น์ด ๋ฑ์ด ์์ต๋๋ค. ์ด๋ฌํ ํน์ฑ์ ์ฝ๋๊ฐ ์ฌํฌ๋งท๋๊ฑฐ๋ ๋ถ๋ถ์ ์ผ๋ก ๋ฆฌํฉํ ๋ง๋๋๋ผ๋ ์ ์ง๋๋ฏ๋ก ์์คํ ์ ์ํ์ ๋ํ๋ด๋ ๋์ฑ ์ ๋ขฐํ ์ ์๋ ์งํ๊ฐ ๋ฉ๋๋ค.
์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ด๋ฌํ ์ ํธ์ ํจํด์ ์ฐ์ ์์ ๊ฒฐ์ ์ ๋์์ด ๋ ์ ์์ต๋๋ค. ์ํฅ๋ ฅ์ด ํฐ ๋ณ๊ฒฝ ์ฌํญ์ ์ง์์ ์ผ๋ก ๋ํ๋๋ Kotlin ๊ตฌ์ฑ ์์๋ ์ํคํ ์ฒ ๊ฒฉ๋ฆฌ ๋๋ ์ฌ์ธต์ ์ธ ํ ์คํธ ํฌ์๊ฐ ํ์ํ ์ ์์ต๋๋ค. ๋ฐ๋๋ก, ์์ ์ ์ธ ์์กด์ฑ ํ๋กํ์ ๊ฐ์ง ๊ตฌ์ฑ ์์๋ ์ํ ๋ถ๋ด์ด ๋ฎ์ ์ ์ง์ ์งํ๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ด์ ์ ๋ค์์์ ์ ์๋ ํต์ฐฐ๋ ฅ๊ณผ ์ผ๋งฅ์ํตํฉ๋๋ค. MTTR ๋ถ์ฐ ๊ฐ์์๋ฒฝํจ์ด ์๋ ์์ธก ๊ฐ๋ฅ์ฑ์ด ์ด์ ํ๋ณต๋ ฅ์ ์ข์ฐํ๋ ๊ณณ.
๊ท์น ๊ฐ์๋ ํ๋ฉด์ ์ธ ์งํ์๋ง ์ด์ ์ ๋ง์ถ๋ ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ด๋ฌํ ์ฅ๊ธฐ์ ์ธ ๊ด์ ์ ์ ๋๋ก ์ง์ํ์ง ๋ชปํฉ๋๋ค. ๋ถ์ ๊ฒฐ๊ณผ๊ฐ ๋งค๋ฒ ์ด๊ธฐํ๋๊ธฐ ๋๋ฌธ์ ๊ธฐ์ ์ดํด๊ด๊ณ์์๊ฒ ์ค์ํ ์ถ์ธ๋ฅผ ํ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ฝํ๋ฆฐ ํ์ง ๋ถ์์ ์ถ์ , ๋น๊ต, ๊ทธ๋ฆฌ๊ณ ์ค์ ๊ฒฐ๊ณผ์์ ์๊ด๊ด๊ณ๋ฅผ ํ์ ํ ์ ์๋ ์ ํธ๋ฅผ ์์ฑํ ๋ ๋น๋ก์ ์ ๋ต์ ๊ฐ์น๋ฅผ ์ง๋๋๋ค.
์ด๋ฌํ ๋งฅ๋ฝ์์ ํ์ง ์ ํธ์ ์์กด๋ ฅ์ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ฅธ ์ ์ฉ์ฑ์ผ๋ก ์ธก์ ๋ฉ๋๋ค. ํผํฉ ์ธ์ด ์ปดํ์ผ ๋ฐ ์งํํ๋ ๋น๋ ํ์ดํ๋ผ์ธ ์ ๋ฐ์ ๊ฑธ์ณ ์ง์๋๋ ์ ํธ๋ Kotlin์ด ๋ณต์กํ ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์์ ์์ ํ๊ฒ ํ์ฅ๋ ์ ์๋๋ก ํด์ค๋๋ค.
Gradle ๋ฐ CI ํ์ดํ๋ผ์ธ์์ Kotlin ์ ์ ๋ถ์์ ์ํํ ๋ ๋ณํ ํญ๋ฐ ํ์ ๋ฐ์ ์ ๋์ฒ ๋ฐฉ๋ฒ
Kotlin ๋ถ์์ ๊ฐ๋ณ ๋ชจ๋์ ๋ํด ์คํ๋ ๋๋ณด๋ค ์ํฐํ๋ผ์ด์ฆ ๋น๋ ํ์ดํ๋ผ์ธ์ ํตํฉ๋ ๋ ํจ์ฌ ๋ ๋ณต์กํด์ง๋๋ค. JVM ๋ฐ Android ํ๊ฒฝ์์ Gradle์ ๋จ์ํ ๋น๋ ๋๊ตฌ๊ฐ ์๋๋ผ ๋์ผํ ์ฝ๋๋ฒ ์ด์ค์์ ์ฌ๋ฌ ์ํฐํฉํธ๋ฅผ ์์ฑํ๋ ์ค์ผ์คํธ๋ ์ด์ ๊ณ์ธต์ ๋๋ค. ๋ณํ, ํ๋ ์ด๋ฒ, ํ๋กํ์ผ ๋ฐ ํ๊ฒฝ๋ณ ๊ตฌ์ฑ์ผ๋ก ์ธํด ์ ์ ๋ถ์์ด ๊ณ ๋ คํด์ผ ํ๋ ์คํ ์ปจํ ์คํธ์ ์๊ฐ ์ฆ๊ฐํฉ๋๋ค. ํ ๋ณํ์์ ์์ธก ๊ฐ๋ฅํ ๋์์ ๋ณด์ด๋ Kotlin ์ฝ๋๊ฐ ์กฐ๊ฑด๋ถ ์ปดํ์ผ ๊ฒฝ๋ก ๋ฐ ์ข ์์ฑ ํด๊ฒฐ ๋ฐฉ์์ ์ฐจ์ด๋ก ์ธํด ๋ค๋ฅธ ๋ณํ์์๋ ์ํ์ ์ด๋ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋ณํ ์ฝ๋์ ํญ๋ฐ์ ์ธ ์ฆ๊ฐ๋ ๋ถ์ ๊น์ด์ ํ์ดํ๋ผ์ธ ์์ ์ฑ ์ฌ์ด์ ๊ทผ๋ณธ์ ์ธ ๊ธด์ฅ ๊ด๊ณ๋ฅผ ๋ง๋ค์ด๋ ๋๋ค. ๊ธฐ์ ๋ค์ ์ ์ ๋ถ์์ด ๋น๋ ์๊ฐ์ ๋๋ฆฌ๊ฑฐ๋ ๋น๊ฒฐ์ ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ์ง ์์ผ๋ฉด์ ์ ๋ขฐํ ์ ์๋ ์ ํธ๋ฅผ ์ ๊ณตํด ์ค ๊ฒ์ ๊ธฐ๋ํฉ๋๋ค. Kotlin ๋ถ์์ด Gradle์ ์คํ ๋ชจ๋ธ์ ๊ณ ๋ คํ์ฌ ์ค๊ณ๋์ง ์์ผ๋ฉด, ๋ณํ ์ฝ๋๋ฅผ ๋ฌด์ํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ง๋์น๊ฒ ๋จ์ํํ๊ฑฐ๋ ์ค๋ณต๋๊ณ ์์ถฉ๋๋ ๊ฒฐ๊ณผ๋ก ํ์ดํ๋ผ์ธ์ ๊ณผ๋ถํ ์ํ๋ก ๋ง๋ค ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํจ๊ณผ์ ์ธ ๋ถ์์ Kotlin ์ฝ๋๊ฐ ์ค์ ๋ก ๋น๋, ํจํค์ง ๋ฐ ์ฌ๋ฌ ํ๊ฒฝ์ ๋ฐฐํฌ๋๋ ๋ฐฉ์๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค.
Gradle ๋น๋ ๊ทธ๋ํ๊ฐ Kotlin ๋ถ์ ์ ํ๋์ ๋ฏธ์น๋ ์ ์ฝ ์กฐ๊ฑด
Gradle ๋น๋ ๊ทธ๋ํ๋ Kotlin ์ปดํ์ผ ๋จ์์ ์์, ๋ฒ์ ๋ฐ ๊ตฌ์ฑ์ ์ ์ํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ ์์คํ ์์ ์ด๋ฌํ ๊ทธ๋ํ๋ ์ ํ์ ์ธ ๊ฒฝ์ฐ๊ฐ ๋๋ญ ๋๋ค. ์กฐ๊ฑด๋ถ ์์ ์คํ, ๋์ ์ข ์์ฑ ํด๊ฒฐ ๋ฐ ํ๊ฒฝ๋ณ ํ๋ฌ๊ทธ์ธ ๋์ ๋ฑ์ด ํฌํจ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋จ์ผ ์ปดํ์ผ ๊ฒฝ๋ก๋ฅผ ๊ฐ์ ํ๋ ์ ์ ๋ถ์ ๋๊ตฌ๋ ๋ค์ํ ์กฐ๊ฑด์์ Kotlin ์ฝ๋๊ฐ ์ด๋ป๊ฒ ์ด์ ๋ธ๋๋์ง ์ ๋๋ก ํฌ์ฐฉํ์ง ๋ชปํ์ฌ ๋ถ์์ ํ๊ฑฐ๋ ์คํด์ ์์ง๊ฐ ์๋ ๊ฒฐ๋ก ์ ๋์ถํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
ํํ ๋ฐ์ํ๋ ๋ฌธ์ ์ค ํ๋๋ ๋น๋ ๋ฒ์ ๋ณ ์ข ์์ฑ ๋ฌธ์ ์ ๋๋ค. Kotlin ๋ชจ๋์ ๊ฐ๋ฐ ํ๊ฒฝ, ํ๋ก๋์ ํ๊ฒฝ ๋๋ ์ง์ญ๋ณ ๋ฐฐํฌ ํ๊ฒฝ๊ณผ ๊ฐ์ ๋น๋ ํ๋กํ์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์ ์ฌ์ฉํ์ฌ ์ปดํ์ผ๋ ์ ์์ต๋๋ค. ๋จ์ผ ์ข ์์ฑ ์งํฉ๋ง์ ๊ธฐ์ค์ผ๋ก Kotlin ์ฝ๋๋ฅผ ํ๊ฐํ๋ ์ ์ ๋ถ์์ ๋ชจ๋ ๋น๋ ๋ฒ์ ์์ ๋์์ ์ ํํ๊ฒ ์์ธกํ ์ ์์ต๋๋ค. ์ด๋ฌํ ํ๊ณ๋ ์ ์ฝ ์กฐ๊ฑด์ด ์ ์ ๋ ์๊ฒฉํด์ง๋ ํ๊ฒฝ์ ํตํด ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐฐํฌํ ๋ ํนํ ์ค์ํด์ง๋๋ค.
๋ ๋ค๋ฅธ ๊ณผ์ ๋ ์์ ์์ค์ ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ๋๋ค. Gradle์ ๋น๋ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด ์ฌ๋ฌ ์์ ์ ๋์์ ์คํํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ํ์ดํ๋ผ์ธ์ ํตํฉ๋ ์ ์ ๋ถ์์ ๊ฒฝ์ ์กฐ๊ฑด์ด๋ ์ผ๊ด์ฑ ์๋ ์ํ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ด๋ฌํ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ๋์ ์คํ์ ์ํด ์ค๊ณ๋์ง ์์ ๋๊ตฌ๋ ์ฌํ ๋ถ๊ฐ๋ฅํ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ์ฌ ๋ถ์ ๊ฒฐ๊ณผ์ ๋ํ ์ ๋ขฐ๋๋ฅผ ๋จ์ด๋จ๋ฆด ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ถ์์ ์ฑ์ ๊ฐ์ฌ ๊ฐ๋ฅ์ฑ๊ณผ ๋ฐ๋ณต์ฑ์ ๋ํ ๊ธฐ์ ์๊ตฌ ์ฌํญ๊ณผ ์ง์ ์ ์ผ๋ก ์์ถฉ๋ฉ๋๋ค.
์ด๋ฌํ ๊ณผ์ ๋ค์ ์์ ๋ ผ์๋ ๋ ๊ด๋ฒ์ํ ๋ฌธ์ ๋ค์ ๋ฐ์ํฉ๋๋ค. CI ํ์ดํ๋ผ์ธ ๋ถ์ ๊ณผ์ ๋น๋ ์ค์ผ์คํธ๋ ์ด์ ์ ๋ณต์ก์ฑ์ผ๋ก ์ธํด ๋จ์ํ ๋ถ์ ํตํฉ์ ํจ๊ณผ๊ฐ ์ ํ๋๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. Gradle ๋น๋ ๊ทธ๋ํ์ ๊ตฌ์กฐ๋ฅผ ๋ฌด์ํ๋ Kotlin ์ ์ ๋ถ์์ ์ฝ๋๊ฐ ์์ฑ๋๊ณ ๋ฐฐํฌ๋๋ ์ค์ ๋ฐฉ์๊ณผ ๋๋จ์ด์ง ์ํ์ด ์์ต๋๋ค. ์ ํํ ๋ถ์์ ์ํด์๋ ์ด๋ฌํ ๊ทธ๋ํ๋ฅผ ๋ช ์์ ์ผ๋ก ๋ชจ๋ธ๋งํ๊ฑฐ๋ ๋ชจ๋ ๋ณํ์์ ์์ ํ๊ฒ ์ถ๋ก ํ ์ ์๋ ๊ฒฐ๋ก ์ผ๋ก โโ๋ถ์ ๋ฒ์๋ฅผ ์ ํํด์ผ ํฉ๋๋ค.
Android ๋ณํ ๋ฐ ๋ฒ์ ๋ณ Kotlin ๋์
์๋๋ก์ด๋ ํฌํธํด๋ฆฌ์ค๋ ์ ํ ๋ณํ, ๋น๋ ์ ํ, ๋ฆฌ์์ค ์ค๋ฒ๋ ์ด ๋ฑ์ ๋์ ํ์ฌ ๋ณํ ํญ์ฆ ๋ฌธ์ ๋ฅผ ๋์ฑ ์ ํ์ํค๋๋ฐ, ์ด๋ฌํ ์์๋ค์ Kotlin ์คํ ๊ฒฝ๋ก์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ๋จ์ผ Kotlin ํด๋์ค๋ ํ์ฑํ๋ ๋ณํ์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ๋ฆฌ์์ค, ๊ถํ ๋๋ ํ๋ซํผ API์ ์ํธ ์์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ฐจ์ด์ ์ ๊ณ ๋ คํ์ง ์์ ์ ์ ๋ถ์์ ํ๋ก๋์ ํ๊ฒฝ์์ ์ ํ ๋ฐ์ํ์ง ์๋ ๋ฌธ์ ๋ฅผ ํ๋๊ทธํ๊ฑฐ๋ ํน์ ๊ตฌ์ฑ์์๋ง ๋ํ๋๋ ๋ฌธ์ ๋ฅผ ๋์น๋ ๋ฑ ์ํ์ ์๋ชป ๋ถ๋ฅํ ์ ์์ต๋๋ค.
Kotlin์ ๋ฒ์ ๋ณ ๋์์ ์ข ์ข ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ, ์ค๋ ๋ฉ ๋ฐ ๋ฆฌ์์ค ์ ๊ทผ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. Kotlin ์ถ์ํ๋ ๊ท ์ผํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ฉด์ ๋ฒ์ ๋ณ ๊ตฌํ์ ์์ํจ์ผ๋ก์จ ์ด๋ฌํ ์ฐจ์ด์ ์ ์จ๊ธธ ์ ์์ต๋๋ค. ์์ค ์ฝ๋ ์์ค์์ ์๋ํ๋ ์ ์ ๋ถ์ ๋๊ตฌ๋ ํน์ ์คํ ๊ฒฝ๋ก๊ฐ ํน์ ๋น๋ ์กฐ๊ฑด์์๋ง ๋๋ฌ ๊ฐ๋ฅํ๋ค๋ ์ฌ์ค์ ๊ฐ์งํ์ง ๋ชปํ ์ ์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ํ์ง ์ ํธ๊ฐ ํํธํ๋์ด ๋ฒ์ ๊ฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ด๋ ค์์ง๋๋ค.
์ด๋ฌํ ํํธํ๋ ์ํฐํ๋ผ์ด์ฆ ๊ฑฐ๋ฒ๋์ค๋ฅผ ๋ณต์กํ๊ฒ ๋ง๋ญ๋๋ค. ๋ฆด๋ฆฌ์ค ์น์ธ์ ๋ด๋นํ๋ ํ์ ์ด๋ค ๋ถ์ ๊ฒฐ๊ณผ๊ฐ ์ด๋ค ์ํฐํฉํธ์ ์ ์ฉ๋๋์ง ์ ํํ ํ์ ํด์ผ ํฉ๋๋ค. ๋ถ์ ๊ฒฐ๊ณผ๊ฐ ๋น๋ ๋ณํ๊ณผ ๋ช ํํ๊ฒ ์ผ์นํ์ง ์์ผ๋ฉด ์์ฌ ๊ฒฐ์ ๊ถ์๋ ๋ณด์์ ์ธ ๊ฐ์ ์ ์ธ์ฐ๊ฒ ๋์ด ๋ฆด๋ฆฌ์ค๊ฐ ์ง์ฐ๋๊ฑฐ๋ ์์ ์์ ์ ๊ณผ๋ํ ํฌ์๋ฅผ ํ๊ฒ ๋ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ถ์ผ์น๋ก ์ธํ ๋น์ฉ์ ์๋๋ก์ด๋ ํฌํธํด๋ฆฌ์ค ๊ท๋ชจ๊ฐ ์ปค์ง๊ณ ๋ณํ ๋งคํธ๋ฆญ์ค๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ๋์ฑ ์ฆ๊ฐํฉ๋๋ค.
์ด ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ ์ฐ๋ ค์ ์ ์ฌํฉ๋๋ค. ์๋๋ก์ด๋ ๋น๋ ๋ณต์ก์ฑ์กฐ๊ฑด๋ถ ์คํ ๊ฒฝ๋ก๊ฐ ์ ์ ์ถ๋ก ์ ์ด๋ ค์์ ์ฃผ๋ ์ํฉ์์, Kotlin Android ๋ถ์ ๋๊ตฌ๊ฐ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ ค๋ฉด ๋ณํ๋ณ๋ก ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌ๋ถํ๊ฑฐ๋ ๋ถ์ ๋ฒ์์ ํ๊ณ๋ฅผ ๋ช ํํ ์ ์ํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ๋ช ํ์ฑ์ด ์๋ค๋ฉด ๊ธฐ์ ์ ๋ณํ๋ณ ๋ฌธ์ ๋ฅผ ์์คํ ์ ๋ฌธ์ ์ ํผ๋ํ์ฌ ์ฐ์ ์์ ์ค์ ๋ฐ ์ํ ํ๊ฐ๋ฅผ ์๊ณกํ ์ํ์ด ์์ต๋๋ค.
CI ํตํฉ ์ ์ฌ์ธต๋์ ์ฒ๋ฆฌ๋ ๊ฐ์ ์ ์ถฉ์
Kotlin ์ ์ ๋ถ์์ CI ํ์ดํ๋ผ์ธ์ ํตํฉํ๋ฉด ๋ถ์ ๊น์ด์ ํ์ดํ๋ผ์ธ ์ฒ๋ฆฌ๋ ์ฌ์ด์ ์ ์ถฉ์ ์ด ์๊น๋๋ค. ๊ธฐ์ ์ CI ์์คํ ์ด ๋น ๋ฅธ ํผ๋๋ฐฑ์ ์ ๊ณตํ๋ฉด์ ํ์ง ๊ฒ์ฆ์ ์ํํ๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค. ๋ชจ๋ ๊ฐ ๋๋ ๋ณํ ๊ฐ ๋์์ ๋ชจ๋ธ๋งํ๋ ค๋ ์ฌ์ธต ๋ถ์์ ์คํ ์๊ฐ์ ํฌ๊ฒ ์ฆ๊ฐ์์ผ ํ์ดํ๋ผ์ธ ํ์ฅ์ฑ์ ์ ํดํ ์ ์์ต๋๋ค. ๋ฐ๋๋ก, ์์ ๋ถ์์ ์ฒ๋ฆฌ๋์ ์ ์งํ์ง๋ง ์ฌ์ธต์ ์ธ ํต์ฐฐ๋ ฅ์ ํฌ์ํด์ผ ํฉ๋๋ค.
์ด๋ฌํ ์ ์ถฉ์ ์ ์ปดํ์ผ ๋น์ฉ๊ณผ ๋น๋ ๊ทธ๋ํ์ ๋ณต์ก์ฑ ๋๋ฌธ์ ํนํ Kotlin ํ๊ฒฝ์์ ๋๋๋ฌ์ง๋๋ค. Kotlin ์ปดํ์ผ์ ์ผ๋ฐ์ ์ผ๋ก Java ์ปดํ์ผ๋ณด๋ค ๋ฆฌ์์ค ์๋ชจ๊ฐ ๋ง์ผ๋ฉฐ, ๋ถ์ ๋จ๊ณ๋ฅผ ์ถ๊ฐํ๋ฉด ๋ณ๋ชฉ ํ์์ด ๋์ฑ ์ฌํ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ์ปค๋ฐ์์ ํธ๋ฆฌ๊ฑฐ๋๋ CI ํ์ดํ๋ผ์ธ์ ๋ถ์ ์คํ ๋น๋์ ๋ฒ์๋ฅผ ๊ท ํ ์๊ฒ ์กฐ์ ํด์ผ ํฉ๋๋ค. ์ผ๋ถ ์กฐ์ง์์๋ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํด ๊ฐ๋จํ ๊ฒ์ฌ๋ฅผ ์คํํ๊ณ , ์ฌ์ธต ๋ถ์์ ์์ฝ๋ ๋จ๊ณ๋ ํน์ ๋จ๊ณ์๋ง ์ํํ๋ ๋ฐฉ์์ ์ ํํฉ๋๋ค.
ํต์ฌ ๊ณผ์ ๋ ์ด๋ฌํ ๋จ๊ณ๋ณ ์ ๊ทผ ๋ฐฉ์์ ์ฌ๊ฐ์ง๋๊ฐ ์๊ธฐ์ง ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ์ฌ์ธต ๋ถ์์ด ๋๋ฌด ๋๋ฌผ๊ฒ ์คํ๋๋ฉด ์์คํ ์ ์ํ์ด ์ ๊ฒ ์์ ์ฌ์ด์ ๊ฐ์ง๋์ง ์๊ณ ๋์ ๋ ์ ์์ต๋๋ค. ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋์ ๋๋๋ก ์ค๊ณ๋์ด์ผ ํ๋ฉฐ, ์ด๋ฅผ ํตํด ๊ธฐ์ ์ ๊ฐ๋ณ ์คํ ๋ฒ์๊ฐ ์ข๋๋ผ๋ ์ถ์ธ๋ฅผ ์ถ์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์๊ตฌ ์ฌํญ์ ๋ค์์์ ์ค๋ช ํ๋ ๊ดํ๊ณผ ์ผ์นํฉ๋๋ค. ์ฑ๋ฅ ํ๊ท ํ์ดํ๋ผ์ธ์ฌ๊ธฐ์ ์ ํ์ ์ฌ์ธต ๋ถ์์ ํตํด ํต์ฐฐ๋ ฅ์ ํฌ๊ธฐํ์ง ์๊ณ ๋ ์ฒ๋ฆฌ๋์ ์ ์งํ ์ ์์ต๋๋ค.
๊ถ๊ทน์ ์ผ๋ก CI ํ์ดํ๋ผ์ธ์์ Kotlin ์ ์ ๋ถ์์ ์ด์ง ๊ฒ์ดํธ๊ฐ ์๋ ์ฐ์์ ์ธ ์ ํธ๋ก ์ทจ๊ธํด์ผ ํฉ๋๋ค. Gradle ๋ฐ CI ํ๊ฒฝ์ ๋ง์ถฐ ๋ถ์ ํตํฉ์ ์ค๊ณํ๋ ๊ธฐ์ ์ ๋ฐฐํฌ ์์ ์ฑ์ ์ ํดํ์ง ์์ผ๋ฉด์ ๋ ํฐ ๊ฐ์น๋ฅผ ์ฐฝ์ถํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด, ์ ์ ์์ด ๋ถ์ ๋ชจ๋ธ์ ํ์ดํ๋ผ์ธ์ ์ต์ง๋ก ์ ์ฉํ๋ ๊ธฐ์ ์ ์ง์ ๊ฐ๋ฅํ ๊ท ํ์ ์ด๋ฃจ๊ธฐ๋ณด๋ค๋ ์๋์ ์์ ์ฑ ์ฌ์ด์์ ์ ํ์ ๊ฐ์๋ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
Kotlin SAST ๋ฐ JVM, Android, ๋น๊ณต๊ฐ ์ ์ฅ์ ์ ๋ฐ์ ๊ฑธ์น ์์กด์ฑ ์ํ ๋ถ์
Kotlin ์์คํ ์ ๋ณด์ ๋ถ์์ ๋น๋ ๊ตฌ์กฐ ๋ฐ ์ข ์์ฑ ํ ํด๋ก์ง์ ๋ถ๋ฆฌ๋ ๋ ๋ฆฝ์ ์ธ ํ๋์ผ๋ก ์ทจ๊ธ๋ ์ ์์ต๋๋ค. ์ํฐํ๋ผ์ด์ฆ JVM ๋ฐ Android ํ๊ฒฝ์์ Kotlin ์ฝ๋๋ ์ผ๋ฐ์ ์ผ๋ก ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋ด๋ถ ๊ณต์ ๊ตฌ์ฑ ์์ ๋ฐ ์์ฑ๋ ์ํฐํฉํธ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ํ์ด ์ง์ ์ ์ผ๋ก ์ธ์งํ์ง ๋ชปํ๋ ์ํ์ ์ด๋ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์ ํ ์คํธ๋ Kotlin์ ๋จ์ํ ์์ฑ๋ ์์ค ์ฝ๋๋ก๋ง ๊ณ ๋ คํด์๋ ์ ๋๋ฉฐ, ์ทจ์ฝ์ ์ด ์ข ์์ฑ ๋ฐ ๊ตฌ์ฑ์ ํตํด ์ ํ๋๋ ํตํฉ ํ๋ฉด์ผ๋ก๋ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
Kotlin ์ํฐํฉํธ๊ฐ ์ฌ๋ฌ ๊ฐ์ ํ๋ผ์ด๋น ์ ์ฅ์์ ๋ด๋ถ ํจํค์ง ๊ด๋ฆฌ์์ ๋ถ์ฐ๋ ๊ฒฝ์ฐ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํฉ๋๋ค. ๋ณด์ ์ํ๋ Kotlin ์ฝ๋ ์์ฑ ๋ฐฉ์๋ฟ๋ง ์๋๋ผ ์ข ์์ฑ ์ ํ, ๋ฒ์ ๊ด๋ฆฌ ๋ฐ ์ฌ์ฉ ๋ฐฉ์์ ๋ฐ๋ผ์๋ ํฌ๊ฒ ์ข์ฐ๋ฉ๋๋ค. ๋จ์ผ ์ ์ฅ์ ๋ด์ ๋ณด์ ์ทจ์ฝ์ ๋ง์ ๋ถ์ํ๋ ์ ์ ๋ถ์์ ์ทจ์ฝํ ๊ตฌ์ฑ ์์๊ฐ ์๋น์ค ๋ฐ ๋ฐฐํฌ ๋จ์ ์ ๋ฐ์ ์ด๋ป๊ฒ ํ์ฐ๋๋์ง ํ์ ํ์ง ๋ชปํฉ๋๋ค. ํจ๊ณผ์ ์ธ Kotlin SAST๋ ์ํฐํ๋ผ์ด์ฆ ๊ท๋ชจ์์ ๊ทธ ์ ํจ์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ด๋ฌํ ๊ฒฝ๊ณ๋ฅผ ๋๋๋ค๋ฉฐ ์๋ํด์ผ ํฉ๋๋ค.
๋ณด์์ ๋ฏผ๊ฐํ ์คํ ๊ฒฝ๋ก์์์ Kotlin ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์
Kotlin ์์คํ ์ ๋ณด์ ์ทจ์ฝ์ ์ API์ ๋ช ์์ ์ธ ์ค์ฉ๋ณด๋ค๋ ๋ฐ์ดํฐ ํ๋ฆ์์ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. Kotlin์ ํํ๋ ฅ์ด ํ๋ถํ ๊ตฌ๋ฌธ์ ์ ๋ ฅ ์ ํจ์ฑ ๊ฒ์ฌ, ๋ณํ ๋ฐ ์ ๋ฌ์ ๊ฐ๊ฒฐํ ๊ตฌ์กฐ๋ก ์์ถํ์ฌ ์๋ ๊ฒ์ฌ๋ฅผ ํตํด ํ์ ํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค. ๋ฐ๋ผ์ ๋ณด์ ๋ถ์์ ์ง์ํ๋ ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ ๋ขฐํ ์ ์๋ ์ถ์ฒ์์ ๋ฐ์ํ ๋ฐ์ดํฐ๊ฐ Kotlin ์ฝ๋๋ฅผ ๊ฑฐ์ณ ๋ฏผ๊ฐํ ๋ถ๋ถ์ผ๋ก ์ด๋ป๊ฒ ํ๋ฅด๋์ง ์ถ์ ํด์ผ ํฉ๋๋ค.
์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์์ ์ด๋ฌํ ์คํ ๊ฒฝ๋ก๋ ์ฌ๋ฌ ๋ชจ๋๊ณผ ์๋น์ค์ ๊ฑธ์ณ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. Kotlin API ์๋ํฌ์ธํธ๋ ์ ๋ ฅ์ ๋ก์ปฌ์์ ๊ฒ์ฆํ๊ณ , ๊ณต์ ์ ํธ๋ฆฌํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฑฐ์ณ ์ต์ข ์ ์ผ๋ก ์ ์ฅํ๊ฑฐ๋ ํ์ ์์คํ ์ผ๋ก ์ ์กํ ์ ์์ต๋๋ค. ๋จ์ผ ๋ชจ๋ ๋ด์์๋ง ๋ฐ์ดํฐ ํ๋ฆ์ ํ๊ฐํ๋ ์ ์ ๋ถ์์ ๋ชจ๋ ๊ฒฝ๊ณ๋ฅผ ๋๋๋ค๋ฉฐ ๋ฐ์ํ๋ ๋ณํ์ ๋์น ์ํ์ด ์์ต๋๋ค. ์ด๋ฌํ ํ๊ณ๋ ํนํ Kotlin ์ฝ๋๊ฐ ๋์ผํ ์์ ์ฑ ๋ณด์ฅ์ ์ ์ฉํ์ง ์๋ ๋ ๊ฑฐ์ Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํธ ์์ฉํ ๋ ๋ฌธ์ ๊ฐ ๋ฉ๋๋ค.
์ ํํ ๋ฐ์ดํฐ ํ๋ฆ ๋ถ์์ ์ํด์๋ ๊ณ ์ฐจ ํจ์, ๋๋ค, ์ธ๋ผ์ธ ํจ์์ ๊ฐ์ Kotlin ํน์ ์ ๊ตฌ๋ฌธ๋ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ๊ตฌ๋ฌธ๋ค์ ํ๋ฉด์ ์ผ๋ก๋ง ๋ณด๋ฉด ์ค์ ์คํ ๊ฒฝ๋ก๋ฅผ ๋ชจํธํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ๋ณด์์ ์ด์ ์ ๋ง์ถ ์ ์ ๋ถ์์ ์ด๋ฌํ ์ถ์ํ๋ฅผ ํด์ํ์ฌ ๋ฐ์ดํฐ๊ฐ ๋ณํ๋๊ฑฐ๋ ์๋๋ ์ ์ฝ ์กฐ๊ฑด์ ๋ฒ์ด๋๋ ์ง์ ์ ์๋ณํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ํด์๊ฐ ์์ผ๋ฉด ์ค์ํ ์ทจ์ฝ์ ์ ๋์น๊ฑฐ๋ ๊ณผ๋ํ ์คํ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ณผ์ ๋ค์ ๋ณด๋ค ๊ด๋ฒ์ํ ๋ ผ์์ ๋งฅ๋ฝ์ ๊ฐ์ดํฉ๋๋ค. ์ค์ผ ํ๋ฆ ๋ถ์ํนํ, ์ํ์ ํ๊ฐํ๋ ๋ฐ ์์ด ์ ํ ๋ฐฉ์์ ์ดํดํ๋ ๊ฒ์ด ํ์์ ์ธ ๊ฒฝ์ฐ, ๊ธฐ์ ํ๊ฒฝ์ ๋ณต์ก์ฑ์ ๊ฒฌ๋๋ด๋ Kotlin SAST๋ ๋ฐ์ดํฐ ํ๋ฆ์ ์ต์ฐ์ ๊ณผ์ ๋ก ๋ค๋ฃจ๊ณ ๊ตฌ๋ฌธ ํจํด์๋ง ์์กดํ๋ ๊ฒ์ด ์๋๋ผ ์ค์ ์คํ ๊ฒฝ๋ก์ ์ฐ๊ด์ํต๋๋ค.
๊ณต์ ์ฝํ๋ฆฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์์กด์ฑ ์ํ ์ฆํญ
Kotlin ํ๊ฒฝ์์ ์์กด์ฑ ์ํ์ ๋จ์ผ ๋น๋ ํ์ผ์ ์ ์ธ๋ ์ง์ ์ ์ธ ์์กด์ฑ์๋ง ๊ตญํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋๋ญ ๋๋ค. ๊ธฐ์ ๋ค์ ์ฌ๋ฌ ์๋น์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋๋ ๊ณต์ Kotlin ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋์ ์ทจ์ฝ์ ์ด ๋ฐ์ํ๋ฉด ๋น ๋ฅด๊ฒ ํ์ฐ๋์ด ํฌํธํด๋ฆฌ์ค ์ ์ฒด์ ์ํ์ ์ฆํญ์ํฌ ์ ์์ต๋๋ค. ์์กด์ฑ ์ฌ์ฉ ํจํด์ ๊ณ ๋ คํ์ง ์๋ ์ ์ ๋ถ์์ผ๋ก๋ ์ด๋ฌํ ์ทจ์ฝ์ ์ ํ๊ธ ํจ๊ณผ๋ฅผ ์ ํํ๊ฒ ํ๊ฐํ ์ ์์ต๋๋ค.
JVM ์ํ๊ณ์์ Kotlin ์ํฐํฉํธ๋ Java ์ข ์์ฑ, ์ ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ํ๋ซํผ ๊ตฌ์ฑ ์์์ ํจ๊ป ์กด์ฌํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ฒ์ ์ถฉ๋, ์ ฐ์ด๋ฉ๋ ์ข ์์ฑ ๋ฐ ์ผ๊ด์ฑ ์๋ ์ ๋ฐ์ดํธ ์ฃผ๊ธฐ๋ ์ํฉ์ ๋์ฑ ๋ณต์กํ๊ฒ ๋ง๋ญ๋๋ค. ์ ์ธ๋ ์ข ์์ฑ์๋ง ์ด์ ์ ๋ง์ถ๋ ์ ์ ๋ถ์ ๋๊ตฌ๋ Kotlin ์ฝ๋๊ฐ ๋ฐํ์์ ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์ ๋ก ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ๊ฐ๊ณผํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ทจ์ฝํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ์ด์ ์ผ๋ก ํฌํจ๋์ง๋ง ํน์ ์กฐ๊ฑด์์๋ง ํธ์ถ๋ ์ ์์ผ๋ฏ๋ก ์ํ ํ๋กํ์ด ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
๊ธฐ์ ๋ณด์ ํ์ ์ทจ์ฝํ ์ข ์์ฑ์ด ์ค์ ๋ก ์ฌ์ฉ๋๋ ๊ณณ๊ณผ ๋จ์ํ ์กด์ฌํ๋ ๊ณณ์ ๊ตฌ๋ถํ๋ ๋ฐ ๋ํ ๊ฐ์์ฑ์ด ํ์ํฉ๋๋ค. ์ด๋ฌํ ๊ตฌ๋ถ์ ์ฐ์ ์์ ์ค์ ๋ฐ ๋ณต๊ตฌ ๊ณํ ์๋ฆฝ์ ์ค์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ข ์์ฑ ์ ์ธ๊ณผ ํธ์ถ ๊ทธ๋ํ, ์ฌ์ฉ ํจํด์ ์ฐ๊ด์ํค๋ ์ ์ ๋ถ์์ ๋ชจ๋ ์ข ์์ฑ์ ๋์ผํ๊ฒ ์ทจ๊ธํ๋ ์ค์บ๋๋ณด๋ค ํจ์ฌ ๋ ์ค์ง์ ์ธ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ์ฐ๊ด ๊ด๊ณ๊ฐ ์๋ค๋ฉด, ํ์ ์ํ๋๊ฐ ๋์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ฐ๊ณผํ ์ฑ ์ํฅ๋ ฅ์ด ๋ฎ์ ๋ฌธ์ ํด๊ฒฐ์ ๋ ธ๋ ฅ์ ๋ญ๋นํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ณ ๋ ค ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ ์ฐ๋ ค๋ฅผ ๋ฐ์ํฉ๋๋ค. ์์กด์ฑ ํผ๋ ๊ณต๊ฒฉKotlin SAST๋ ์์กด์ฑ ๊ด๋ฆฌ ๋ฐฉ์์ด ๋ณด์ ์ํ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ ๋ถ์ผ์ ๋๋ค. ์์กด์ฑ ์ฌ์ฉ ๋ถ์์ ํตํฉํ Kotlin SAST๋ ๊ธฐ์ ์ด ์ด๋ก ์ ์ธ ๋ ธ์ถ๊ณผ ์ด์์์ ์ํ์ ๊ตฌ๋ถํ์ฌ ๋ณด๋ค ์ ํํ ๋ณด์ ์กฐ์น๋ฅผ ์ทจํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
Kotlin ๊ณต๊ธ๋ง์์ ๋น๊ณต๊ฐ ์ ์ฅ์ ๋ฐ ์ ๋ขฐ ๊ฒฝ๊ณ
๋ง์ ๊ธฐ์ ์ฉ Kotlin ํ๊ฒฝ์์๋ ๋ด๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐฐํฌ ๋ฐ ์ข ์์ฑ ๊ด๋ฆฌ์ ํ๋ผ์ด๋น ์ ์ฅ์๋ฅผ ์ ๊ทน์ ์ผ๋ก ํ์ฉํฉ๋๋ค. ์ด๋ฌํ ์ ์ฅ์๋ ์กฐ์ง ๋ด ์ฝ๋์ ์ข ์์ฑ์ ํ๋ฆ์ ๊ฒฐ์ ํ๋ ์ ๋ขฐ ๊ฒฝ๊ณ๋ฅผ ์ค์ ํฉ๋๋ค. ์ ์ ๋ถ์์ ์๋ฏธ ์๋ ๋ณด์ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์ด๋ฌํ ๊ฒฝ๊ณ๋ฅผ ์กด์คํ๊ณ ๋ฉด๋ฐํ ๊ฒํ ํด์ผ ํฉ๋๋ค. ๋จ์ํ ๊ณต๊ฐ๋ ์ข ์์ฑ๋ง ์ค์บํ๋ ๊ฒ์ผ๋ก๋ ๋ด๋ถ ๋ฐฐํฌ ๋ฐฉ์์์ ๋ฐ์ํ๋ ์ํ์ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๋น๊ณต๊ฐ ์ ์ฅ์์๋ ๋์ผํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฌ๋ฌ ๋ฒ์ , ์คํ์ ์ธ ๋น๋, ๊ทธ๋ฆฌ๊ณ ๊ฒ์ฆ ์์ค์ด ๋ค์ํ ์ํฐํฉํธ๊ฐ ํฌํจ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. Kotlin ํ๋ก์ ํธ๋ ๋น๋ ๊ตฌ์ฑ, ํ๊ฒฝ ๋๋ ํ ์ ํธ๋์ ๋ฐ๋ผ ์ด๋ฌํ ์ํฐํฉํธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฐ๋ณ์ฑ์ ๊ณ ๋ คํ์ง ์์ ์ ์ ๋ถ์์ ๋ฐฐํฌ๋ ์์คํ ์ ๋ณด์ ์ํ๋ฅผ ์๋ชป ๋ํ๋ผ ์ ์์ต๋๋ค. ํ ํ๊ฒฝ์์ ์์ ํ ๋ฒ์ ์ ์ข ์์ฑ์ด ๋ค๋ฅธ ํ๊ฒฝ์์๋ ๋์ผํ ๋ฒ์ ์ผ๋ก ์ฌ์ฉ๋๋ค๋ ๋ณด์ฅ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ๋ณด์ ๋ถ์์ ์ํฐํฉํธ ๋ฉํ๋ฐ์ดํฐ ๋ฐ ์ ์ฅ์ ์ฌ์ฉ ํจํด๊ณผ ํตํฉ๋์ด์ผ ํฉ๋๋ค. ์ด๋ค Kotlin ํ๋ก์ ํธ๊ฐ ์ด๋ค ์ํฐํฉํธ๋ฅผ ์ด๋ค ์กฐ๊ฑด์์ ์ฌ์ฉํ๋์ง ํ์ ํ๋ ๊ฒ์ ์ทจ์ฝ์ ํ๊ฐ์ ํ์์ ์ ๋๋ค. ์ด๋ฌํ ์๊ตฌ ์ฌํญ์ ๊ฐ์ฌ ๊ฐ๋ฅ์ฑ๊ณผ ์ถ์ ์ฑ์ด ์๋ฌดํ๋ ๊ท์ ํ๊ฒฝ์์ ๋์ฑ ์ค์ํด์ง๋๋ค. ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ ๋ค์ํ ํ๊ฒฝ์์ ๊ฒ์ฆ ๊ฐ๋ฅํ๊ณ ์ฌํ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
์ด๋ฌํ ๊ณผ์ ๋ค์ ๋ค์์์ ๋ค๋ฃฌ ์ฃผ์ ๋ค๊ณผ ์ผ๊ด์ฑ์ด ์์ต๋๋ค. ์ํํธ์จ์ด ๊ตฌ์ฑ ๋ถ์๊ณต๊ธ๋ง ๊ฐ์์ฑ์ด ๋ณด์ ๊ฑฐ๋ฒ๋์ค์ ๊ธฐ๋ฐ์ด ๋๋ ํ๊ฒฝ์์, ํ๋ผ์ด๋น ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋์ ํน์ฑ์ ๊ณ ๋ คํ Kotlin SAST๋ ๊ธฐ์ ์ด ๊ท ์ผํ ์ข ์์ฑ ๋์์ ๊ฐ์ ํ๋ ๋์ ์ ๋ขฐ ๊ฒฝ๊ณ๋ฅผ ๋ช ์์ ์ผ๋ก ์ถ๋ก ํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
์ข ํฉ์ ์ผ๋ก ๋ณผ ๋, ์ฝํ๋ฆฐ ๋ณด์ ๋ถ์์ ์ ์ฅ์ ๋ก์ปฌ ์ค์บ์ ๋์ด ๋ฐ์ดํฐ ํ๋ฆ, ์์กด์ฑ ์ฌ์ฉ, ๊ณต๊ธ๋ง ๊ตฌ์กฐ๊น์ง ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ๊ทธ๋์ผ๋ง ์ ์ ๋ถ์์ ํตํด ๊ธฐ์ ๊ท๋ชจ์ JVM ๋ฐ ์๋๋ก์ด๋ ํฌํธํด๋ฆฌ์ค ์ ๋ฐ์ ๊ฑธ์ณ ์ ๋ณด์ ๊ธฐ๋ฐํ ์ํ ๊ด๋ฆฌ๋ฅผ ์ง์ํ ์ ์์ต๋๋ค.
Kotlin ๋ชจ๋, ์๋น์ค ๋ฐ API ์ ๋ฐ์ ๊ฑธ์น ๋ณ๊ฒฝ ์์ ์ฑ์ ์ํ ์ํฅ ๋ถ์
Kotlin์ด ์ํฐํ๋ผ์ด์ฆ JVM ๋ฐ Android ์์คํ ์ ๋ฐ์ ๊ฑธ์ณ ๋์ ๋จ์ ๋ฐ๋ผ ์ฃผ์ ์ํ์ ๋ก์ปฌ ๊ฒฐํจ์์ ์๋์น ์์ ๋ณ๊ฒฝ ์ ํ๋ก ์ฎ๊ฒจ๊ฐ๊ณ ์์ต๋๋ค. Kotlin ์ฝ๋๋ ์ข ์ข ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์๋น์ค ๊ณ์ฝ ๋ฐ ์ฅ๊ธฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ API์ ์ด๋ฏธ ์์กดํ๋ ์์คํ ์ ๋์ ๋ฉ๋๋ค. Kotlin ๋ชจ๋์ ๋จ์ผ ์์ ์ ์ฌ๋ฌ ํ์ ์์คํ ์ ์ํฅ์ ๋ฏธ์น ์ ์์ผ๋ฉฐ, ๋๋ก๋ ๋ณ๊ฒฝ์ ์ํํ๋ ํ์ด ๊ทธ ์ํฅ์ ์ฆ์ ํ์ ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ์ํฅ ๋ถ์์ ๊ณ ๋ คํ์ง ์๋ ์ ์ ๋ถ์์ ๋๊ท๋ชจ ํ๊ฒฝ์์ ์์ ํ ๋ฐ์ ์ ์ง์ํ์ง ๋ชปํฉ๋๋ค.
์ํฅ ๋ถ์์ ์ฝ๋์ ์ ํ์ฑ๋ณด๋ค๋ ๋ณ๊ฒฝ ์์ ์ฑ์ ์ค์ฌ์ผ๋ก ์ ์ ๋ถ์์ ์ฌ๊ตฌ์ฑํฉ๋๋ค. ์ด์ ํต์ฌ์ ์ฝํ๋ฆฐ ์ฝ๋๊ฐ ๊ฐ๋ณ์ ์ผ๋ก ์ ํจํ์ง ์ฌ๋ถ๊ฐ ์๋๋ผ, ๋ณ๊ฒฝ ์ฌํญ์ด ์์คํ ์ ์ฒด์ ์คํ ๊ฒฝ๋ก, ์ข ์์ฑ ๋ฐ ํตํฉ ๋์์ ์ด๋ค ์ํฅ์ ๋ฏธ์น๋์ง์ ๋๋ค. ์์ญ, ์๋ฐฑ ๊ฐ์ ์ฝํ๋ฆฐ ๊ธฐ๋ฐ ์๋น์ค๋ฅผ ์ด์ํ๋ ๊ธฐ์ ์์๋ ์ด๋ฌํ ๊ด์ ์ด ๋ฆด๋ฆฌ์ค๋ฅผ ์กฐ์ ํ๊ณ ์ฐ์์ ์ธ ์ฅ์ ๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
Kotlin ์์คํ ์์ ๋ชจ๋ ๊ฐ ์์กด์ฑ ์ ํ
Kotlin ์์คํ ์ ์ข ์ข ๊ธฐ๋ฅ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋น์ค๋ก ๋ถํดํ๋ ๋ชจ๋ํ ์ํคํ ์ฒ์ ์์กดํฉ๋๋ค. ์ด๋ฌํ ๋ชจ๋์ฑ์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด์ง๋ง, ์์กด์ฑ ์ ํ์ ๋ณต์ก์ฑ๋ ์ฆ๊ฐ์ํต๋๋ค. Kotlin ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ๊ธฐ ๋ค๋ฅธ ์ด์ ํ๊ฒฝ๊ณผ ๊ธฐ๋์น๋ฅผ ๊ฐ์ง ์ฌ๋ฌ ๋ชจ๋์์ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ํฅ ๋ถ์์ ์ ํ์ ์ธ ๊ด๊ณ๋ฅผ ๊ฐ์ ํ๋ ๋์ , ๋ชจ๋ ๊ทธ๋ํ๋ฅผ ํตํด ์์กด์ฑ์ด ์ด๋ป๊ฒ ์ ํ๋๋์ง ์ถ์ ํด์ผ ํฉ๋๋ค.
๊ฐ๋ณ ๋ชจ๋์ ์ด์ ์ ๋ง์ถ ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ผ๋ฐ์ ์ผ๋ก ํ์ ๋ชจ๋์ ์ฌ์ฉ ๋งฅ๋ฝ์ ๊ณ ๋ คํ์ง ์๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค. ์ด์ ๋์กฐ์ ์ผ๋ก, ์ํฅ ์ค์ฌ ๋ถ์์ Kotlin ์ฌ๋ณผ์ด ์ฐธ์กฐ๋๋ ์์น์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ด๋ฌํ ๊ด๊ณ๋ฅผ ์ด๋ป๊ฒ ๋ณํ์ํค๋์ง ๋ณด์ฌ์ฃผ๋ ์์กด์ฑ ๊ทธ๋ํ๋ฅผ ์ฌ๊ตฌ์ฑํฉ๋๋ค. ์ด๋ฌํ ์ฌ๊ตฌ์ฑ์ Kotlin ๋ชจ๋์ด ๋ฐ์ดํฐ ํด๋์ค, ๋ด์ธ๋ ๊ณ์ธต ๊ตฌ์กฐ ๋๋ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฌ์ฉ๋๋ ํ์ฅ ํจ์๋ฅผ ๋ ธ์ถํ๋ ๊ฒฝ์ฐ ํนํ ์ค์ํฉ๋๋ค. ์ฌ์ํ ์๊ทธ๋์ฒ ๋ณ๊ฒฝ์ด๋ผ๋ ์์ค ์ฝ๋ ์์ค์์๋ ์ฆ์ ๋๋ฌ๋์ง ์๋ ๊ด๋ฒ์ํ ์ํฅ์ ๋ฏธ์น ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์์๋ ๋น๋ ํ์ ๊ตฌ์ฑ์ผ๋ก ์ธํด ์์กด์ฑ ์ ํ๊ฐ ๋์ฑ ๋ณต์กํด์ง๋๋ค. Kotlin ๋ชจ๋์ ๊ณต์ ์ํฐํฉํธ๋ก ํจํค์ง๋๊ฑฐ๋, ๋ ํฐ ๋ฐ์ด๋๋ฆฌ์ ํฌํจ๋๊ฑฐ๋, ๋ณตํฉ ์๋น์ค์ ์ผ๋ถ๋ก ๋ฐฐํฌ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ํฅ ๋ถ์์์๋ ์์ค ์ฝ๋ ์์ค์ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ์ํฐํฉํธ ์์ค์ ์ฌ์ฉ๋์ ์ฐ๊ด์์ผ์ผ ํฉ๋๋ค. ์ด๋ฌํ ์ฐ๊ด ๊ด๊ณ๊ฐ ์์ผ๋ฉด ํ์ ๋ณ๊ฒฝ ๋ฒ์๋ฅผ ๊ณผ์ํ๊ฐํ๊ณ ์ข ์ ์์คํ ์ ๋ถ์์ ํ๊ฒ ๋ง๋๋ ์์ ์ฌํญ์ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ณผ์ ๋ค์ ๋ ผ์๋ ๋ฌธ์ ๋ค๊ณผ ์ผ๋งฅ์ํตํฉ๋๋ค. ์์กด์ฑ ๋งคํ ์ ๋ตKotlin ํ๊ฒฝ์์๋ ์ ์ด์ ๊ด๊ณ๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ํ ๊ด๋ฆฌ์ ํต์ฌ์ ๋๋ค. ํจ๊ณผ์ ์ธ Kotlin ์ํฅ ๋ถ์์ ์ง์ ์ ์ธ ์ข ์์ฑ๋ฟ๋ง ์๋๋ผ ๋ชจ๋๊ณผ ์ํฐํฉํธ ์ ๋ฐ์ ๊ฑธ์น ์ ์ฒด ์ ํ ์ฒด์ธ์ ํ์ ํฉ๋๋ค. ์ด๋ฌํ ๊ฐ์์ฑ์ ํตํด ๊ธฐ์ ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋์ฑ ์ ์คํ๊ฒ ๊ณํํ๊ณ , ๋ฐฐํฌ ์์๋ฅผ ์์ ํ๊ฒ ์กฐ์ ํ๋ฉฐ, ํ ์คํธ ๋ ธ๋ ฅ์ด ๊ฐ์ฅ ์ค์ํ ๊ณณ์ ์ง์คํ ์ ์์ต๋๋ค.
Kotlin ์๋น์ค์ API ์งํ ๋ฐ ๊ณ์ฝ ์์ ์ฑ
Kotlin์ ํนํ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์์ ์๋น์ค API์ ๊ณต์ ๊ณ์ฝ์ ์ ์ํ๋ ๋ฐ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. ๋ฐ์ดํฐ ํด๋์ค, ๋ด์ธ๋ ์ธํฐํ์ด์ค, ํํ๋ ฅ์ด ํ๋ถํ ํ์ ์์คํ ๋๋ถ์ Kotlin์ ๋๋ฉ์ธ ๊ฒฝ๊ณ๋ฅผ ๋ชจ๋ธ๋งํ๋ ๋ฐ ๋งค๋ ฅ์ ์ ๋๋ค. ํ์ง๋ง ์ด๋ฌํ ๊ตฌ์ฑ ์์๋ค์ API๊ฐ ์งํํจ์ ๋ฐ๋ผ ๋ฏธ๋ฌํ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ํฅ ๋ถ์์์๋ Kotlin API ๋ณ๊ฒฝ์ด ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฌ์ฉ์์๊ฒ ์ด๋ค ์ํฅ์ ๋ฏธ์น๋์ง ํ๊ฐํด์ผ ํฉ๋๋ค.
ํํ ๋ฐ์ํ๋ ์ํ ์ค ํ๋๋ ์์ค ์ฝ๋ ์์ค์์๋ ํ์ ํธํ์ฑ์ด ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ง๋ ฌํ ๋์์ด๋ ๋ฐํ์ ๊ธฐ๋์น๋ฅผ ๋ณ๊ฒฝํ๋ ์์ ์ฌํญ์ ๋๋ค. ์๋ฅผ ๋ค์ด Kotlin ๋ฐ์ดํฐ ํด๋์ค๋ฅผ ์์ ํ๋ฉด JSON ํํ ๋ฐฉ์, ๊ธฐ๋ณธ๊ฐ ๋๋ null ํ์ฉ ์ฌ๋ถ ์๋ฏธ๊ฐ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ํฅ์ ๊ณ ๋ คํ์ง ์๋ ์ ์ ๋ถ์์ ๋ฐํ์์ ์๋น์๋ฅผ ์ค์๋์ํค๋ ๋ณ๊ฒฝ ์ฌํญ์ ์น์ธํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด ์ํฅ ๋ถ์์ ์๋น์ค ์ ๋ฐ์ ๊ฑธ์ณ API ๊ณ์ฝ์ด ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ์ถ์ ํ๊ณ ํธํ์ฑ ๊ฐ์ ์ด ์๋ฐ๋ ์ ์๋ ๋ถ๋ถ์ ์๋ณํฉ๋๋ค.
๋๊ท๋ชจ ๊ธฐ์ ํ๊ฒฝ์์๋ API ์ฌ์ฉ์๋ฅผ ๋จ์ผ ํ์์ ํ์ ํ๊ฑฐ๋ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ญ ๋๋ค. Kotlin ์๋น์ค๋ ์ธ๋ถ ํํธ๋, ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ , ๋๋ ๊ฐ๊ธฐ ๋ค๋ฅธ ์ผ์ ์ผ๋ก ๋ฐ์ ํ๋ ๋ ๊ฑฐ์ ์์คํ ๋ฑ์์ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ํฅ ๋ถ์ ์์๋ API ๋ณ๊ฒฝ ์ฌํญ์ ๋ก์ปฌ ๋ฆฌํฉํ ๋ง์ด ์๋ ์์คํ ์ด๋ฒคํธ๋ก ๊ฐ์ฃผํด์ผ ํฉ๋๋ค. ํน์ ํ๋๋ ๋์์ ์์กดํ๋ ์ฌ์ฉ์๋ฅผ ํ์ ํ๋ ๊ฒ์ ๋ฒ์ ๊ด๋ฆฌ, ์๋น์ค ์ค๋จ, ๊ทธ๋ฆฌ๊ณ ๋ฐฐํฌ ์ ๋ต ์๋ฆฝ์ ์ค์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ด๋ฌํ ์ฐ๋ ค๋ ๋ค์๊ณผ ๊ฐ์ ์ฃผ์ ์ ๋ฐ์ ํ๊ฒ ๊ด๋ จ๋์ด ์์ต๋๋ค. API ๋ณ๊ฒฝ ๊ด๋ฆฌ์์ ์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ฒด๊ณ์ ์ธ ๊ฑฐ๋ฒ๋์ค๊ฐ ํ์ํ ์ํฉ์์, API ์ฌ์ฉ ๋ฐ ์งํ๋ฅผ ๋ชจ๋ธ๋งํ๋ Kotlin ์ํฅ ๋ถ์์ ์ฑ ์๊ฐ ์๋ ๋ณํ ๊ด๋ฆฌ์ ํ์ํ ๊ทผ๊ฑฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฃผ๊ด์ ์ธ ์ํ ํ๊ฐ์์ ๊ตฌ์ฒด์ ์ธ ์์กด์ฑ ์ฌ์ค์ ๊ธฐ๋ฐํ ๋ ผ์๋ก ์ ํํ์ฌ ๊ธฐ์ ์ด ํ์ ๊ณผ ์์ ์ฑ ์ฌ์ด์ ๊ท ํ์ ์ ์งํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
์๋น์ค ๋ฐ ๋ฐฐํฌ ๊ฒฝ๊ณ ์ ๋ฐ์ ๊ฑธ์ณ ๋ณด์์ ๋ณ๊ฒฝํ์ธ์.
Kotlin ์ํฅ ๋ถ์์ ์๋น์ค ๊ฒฝ๊ณ ๋ฐ ๋ฐฐํฌ ํ๊ฒฝ ์ ๋ฐ์ ๊ฑธ์ณ ๋ณ๊ฒฝ ์ฌํญ์ด ์ด๋ป๊ฒ ์ ํ๋๋์ง๋ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ๋ถ์ฐ ์์คํ ์์ Kotlin ์๋น์ค๋ ๋คํธ์ํฌ ํธ์ถ, ๋ฉ์์ง ํ ๋ฐ ๊ณต์ ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ํตํด ์ํธ ์์ฉํฉ๋๋ค. ํ ์๋น์ค์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ค๋ฅธ ์๋น์ค์ ๊ฐ์ ์ ๋ณ๊ฒฝํ์ฌ ๋จ์ผ ์ฝ๋๋ฒ ์ด์ค์ ๊ตญํ๋ ์ ์ ๋ถ์์ผ๋ก๋ ์์ธกํ ์ ์๋ ๋ฐํ์ ์ค๋ฅ๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋งฅ๋ฝ์์ ์ํฅ ๋ถ์์ ์๋น์ค ๊ฐ์ ํธ์ถ ์ฒด์ธ๊ณผ ์ํธ ์์ฉ ํจํด์ ์ฌ๊ตฌ์ฑํฉ๋๋ค. ํน์ Kotlin ์ปดํฌ๋ํธ๋ฅผ ํธ์ถํ๋ ์๋น์ค์ ๊ทธ ์กฐ๊ฑด์ ํ์ ํ๋ ๊ฒ์ด์ฃ . ์ด ์ ๋ณด๋ ๋ฐฐํฌ ๊ณํ, ํนํ ๋จ๊ณ์ ๋ฐฐํฌ๋ ๋ธ๋ฃจ/๊ทธ๋ฆฐ ์ ๋ต์ ์ฌ์ฉํ๋ ํ๊ฒฝ์์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ ์ํฅ์ ๋ฐ๋ ์๋น์ค๋ฅผ ํ์ ํ๋ฉด ๋ฐฐํฌ ์์ ๊ฒฐ์ ๊ณผ ๋กค๋ฐฑ ๊ณํ ์๋ฆฝ์ ๋์์ด ๋ฉ๋๋ค.
๋ฐฐํฌ ๊ฒฝ๊ณ๋ ๋ณ๊ฒฝ ์์ ์ฑ์ ๋์ฑ ๋ณต์กํ๊ฒ ๋ง๋ญ๋๋ค. Kotlin ์ฝ๋๋ ๊ตฌ์ฑ ํ๋๊ทธ, ๊ธฐ๋ฅ ํ ๊ธ ๋๋ ํ๊ฒฝ๋ณ ์ข ์์ฑ์ ๋ฐ๋ผ ๋์์ด ๋ฌ๋ผ์ง๋ฉด์ ํ๊ฒฝ๋ณ๋ก ๋ค๋ฅด๊ฒ ๋ฐฐํฌ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ํฅ ๋ถ์์ ์ ํ์ฑ์ ์ ์งํ๊ธฐ ์ํด ๋ฐฐํฌ ๋ฉํ๋ฐ์ดํฐ์ ํตํฉ๋์ด์ผ ํฉ๋๋ค. ํ ํ๊ฒฝ์์ ์์ ํ ๋ณ๊ฒฝ ์ฌํญ์ด ๊ตฌ์ฑ์ด๋ ์ข ์์ฑ ๋ฒ์ ์ ์ฐจ์ด๋ก ์ธํด ๋ค๋ฅธ ํ๊ฒฝ์์๋ ์ํ์ ์ด๋ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ณผ์ ๋ค์ ๋ค์๊ณผ ๊ฐ์ ๋ ผ์๋ค๊ณผ ๋งฅ๋ฝ์ ๊ฐ์ดํฉ๋๋ค. ์ฐ์ ์คํจ ๋ฐฉ์ง๊ฒฝ๊ณ๋ฅผ ๋๋๋๋ ๊ฐ์์ฑ์ด ๋ณต์๋ ฅ์ ํ์์ ์ธ ํ๊ฒฝ์์, Kotlin์ ์๋น์ค ๋ฐ ๋ฐฐํฌ ์ ๋ฐ์ ๊ฑธ์น ์ํฅ ๋ถ์์ ๊ธฐ์ ์ด ์ฅ์ ๋ฐ์ ์ด์ ์ ์ฅ์ ๋ชจ๋๋ฅผ ์์ธกํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ์ด๋ ์ ์ ๋ถ์์ ๋ณต์กํ ์์คํ ์ ๋ฐ์ ๊ฑธ์ณ ์ ์ด๋ ์งํ๋ฅผ ์ง์ํ๋ ๋ฅ๋์ ์ธ ์์ ๋ฉ์ปค๋์ฆ์ผ๋ก ์ ํํฉ๋๋ค.
Kotlin ์ํฅ ๋ถ์์ ์์กด์ฑ ์ ํ, API ์์ ์ฑ ๋ฐ ์๋น์ค ๊ฐ ์ํธ ์์ฉ์ ์ค์ ์ ๋์ด ๊ธฐ์ ๋ณ๊ฒฝ ์์ ์ฑ์ ํต์ฌ ๊ณผ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ์ด๋ฅผ ํตํด JVM ๋ฐ Android ํ๊ฒฝ ์ ๋ฐ์ ๊ฑธ์ณ Kotlin์ ํ์ฉ๋๊ฐ ์ฆ๊ฐํ๋๋ผ๋ ์์คํ ์ ์์ ์๊ฒ ๋ฐ์ ์ํฌ ์ ์๋ ํ์ํ ๋งฅ๋ฝ์ ์ ๊ณตํฉ๋๋ค.
Kotlin ์ ์ ๋ถ์์ ์ฌ๊ฐ์ง๋: ๋ฆฌํ๋ ์ , ์์ฑ๋ ์ฝ๋ ๋ฐ ํ๋ ์์ํฌ ์คํ
๊ฐ์ฅ ๋ฐ์ ๋ Kotlin ์ ์ ๋ถ์ ๋๊ตฌ์กฐ์ฐจ๋ ์ธ์ด ๊ธฐ๋ฅ, ๋น๋ ์๊ฐ ๋ณํ ๋ฐ ํ๋ ์์ํฌ ๊ธฐ๋ฐ ์คํ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๊ตฌ์กฐ์ ์ ์ฝ ์กฐ๊ฑด ํ์์ ์๋ํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ JVM ๋ฐ Android ํ๊ฒฝ์์๋ ์ด๋ฌํ ์ ์ฝ ์กฐ๊ฑด์ผ๋ก ์ธํด ๋ถ์ ๊ฒฐ๊ณผ์ ์ ํ๋๊ฐ ๋จ์ด์ง๊ฑฐ๋ ๋ฐํ์ ํ์ค์ ์ ๋๋ก ๋ฐ์ํ์ง ๋ชปํ๋ ์ฌ๊ฐ์ง๋๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด๋ฌํ ์ฌ๊ฐ์ง๋๋ฅผ ์ธ์ํ๋ ๊ฒ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ํด์ํ๊ณ ์ฝ๋ ํ์ง์ด๋ ์์ ์ฑ์ ๋ํ ์๋ชป๋ ํ์ ์ ํผํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
์ ์ ๋ถ์์ ์ฌ๊ฐ์ง๋๋ ์ ์ ๋ถ์์ ์คํจ๋ฅผ ์๋ฏธํ๋ ๊ฒ์ด ์๋๋๋ค. ์ด๋ ์์ค ์ฝ๋์ ๋น๋ ์ํฐํฉํธ๋ง์ผ๋ก๋ ์ถ๋ก ํ ์ ์๋, ์คํ ๋์์ด ๋์ ์ผ๋ก ๋๋ ๊ฐ์ ์ ์ผ๋ก ๋ํ๋๋ ์์ญ์ ๋ฐ์ํฉ๋๋ค. ๋ฆฌํ๋ ์ , ์ฝ๋ ์์ฑ, ๊ทธ๋ฆฌ๊ณ IDC(Inversion of Control) ํ๋ ์์ํฌ์ ํฌ๊ฒ ์์กดํ๋ Kotlin ์์คํ ์์๋ ์ด๋ฌํ ์ฌ๊ฐ์ง๋๊ฐ ๋์ฑ ์ปค์ง๋๋ค. ์ด๋ฌํ ํ๊ณ๋ฅผ ์ธ์งํ๊ณ ๊ด๋ฆฌํ๋ ๊ธฐ์ ์ ์ ์ ๋ถ์๊ณผ ๋ณด์์ ์ธ ๊ฐ์์ฑ ํ๋ณด ๋ฉ์ปค๋์ฆ์ ํจ๊ณผ์ ์ผ๋ก ๊ฒฐํฉํ ์ ์์ต๋๋ค.
๋ฆฌํ๋ ์ ๊ณผ ๋์ ๋์คํจ์น๋ก ์ธํด Kotlin ์คํ ๊ฒฝ๋ก๊ฐ ๋ชจํธํด์ง
๋ฆฌํ๋ ์ ์ ์ฝํ๋ฆฐ๊ณผ JVM ์ํ๊ณ, ํนํ ์ค์ ๋ณด๋ค๋ ๊ด๋ก๋ฅผ ์ค์ํ๋ ํ๋ ์์ํฌ์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ์ ๋๋ค. ์์กด์ฑ ์ฃผ์ ์ปจํ ์ด๋, ์ง๋ ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ ์คํธ ํ๋ ์์ํฌ๋ ํด๋์ค, ๋ฉ์๋, ํ๋์ ๋ํ ๋ฆฌํ๋ ์ ์ ๊ทผ์ ์์ฃผ ํ์ฉํฉ๋๋ค. ์ ์ ๋ถ์ ๊ด์ ์์ ๋ณผ ๋, ๋ฆฌํ๋ ์ ์ ์คํ ๋์์ด ๋ช ์์ ์ธ ํธ์ถ ์ง์ ์ด ์๋ ๋ฐํ์์ ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ ๋ถํ์ค์ฑ์ ์ผ๊ธฐํฉ๋๋ค.
Kotlin์ ์ธ์ด์ ํน์ง์ ์ด๋ฌํ ๋ถํ์ค์ฑ์ ์ฆํญ์ํฌ ์ ์์ต๋๋ค. ํ์ฅ ํจ์, ์์ ์์ฑ, ๊ณ ์ฐจ ํจ์๋ ๋ฆฌํ๋ ์ ์ ํตํด ํธ์ถ๋๊ฑฐ๋ ํ๋ ์์ํฌ ๊ตฌ์ฑ ์์์ ๋์ ์ผ๋ก ๋ฑ๋ก๋ ์ ์์ต๋๋ค. ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ๋์์ ๊ทผ์ฌ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ฑฐ๋ ์์ ํ ๋ฌด์ํ์ฌ ๋ถ์์ ํ ํธ์ถ ๊ทธ๋ํ๋ฅผ ์์ฑํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ํฅ ๋ถ์ ๋ฐ ์์กด์ฑ ์ถ์ ์ Kotlin ์์คํ ์ ์ค์ ์คํ ํ๋ฉด์ ์ ๋๋ก ๋ํ๋ด์ง ๋ชปํ ์ ์์ต๋๋ค.
๊ธฐ์ ํ๊ฒฝ์์ ์ด๋ฌํ ๋ถ์์ ํ ํํ์ ์ํ ํ๊ฐ๋ฅผ ์๊ณกํ ์ ์์ต๋๋ค. Kotlin ์๋น์ค๋ ์ ์ ํธ์ถ ๊ทธ๋ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๋ ๋์จํ๊ฒ ๊ฒฐํฉ๋ ๊ฒ์ฒ๋ผ ๋ณด์ผ ์ ์์ง๋ง, ์ค์ ๋ก๋ ํ๋ ์์ํฌ ๊ตฌ์ฑ์ ๋ฐ๋ผ ์ฌ๋ฌ ๋ฆฌํ๋ ํฐ๋ธ ํธ์ถ ๊ฒฝ๋ก์ ์ฐธ์ฌํฉ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ๊ตฌ์ฑ ์์์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ถ์์์ ์ ์ํ๋ ๊ฒ๋ณด๋ค ๋ ๊ด๋ฒ์ํ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ถ์ผ์น๋ ํนํ ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํฉํ ๋ง ๋๋ ๋ฐฐํฌ ๊ฒฐ์ ์ ๊ทผ๊ฑฐ๋ก ์ฌ์ฉํ ๋ ๋ฌธ์ ๊ฐ ๋ฉ๋๋ค.
์ด ๊ณผ์ ๋ ์ด์ ์ ํ๊ตฌํ๋ ๋ฌธ์ ๋ค์ ๋ฐ์ํฉ๋๋ค. ๋์ ๋ฐฐ์ก ๋ถ์๋ฐํ์ ํด์์ด ์ ์ ์ถ๋ก ์ ๋ณต์กํ๊ฒ ๋ง๋๋ ๊ฒฝ์ฐ, ๋ฆฌํ๋ ์ ์ ๊ณ ๋ คํ์ง ์์ Kotlin ๋ถ์ ๊ฒฐ๊ณผ๋ ์ ์คํ๊ฒ ํด์ํด์ผ ํฉ๋๋ค. ๊ธฐ์ ๋ค์ ์ข ์ข ์ ์ ๋ถ์ ๊ฒฐ๊ณผ์ ๋ฐํ์ ๊ด์ฐฐ ๊ฒฐ๊ณผ๋ฅผ ์ฐ๊ด์ํค๊ฑฐ๋, ํต์ฌ ๊ฒฝ๋ก์์ ๋ฆฌํ๋ ์ ์ฌ์ฉ์ ์ ํํ๋ ์ํคํ ์ฒ์ ์ ์ฝ์ ์ ์ฉํ์ฌ ์ด๋ฌํ ์ฌ๊ฐ์ง๋๋ฅผ ์ํํฉ๋๋ค.
์ฑ์ฐฐ์ด ์ด๋์, ๊ทธ๋ฆฌ๊ณ ์ผ๋ง๋ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉ๋๋์ง ์ดํดํ๋ฉด ํ์ ์ ์ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋งฅ๋ฝํํ ์ ์์ต๋๋ค. ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ ์ ์ธ ๊ฒ์ผ๋ก ๋ฐ์๋ค์ด๊ธฐ๋ณด๋ค๋ ์จ๊ฒจ์ง ์คํ ๊ฒฝ๋ก์ ๊ฐ๋ฅ์ฑ์ ๋ฐ๋ผ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฏธ๋ฌํ ํด์์ ๋ถ์ ๊ฒฐ๊ณผ์ ๋ํ ์ ๋ขฐ๋ฅผ ์ ์งํ๋ฉด์ ๋ด์ฌ๋ ํ๊ณ๋ฅผ ์ธ์ ํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์์ฑ๋ ์ฝ๋ ๋ฐ ์ฃผ์ ์ฒ๋ฆฌ๊ฐ ๋ถ์ ์ ํ๋์ ๋ฏธ์น๋ ์ํฅ
์ฝ๋ ์์ฑ์ ์ฝํ๋ฆฐ ํ๋ก์ ํธ์์ ํํ ์ฌ์ฉ๋๋ ๋ฐฉ์์ผ๋ก, ์ด๋ ธํ ์ด์ ํ๋ก์ธ์, ๋น๋ ํ์ ํ๋ฌ๊ทธ์ธ, ํ๋ ์์ํฌ ํด๋ง ๋ฑ์ ํตํด ์ด๋ฃจ์ด์ง๋๋ค. ์์ฑ๋ ์ฝ๋์๋ ๋ฐ์ดํฐ ์ ๊ทผ ๊ณ์ธต, ์ง๋ ฌํ ๋ก์ง, ์์กด์ฑ ์ฃผ์ ์ฐ๊ฒฐ, ์ค์ ์ค์บํด๋ฉ ๋ฑ์ด ํฌํจ๋ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ฝ๋๋ ์คํ ๊ณผ์ ์ ์์ ํ ์ฐธ์ฌํ์ง๋ง, ์ ์ ๋ถ์ ๋๊ตฌ์์๋ ์ข ์ข ๋ณด์ด์ง ์๊ฑฐ๋ ๋ถ๋ถ์ ์ผ๋ก๋ง ๋ชจ๋ธ๋ง๋ฉ๋๋ค.
Kotlin ๋ถ์ ๋๊ตฌ๋ ์์ฑ๋ ์์ค ์ฝ๋๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด ๋ค์ํฉ๋๋ค. ์ด๋ค ๋๊ตฌ๋ ๋ ธ์ด์ฆ๋ฅผ ์ค์ด๊ธฐ ์ํด ์์ฑ๋ ์ฝ๋๋ฅผ ์์ ํ ์ ์ธํ๋ ๋ฐ๋ฉด, ๋ค๋ฅธ ๋๊ตฌ๋ ์ถ์ฒ๋ฅผ ๊ณ ๋ คํ์ง ์๊ณ ์์ฑํฉ๋๋ค. ๋ ์ ๊ทผ ๋ฐฉ์ ๋ชจ๋ ๋จ์ ์ด ์์ต๋๋ค. ์ ์ธ ๋ฐฉ์์ ๋ณต์ก์ฑ์ ๊ณผ์ํ๊ฐํ๊ฑฐ๋ ์ข ์์ฑ์ ๋์น ์ ์์ต๋๋ค. ์ถ์ฒ๋ฅผ ๊ณ ๋ คํ์ง ์๊ณ ํฌํจํ๋ฉด ๋ฌธ์ ๋ฐ์ ๊ฑด์๊ฐ ์ฆ๊ฐํ๊ณ , ์์ฑ๋ ๋ก์ง๊ณผ ์์ฑ๋ ์ค์บํด๋ฉ์ ๊ตฌ๋ถํ๊ธฐ ์ด๋ ค์์ง๋๋ค.
์ํฐํ๋ผ์ด์ฆ ์์คํ ์์ ์์ฑ๋ ์ฝ๋๋ ๋ฐฐํฌ๋ ์ํฐํฉํธ์ ์๋น ๋ถ๋ถ์ ์ฐจ์งํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ด๋ ธํ ์ด์ ๊ธฐ๋ฐ ํ๋ ์์ํฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋์์ ํต์ฌ์ธ ๊ฐ์ฒด ์๋ช ์ฃผ๊ธฐ ๋๋ ๋ฐ์ดํฐ ๋ณํ์ ์กฐ์จํ๋ ํด๋์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์์๋ฅผ ๊ฐ๊ณผํ๋ ์ ์ ๋ถ์์ ์คํ ๊ฒฝ๋ก ๋ฐ ์ข ์์ฑ ๊ด๊ณ๋ฅผ ์๋ชป ํ์ ํ ์ ์์ผ๋ฉฐ, ํนํ ์์ฑ๋ ์ฝ๋๊ฐ Kotlin ๊ตฌ์ฑ ์์ ๊ฐ์ ์ํธ ์์ฉ์ ๋งค๊ฐํ๋ ๊ฒฝ์ฐ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
์ด๋ฌํ ๊ณผ์ ๋ค์ ์์ ๋ ผ์๋ ์ฐ๋ ค ์ฌํญ๋ค๊ณผ ์ผ๋งฅ์ํตํฉ๋๋ค. ์์ฑ๋ ์ฝ๋ ์ฒ๋ฆฌ์ฝํ๋ฆฐ ๊ฐ๋ฐํ์ ์์ฑ๋ ์ํฐํฉํธ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง์ ๋ฐ๋ผ ๋ถ์์ ์ ํ๋๊ฐ ๋ฌ๋ผ์ง๋ค๋ ์ ์ ์ธ์งํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ ํํ ๋๊ตฌ๊ฐ ์์ฑ๋ ์์ค๋ฅผ ์ด๋ป๊ฒ ํตํฉํ๋์ง ์ดํดํ๊ณ ๊ทธ์ ๋ง์ถฐ ํด์์ ์กฐ์ ํด์ผ ํฉ๋๋ค. ์์ค ์ฝ๋๋ง์ ์ด์ฉํ ๋ถ์์ ์์คํ ๋์์ ๋ํ ๋ถ์ ํํ ๊ฒฐ๋ก ์ผ๋ก โโ์ด์ด์ง ์ ์์ต๋๋ค.
์ด๋ฌํ ์ฌ๊ฐ์ง๋๋ฅผ ํด์ํ๋ ค๋ฉด ๋ช ์์ ์ธ ๊ตฌ์ฑ๊ณผ ๋ฌธ์ํ๊ฐ ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๊ธฐ์ ์ ์์ฑ๋ ์ฝ๋์ ํ๊ทธ๋ฅผ ์ง์ ํ๊ฑฐ๋, ์ ์ฉ ๋ชจ๋๋ก ๋ถ๋ฆฌํ๊ฑฐ๋, ์ ์ ๋ถ์์ ์ํฐํฉํธ ์์ค ๊ฒ์ฌ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์์ฑ๋ ์ฝ๋๋ฅผ ๋ณ๋์ ๋ฒ์ฃผ๋ก ๊ตฌ๋ถํ์ฌ ํ์ํจ์ผ๋ก์จ ํ์ ์ง์ ์์ฑํ Kotlin ๋ก์ง๊ณผ ํผ๋ํ์ง ์๊ณ ๊ทธ ์ํฅ์ ๋ ์ ํ๊ฐํ ์ ์์ต๋๋ค.
ํ๋ ์์ํฌ ๊ธฐ๋ฐ ์คํ ๋ฐ ์ ์ด๊ถ ์ญ์ ์ ํ๊ณ
์ต์ ์ฝํ๋ฆฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ ํ๋ฆ ๊ด๋ฆฌ๋ฅผ ์ํด ์ ์ด์ ์ญ์ (Inversion of Control, ICC) ๋ฐฉ์์ ์ฌ์ฉํ๋ ํ๋ ์์ํฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ฝํ๋ฆฐ ์ปดํฌ๋ํธ๋ ๋ฉ์๋๋ฅผ ์ง์ ํธ์ถํ๋ ๋์ , ํ๋ ์์ํฌ์ ๋ฑ๋ก๋์ด ์ปดํฌ๋ํธ์ ์๋ช ์ฃผ๊ธฐ์ ์ํธ ์์ฉ์ ๊ด๋ฆฌํฉ๋๋ค. ์ด๋ฌํ ๋ชจ๋ธ์ ๋ชจ๋์ฑ์ ํฅ์์ํค์ง๋ง, ๋์์ ์ถ๋ก ํ๊ธฐ ์ํด ๋ช ์์ ์ธ ์ ์ด ํ๋ฆ์ ์์กดํ๋ ์ ์ ๋ถ์์ ๋ณต์กํ๊ฒ ๋ง๋ญ๋๋ค.
ํ๋ ์์ํฌ ๊ธฐ๋ฐ ์คํ ๋ฐฉ์์ ์ง์ ์ ๊ณผ ํธ์ถ ์์๋ฅผ ๋ชจํธํ๊ฒ ๋ง๋ญ๋๋ค. Kotlin ํจ์๋ ์ง์ ํธ์ถ๋ณด๋ค๋ ์ค์ , ์ด๋ ธํ ์ด์ ๋๋ ๋ฐํ์ ์ด๋ฒคํธ์ ๋ฐ๋ผ ์คํ๋ ์ ์์ต๋๋ค. ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ด๋ฌํ ํจ์๋ค์ด ์ ํ๋ฆฌ์ผ์ด์ ๋์์์ ํต์ฌ์ ์ธ ์ญํ ์ ํจ์๋ ๋ถ๊ตฌํ๊ณ ์ฌ์ฉ๋์ง ์๊ฑฐ๋ ์ํฅ๋ ฅ์ด ๋ฎ์ ๊ฒ์ผ๋ก ์๋ชป ๋ถ๋ฅํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ค๋ถ๋ฅ๋ ์ํฅ ๋ถ์์ ์๊ณกํ๊ณ ์์ ํ์ง ์์ ๋ฆฌํฉํ ๋ง ๊ฒฐ์ ์ ์ด๋ํ ์ ์์ต๋๋ค.
์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์์ ํ๋ ์์ํฌ๋ ์น ์ปจํธ๋กค๋ฌ๋ถํฐ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ ๋ฐ ๋ฉ์์ง ์๋น์๊น์ง ์ฌ๋ฌ ๊ณ์ธต์ ๊ฑธ์ณ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ๊ณ์ธต์ ์ฐธ์ฌํ๋ Kotlin ์ฝ๋๋ ํ๋ ์์ํฌ ์ฝ๋ฐฑ์ ํตํด ํธ์ถ๋ ์ ์๋๋ฐ, ์ด๋ ์ ์ ์ผ๋ก ์ถ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ด๋ฌํ ์ค์ผ์คํธ๋ ์ด์ ์ ๊ณ ๋ คํ์ง ์์ ๋ถ์ ๊ฒฐ๊ณผ๋ ๊ฒฐํฉ๋๋ฅผ ๊ณผ์ํ๊ฐํ๊ณ ๋ชจ๋์ฑ์ ๊ณผ๋ํ๊ฐํ๋ ์ํ์ ์ด๋ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ ํ์ ๋ค์๊ณผ ๊ฐ์ ์ฃผ์ ๋ค์ ๋ฐ์ํฉ๋๋ค. ํ๋ ์์ํฌ ์คํ ๊ฐ์์ฑ๋ฐํ์ ์ธ์ฌ์ดํธ๊ฐ ์ ์ ์ถ๋ก ์ ๋ณด์ํ๋ ๊ฒฝ์ฐ์ ๋๋ค. Kotlin ์์คํ ์ ๋ํด ์ ์ ๋ถ์์๋ง ์์กดํ๋ ๊ธฐ์ ์ ํ๋ ์์ํฌ ๊ตฌ์ฑ ๋ฐ ๋ฐํ์ ์ํ์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ ์ค์ํ ์ํธ ์์ฉ์ ๋์น ์ ์์ต๋๋ค.
์ด๋ฌํ ์ฌ๊ฐ์ง๋๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์ํคํ ์ฒ์ ๊ท์จ๊ณผ ๋ถ์์ ์ธ์์ ๊ฒฐํฉํด์ผ ํฉ๋๋ค. ํ์ ํ๋ ์์ํฌ ์ฌ์ฉ ํจํด์ ์ ํํ๊ฑฐ๋, ๋ผ์ดํ์ฌ์ดํด ํํฌ๋ฅผ ๋ช ์์ ์ผ๋ก ๋ฌธ์ํํ๊ฑฐ๋, ๋ฐํ์ ์๊ฒฉ ์ธก์ ๋ฐ์ดํฐ๋ฅผ ํตํฉํ์ฌ ์ ์ ๊ฐ์ ์ ๊ฒ์ฆํ ์ ์์ต๋๋ค. ์ ์ ๋ถ์์ ์ฌ์ ํ โโ์ ์ฉํ์ง๋ง, ํ๋ ์์ํฌ๊ฐ ์คํ ๋ฐฉ์์ ์ด๋ป๊ฒ ๋ณํ์ํค๋์ง์ ๋ํ ์ดํด๋ฅผ ๋ฐํ์ผ๋ก ๊ฒฐ๋ก ์ ๋์ถํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ์ฌ๊ฐ์ง๋๋ฅผ ์ธ์ํจ์ผ๋ก์จ ๊ธฐ์ ์ ์ฝํ๋ฆฐ ๋ถ์์ ๋งน๋ชฉ์ ์ธ ๊ถ์๊ฐ ์๋ ์ ๋ขฐํ ์ ์๋ ์ง์นจ์ผ๋ก ํ์ฉํ ์ ์์ต๋๋ค.
์ง์ญ์ ์ ํ์ฑ์์ ๊ธฐ์ ๋ณํ ์์ ๊ฐ๊น์ง
Kotlin ์ ์ ๋ถ์์ ์์คํ ๋์์ ๋ง์ถฐ ๋ฐ์ ํ๋ ๊ธฐ๋ฅ์ผ๋ก ๊ฐ์ฃผํ๊ธฐ๋ณด๋ค๋ ๋จ์ํ ๋๊ตฌ ๋ชฉ๋ก์ผ๋ก๋ง ์ทจ๊ธํ ๋ ์ค์ง์ ์ธ ํ๊ณ์ ๋๋ฌํฉ๋๋ค. ์ํฐํ๋ผ์ด์ฆ JVM ๋ฐ Android ํ๊ฒฝ์์ Kotlin ์ฝ๋๋ ๊ฑฐ์ ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ์ง ์์ต๋๋ค. ๋ ๊ฑฐ์ ์ ์ฝ ์กฐ๊ฑด, ๋ถ์ฐ๋ ์์ ๊ถ, ๊ทธ๋ฆฌ๊ณ ๊ธด ์ด์ ์๋ช ์ฃผ๊ธฐ๋ก ํ์ฑ๋ ์ํคํ ์ฒ ๋ด์์ ์ปดํ์ผ, ๋ณํ, ํจํค์ง ๋ฐ ์คํ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ ์ ๋ถ์์ ์ด๋ฌํ ์์คํ ์ ๋ฐ์ ๊ฑธ์ณ ๋ณ๊ฒฝ ์ฌํญ์ด ์ด๋ป๊ฒ ์ ํ๋๋์ง ์ดํดํ๊ธฐ ์ํ ๋ ๊ด๋ฒ์ํ ๋ ธ๋ ฅ์ ์ผํ์ผ๋ก ํด์๋์ด์ผ ํฉ๋๋ค.
์ฑ์ํ Kotlin ํฌํธํด๋ฆฌ์ค ์ ๋ฐ์์ ๊ด์ฐฐ๋๋ ๋ฐ์ ๊ณผ์ ์ ์ผ๊ด์ ์ ๋๋ค. ์ด๊ธฐ ๋จ๊ณ์์๋ ๋ก์ปฌ ์ ํ์ฑ๊ณผ ๊ฐ๋ฐ์ ์์ฐ์ฑ์ ์ค์ ์ ๋ก๋๋ค. ๋์ ๊ท๋ชจ๊ฐ ์ปค์ง์ ๋ฐ๋ผ ๋น๋ ์์ ์ฑ, ๋ณด์ ์ํ ๋ฐ ๋ฆด๋ฆฌ์ค ์กฐ์ ์ ๋ํ ๊ด์ฌ์ด ๋์์ง๋๋ค. ๊ฒฐ๊ตญ์๋ ๋ณ๊ฒฝ ์์ ์ฑ์ด ๊ฐ์ฅ ์ค์ํ ๊ณ ๋ ค ์ฌํญ์ด ๋ฉ๋๋ค. ์ด ๋จ๊ณ์์ ์ ์ ๋ถ์์ ๊ฐ์น๋ ๋ฐ๊ฒฌ๋ ๊ฒฐ๊ณผ์ ์๋ณด๋ค๋ ํ๋ก๋์ ํ๊ฒฝ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ค๋ช ํ ์ ์๋ ๋ฅ๋ ฅ์ ๋ ํฌ๊ฒ ์ข์ฐ๋ฉ๋๋ค.
์ด ๊ธ์ ์ฌ๋ฌ ๋ถ๋ถ์์ ๊ณตํต์ ์ธ ํจํด์ด ๋ํ๋ฉ๋๋ค. Kotlin ๋ค์ดํฐ๋ธ ๋๊ตฌ๋ ์ธ์ด ๊ท์จ์ ๊ฐํํ๊ณ ๋ก์ปฌ ๋ฌธ์ ๋ฅผ ๋๋ฌ๋ด๋ ๋ฐ ํ์ํฉ๋๋ค. CI์ ํตํฉ๋ ๋ถ์ ๋๊ตฌ๋ ํผ๋๋ฐฑ์ ํ์คํํ๊ณ ์ฌํ์ฑ์ ํฅ์์ํต๋๋ค. ๋ณด์ ์ค์บ๋๋ ์ง์ค์ ์ธ ๊ฐ์ ์ด ํ์ํ ์ทจ์ฝ์ ์ ํ์ ์๋ณํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ๋๊ตฌ๋ค ์ค ์ด๋ ํ๋๋ง์ผ๋ก๋ ๊ธฐ์ ํ๊ฒฝ์์ Kotlin์ด ์ด๋ป๊ฒ ํ์ฉ๋๋์ง์ ๋ํ ์์ ํ ๊ทธ๋ฆผ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฉ์ฐจ๋ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ข ์์ฑ ๊ตฌ์กฐ, ๋น๋ ํ ํด๋ก์ง ๋ฐ ์ด์ ๋์๊ณผ ์ฐ๊ด์ํฌ ๋ ๋น๋ก์ ๋๋ฌ๋ฉ๋๋ค.
Kotlin์ ๋๊ท๋ชจ๋ก ์ฑ๊ณต์ ์ผ๋ก ํ์ฉํ๋ ๊ธฐ์ ๋ค์ ๋๊ตฌ ํ์ฐ๋ณด๋ค๋ ๋ถ์์ ์ฐ์์ฑ์ ํฌ์ํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์ปดํ์ผ ๋จ๊ณ์ ๋ฐฐํฌ ๊ฒฝ๊ณ๋ฅผ ๋์ด ์ง์๋๋ ์ ํธ์ ์ง์คํ๊ณ , ์ํ์ฑ, ๋กค๋ฐฑ ๊ณํ ๋ฐ ์ ์ด๋ ์งํ๋ฅผ ์ง์ํ๋ ์ธ์ฌ์ดํธ๋ฅผ ์ค์ํฉ๋๋ค. ์ด๋ฌํ ๊ด์ ์ ๋ ๋์ ๋ฒ์์ ํ๋ฌธ ๋ถ์ผ์ ์ผ๋งฅ์ํตํฉ๋๋ค. ๊ธฐ์ ๋ณ๊ฒฝ ์์ ์ ๋ณด์ ์ ๊ฐํ ์์ฌ๊ฒฐ์ ์ด ์ถ์ธก์ด ์๋ ์ถ์ ๊ฐ๋ฅํ ์ฆ๊ฑฐ์ ์์กดํ๋ ๊ฒฝ์ฐ.
์ค์ง์ ์ธ ์๋ฏธ๋ ์ฝํ๋ฆฐ ์ ์ ๋ถ์์ด ์๋ฒฝํด์ผ ํ๋ค๋ ๊ฒ์ด ์๋๋ผ, ๋งฅ๋ฝ์ ๊ณ ๋ คํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ฆฌํ๋ ์ , ์์ฑ๋ ์ฝ๋, ํ๋ ์์ํฌ ์คํ์๋ ํญ์ ์ฌ๊ฐ์ง๋๊ฐ ์กด์ฌํ ๊ฒ์ ๋๋ค. ์ค์ํ ๊ฒ์ ์ด๋ฌํ ์ฌ๊ฐ์ง๋๋ฅผ ์ดํดํ๊ณ ์ํคํ ์ฒ ์ค๊ณ ๋ฐ ๋ณด์์ ์ธ ๊ฐ์์ฑ ํ๋ณด๋ฅผ ํตํด ๋ณด์ํ๋ ๊ฒ์ ๋๋ค. ์ ์ ๋ถ์์ด ์ฝ๋ ํ์ง์ ๋ํ ์ต์ข ์ ์ธ ํ๋จ์ด ์๋ ์์คํ ์ดํด๋ฅผ ์ํ ์ง์นจ์ผ๋ก ํ์ฉ๋ ๋, ๋ง์ฐฐ์ ์์ธ์ด ์๋๋ผ ์์ ํ ์์๋ก ์์ฉํ๊ฒ ๋ฉ๋๋ค.
Kotlin์ด ์ํฐํ๋ผ์ด์ฆ ์์คํ ์์ Java๋ฅผ ๋์ฒดํ๊ฑฐ๋ ๊ณต์กดํ๋ ์ถ์ธ๊ฐ ์ง์๋จ์ ๋ฐ๋ผ Kotlin์ ์๊ตฌ๋๋ ๋ถ์ ์์ค์ ๋์ฑ ๋์์ง ๊ฒ์ ๋๋ค. ํฌํธํด๋ฆฌ์ค๋ ๋์ฑ ์ด์ง์ ์ผ๋ก ๋ณํ๊ณ , ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ๋ ๋์ฑ ์ํธ ์์กด์ ์ด ๋๋ฉฐ, ์์์น ๋ชปํ ์ํฅ์ ๋ํ ํ์ฉ์น๋ ๋ฎ์์ง ๊ฒ์ ๋๋ค. ์ด๋ฌํ ํ์ค์ ๋ฐ๋ง์ถ ์ ์ ๋ถ์์ ์์กด์ฑ ์ธ์, ์ํฅ ๋ถ์, ๊ทธ๋ฆฌ๊ณ ์ฅ๊ธฐ์ ์ธ ์ ํธ์ ์ค์ ์ ๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ํตํด ๋ ๋์ Kotlin ์ฝ๋๋ฅผ ์์ฑํ ๋ฟ๋ง ์๋๋ผ, ์์คํ ์ด ์ ์ด๋ ฅ์ ์์ง ์๊ณ ์งํํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.