- 자꾸 Progressive web app 이 검색결과에 떠서, 이게 내가 원하는 것인지 확인하려고 알아봄.
# Progressive web app
- Service worker: 캐싱을 상세하게 하므로, 일단 맨 처음 웹앱을 설치하면 이후에는 service worker가 '네트워크가 불안정한 경우'에 기존의 캐싱된 파일을 활용하여 사용자에게 정보를 제공한다. 푸시 알림 등도 기능하게 해 줌.
- 웹 앱 대비 장점
1) 접근성: 설치된 앱 아이콘으로 바로 서비스에 접근 가능.
2) 푸쉬알림: 웹앱은 못 보냄.
3) 네트워크 독립적: Service worker 덕분에 가능.
- 네이티브 앱 대비 장점
1) SEO: PWA는 웹브라우저에서도 검색이 가능함.
2) 작업 생산성: 플랫폼이랑 상관없이, 언어에 크게 구애받지 않고 개발/수정 가능.
- 단점
1) 호환성: 옛날 브라우저에서는 안 돌아감.
2) 기능제한: 카메라, GPS, 가속도계 등 장치 센서 접근이 필요한 기능은, 네이티브 앱과는 달리 막힐 수 있음. 푸쉬 알림도 브라우저 설정/권한에 따라 막힐 수도.
3) 사용자 인식: '이거 설치 가능하다!'라는 것 자체를 사용자가 잘 모름.
> Progressive web app은 '웹앱'이랑은 다른 거구나.... 다른 건가? 웹앱은 뭐지?
# 하이브리드 앱
- 내가 만들고 싶은 앱의 종류는? '하이브리드 앱'
- 보통 '모바일 웹앱'이라고 하면, '모바일 웹'을 말하는 거라고 보면 되는 것 같다.
1) 모바일 웹: 스마트폰으로 네이버에 들어가면, naver.com 말고 m.naver.com 뜨는 것과 같음. 그냥 PC 대신 모바일에 최적화해서 만든 웹페이지라고 보면 된다.
[참고] 풀 브라우저 방식이란? ... 화면 일부만 변경되더라도, 화면 전체 내용을 서버에서 새로 받아오는 방식. 반대로 '단일 페이지 방식(SPA)'은, 화면 일부만 변경되면 해당 데이터만 새로 받아오는 방식이다(=Ajax). 위의 'Progressive web app'에서 말한, '캐싱된 파일을 이용하는 방식'을 떠올리면 된다.
2) 웹 앱: 위의 Progressive web app 이랑 비슷한 내용. 웹 브라우저로 열리기는 하지만, 표면적으로는 '이거 앱 아니었어?' 싶도록 브라우저 틀(?)을 숨겨둔 모바일 앱 느낌. 역시 모바일 웹처럼 디바이스 접근 권한도 제한되므로, 나중에 추가 개발할 때 어딘가에서 뭔가 막힐 가능성이 있다. 그리고 다운받으려면 일단 해당 URL로 들어가봐야 해서 불편하다.
3) 하이브리드 앱: 네이티브 앱은 네이티브 앱인데, 실제로 띄워주는 건 죄다 모바일 웹 페이지인 앱. 따라서 네이티브 앱을 개발할 줄은 알아야 하지만, 실제로는 모바일 웹 개발의 비중이 더 높다. 그래도 네이티브 앱에서만 구동할 수 있는 QR코드리더, 카메라 같은 것들도 사용은 가능하다. 물론 모바일 웹이 껴들어가므로 네이티브 앱만큼 빠릿빠릿하지는 않고 좀 느리다. 한편 네이티브 앱 개발의 측면이 있긴 있으므로, 네이티브 앱 쪽을 수정하려면 마켓 심사를 받긴 해야 한다. 그래도 웹 쪽만 고치는 일이라면 심사 없이 배포도 가능하다.
4) 네이티브 앱: 완전히 Android, iOS 앱 그 자체. 사용하는 주된 언어도 네이티브 언어고, 그만큼 개발/운영 비용도 높다. 그래도 제일 속도도 빠르고 안정적이라는 장점이 있다. 초보자인 내 입장에서는 한 번 배포하고 나면 수정할 때마다 마켓 심사를 기다려야 하는 네이티브 앱은 별로 적절하지 않은 것 같다.

> 일단은 하이브리드 앱 개발을 더 알아보자. 물론 '네이티브로 안하고 어떻게 안 되나...?'를 고수한다면 언젠가 한계를 맞닥뜨리게 되겠지만, 그건 그 때 가서 생각하자. 오히려 점프업의 계기라고 생각하고, 미래의 내가 또 공부하겠지.
# 다음에 할 일
- 하이브리드 앱 개발을 유튜브에서 검색하고, 해당 강의를 따라가보자.
- 포함되어 있으면 더 좋은 조건:
1) Firebase처럼 클라우드(?) DB를 활용해 데이터를 관리할 수 있는 방법
2) 내 PC를 서버로 쓰지 말고, 클라우드 서버를 활용하는 방식으로 개발하는 강의
- 아이패드에 대충 그려놓았던 화면설계를, 스크린샷 떠서 티스토리에 올려두자. (보면서 만들려고)
# 느낀점
- '일단은 개발을 해!'라는 마인드 자체는 잃지 않되, 너무 마음만 성급하게 앞서면 더 일이 꼬이는 것 같다. 차분하게 앉아서 배울 건 배워가며 지식을 쌓는 게 오히려 덜 돌아가는 길인 것 같다.
유튜브에 강의들을 검색해봐도, '3분만에 만드는' 식의 제목을 단 영상들이 많았는데.... 막상 자세히 보니까 '하아 이건 또 React를 배워야 하는 거야?' 하는 식으로 반응하게 되는 영상들이 대부분이었다. 정확히 내가 뭘 만들고 싶은지, 내 수준에서는 뭘 해야 하는지, 그걸 위해서 진짜진짜 필요한 건 뭔지('필요한 것'과 '하면 좋겠다' 싶은 것은 구분하기로!) 등을 고려해야겠다.
'코딩공부' 카테고리의 다른 글
flutter <-> firebase 연동 (0) | 2025.01.30 |
---|---|
cross-platform app ... 아무래도 플러터를? (2) | 2025.01.29 |
Failed to notify project evaluation listener. (0) | 2025.01.16 |
A problem occurred configuring project ':app'. (0) | 2025.01.06 |
Failed to notify project evaluation listener. (0) | 2025.01.01 |