어쩌다보니 블로그 첫 주제로 KMM을 하게 되었네요.
native를 사랑하는 개발자로서 KMM을 굉장히 매력적인 기술이라 생각합니다.
그동안 멀티플랫폼이라하는 자마린, RN, Flutter등 많은 도구가 있지만
제 머릿속에는 UI는 Native지! 라는 생각이.... 떨쳐지지가 않았어요.
하지만 괜찮습니다.
그토록 원하던 구조를 이젠 KMM으로 통해 구현 할 수 있게 되었습니다!!
KMM은 UI는 native에서, 비즈니스로직은 KMM에서 작업하는 구조가 만들어집니다.
여기서 의문!
왜 UI는 Native가 아닌 KMM에서 안해줍니까???
비즈니스로직은 매우 추상적입니다.
그래서 어떤 플랫폼에서든지 개념만 가지고있다면 구현 할 수 있어요.
하지만 UI는 다릅니다. 각 각의 플랫폼에서 돌아가는 그래픽엔진이 따로있을거구요.
해당 엔진에따른 UI그리는 방식도 달라 질 수 있고
플랫폼별 사용되는 View들은 추상이 아니라 이미 구현되어있기때문에 일일이 대응을 다 해 주기에는 비용이 너무 큽니다!!
(위에서 말씀드린 자마린, RN, Flutter는 각자의 방식으로 다 해주고있습니다.)
KMM은 Kotlin Multiplatform Mobile 이란 뜻으로 JetBrains사에서 만든 프레임워크입니다.
Kotlin코드로 Android, iOS에서 공용으로 사용될 모듈이라고 생각하면 됩니다.
개발하려는 domain의 밀접한 비즈니스로직을 담당하게 될겁니다.
(데이터를 가져오거나 특수한 연산, 비즈니스로직에서 구현되어야 하는 코드등 만들기나름이라 생각합니다.)
위 이미지는 JetBrains사의 KMM 공식 홈페이지에서 가져왔습니다.
모바일뿐만아니라 server쪽과도 연계하여 공통로직을 처리 할 수 있군요.🎉 (근데 그럼 너무 커지는데?)
실제 server는 KMM을 사용되지 않을것입니다.(이름자체가 코틀린 멀티플랫폼 '모바일' 입니다!!!)
server는 client 와 달리 상대적으로 처리속도가 매우매우매우매우 중요합니다.
대부분의 client 로직은 속도보다 가독성, 유지보수에 치우쳐진 코드를 작성하게 될거라 서버에서는 사용 할 이유가 없다고 생각합니다.
(common에 enum, model, CONST 변수 등은 공유가 가능할 수도 있을것 같네요...)
좋은 글 감사합니다. 자주 올게요 :)