갑자기 아주 뜬금없이 앱개발에 대한 공부를 시작하게 되었는데, 대단한 계기는 아니고 그냥 회사 차원에서 하게 될 것 같아 준비하느라 그렇게 되었다. 솔직히 혼자서도 할 생각은 있었는데 명분이 생겨서 공부할 수 밖에 없는 상황이 오는건 오히려 땡큐긴함..
어쨌든 언젠가는 해야겠다고 생각을 하기 했다만 근본이 웹 개발자인 내가 앱을 손대려고 하니 도저히 Native쪽은 자신이 없길래 하이브리드 앱 부터 시작해야겠다. 하던 와중에 회사에서 아주 좋은 공부 기회를 던져주셔서 룰루랄라 앱 공부 시작했다.
그럼 한번 이야기 해보자.
1. APP 개발이란?
사실 APP 개발이라고 하면 자꾸 핸드폰으로 사용하게 되는 모바일 어플리케이션을 이야기 하게 되는데, 제대로 말하면 우리가 사용하는 프로그램들 대부분 APP 이라고 지칭할 수 있다. 웹 개발도 결국은 웹에서 구동되는 어플리케이션을 만드는 거기 때문에 어플리케이션이라고 지칭할 수 있는데 우리에게 APP 이라는 말이 익숙한 환경이 모바일 환경이라 App === 모바일 어플리케이션 이렇게 된거라고 생각한다.
하여튼 흔히 말하는 APP 개발은 모바일 어플리케이션을 개발하는거라고 생각하면 되는데, 이게 방식이 두가지가 있다.
하나는 Hybrid App(Cross Platform Application) / Native App 이렇게 두가지인데 오늘은 가벼운 설명만 하고 디테일한 부분은 하이브리드 앱만 설명할 것 같다. 왜냐면 난 Native 아직 할 생각이 없어서..
2. APP 개발 방법의 종류
1) Native
예를 들어봐야겠는데 이건 모국어로 특정 언어를 써서 굳이 공부하지 않아도 해당 언어를 잘 쓰는 사람을 우린 Native Speaker라고 부른다. 여기서 쓰는 Native랑 비슷하게 이해하면 되는데, 뭐 안드로이드면 안드로이드, IOS 면 IOS 각 플랫폼 별로 가진 마더텅이라는 느낌의 프로그래밍 언어 + 개발 환경이 있다. 안드로이드는 코틀린을 사용한다던가, IOS 는 스위프트를 사용한다거나 이런 식인데, 이런 플랫폼 고유의 언어, 환경에서 개발하는 어플리케이션을 Native 라고 부른다.
장점은 각 환경에 맞춰서 개발 하기 때문에 밑에서 설명할 크로스 플랫폼 어플리케이션에 비하면 성능이 좋고, 각 플랫폼에서 제공하는 기능들을 100% 활용할 수 있다는 점들이 있다.
단점은 각 환경마다 같은 개발을 어러 번 해줘야한다는 점이 있는데, 이 문제점을 해결하기 위해 출현하는게 Hybrid (Cross Platform) Application 이다.
2) Hybrid
앞서 말한 Native App의 단점을 해결하기 위해 출현한 개발방법이다. 하나의 코드 베이스로 두개의 환경에 배포가 가능하게끔 하는데 그 원리가 개발할 때 사용하는 언어를 컴파일을 통해서 Native언어로 바꿔준다는 방식으로 이뤄진다고 보면 된다. 대표적인 것들이 Flutter, React Native 같은게 있는데 Flutter는 Dart라는 구글에서 개발한 언어를 사용하고, React Native는 React 와 마찬가지로 js 를 사용한다. (여기서 JS의 놀라운 범용성을 깨닫는다. 서버도 돼, 웹도 돼, 앱도 돼, 심지어 데스크탑용 프로그램까지도 가능하다. 게임도 되는걸로 알고 있음 대표적인 예시가 뱀파이어 서바이벌)
장점은 앞서 말한대로 Native App이 각자 다른 환경에서 여러번 개발하고 각자 배포해야한다는 문제가 있었는데 이걸 해결해 하나의 코드 베이스로 양츨 모두 배포가 가능하게 되었다. 일 두번 안해도 되는게 좋긴함.
또 React Native에 한정적이긴 하지만 굳이 Native 언어를 공부하지 않아도 App 개발이 가능하다는 점에서 장점을 가진다. 내가 프론트를 하던 사람이라 JS 말곤 도저히 할자신이 없다고 해도 APP 개발이 가능하다는 뜻임.
단점은 Native 로 개발한 프로그램들과는 달리 각 플랫폼에서 제공해주는 것들을 100% 사용하기 힘들다는 점, 성능적인 면이 Native에 비하면 부족하다는 점이 있다고 볼 수 있다.
3. APP 개발에서 고려되어야 할 점
이 부분은 아직 공부가 부족하긴한데, 일단 나같은 신입개발자를 기준으로 생각했을 때 좀 더 고급 스킬을 요한다고 생각된다. 뭐 디자인 패턴이라던가. 하드웨어 자체의 한계가 있기 때문에 메모리를 고려해야한다거나 이런? 간단히 구글링만 해도 이런 점들이 넘쳐나는데 과연 내가 잘 해낼 수 있을진 모르겠지만.. 열심히 배워야겠다..
'Dev > MobileApp' 카테고리의 다른 글
[PWA] Vite + React App PWA 배포하기 (1) | 2024.09.05 |
---|---|
[React Native] React Native cli 로 시작하기 (0) | 2023.06.08 |
[Flutter] Template 실행시켜보기 (0) | 2023.06.08 |
[React Native] EnvSet (0) | 2023.06.08 |
[Flutter] EnvSet (0) | 2023.06.07 |