7. 앱 개발 아무나 하나?
웹 프론트엔드 개발자에게 모바일 앱 개발에 허들(Hurdle)이 있는 것은 사실
개발자라 하면 주변에서 앱 만들 수 있냐고 자꾸 물어보는데-.
난 웹 개발자 이지만, 가끔 앱도 개발하고 싶고-.
이제 와서 전향하기는 좀 그렇고-.
아이폰 개발자 연봉은 부르는게 값이라고-.
8. 솔직히 개발 실력 뛰어나지 않은거 인정
새로운 기술 익히는 속도 느린것도 인정
그럼에도 방법이 있다면~
9. 웹 개발자가 하려는 하이브리드
앱은
사실 하이브리드 앱이 아니다
왜냐하면, 대부분의 기능을
웹 기술로만 구현하려고 하기 때
문
10. 일부 페이지만 웹뷰로 처리하는
보통의 하이브리드 앱과 달리,
구조의 차이
NATIVE VIEW
VIEW
VIEW
NATIVE VIEW
WEB VIEW
HTML
HTMLWEB VIEW
웹뷰 하나에
인터페이스와 콘텐츠
모두를 담는 하이브리드 앱은
구조적으로 웹 앱에 가까움
13. “SKT 세상에서 가장 친절한 모바일 웹앱 공모전” 최우수상
수상
의미있는 시도였으나, 기술적인 한계가 많았음.
터치 인터페이스의 오동작을 튜닝하는 데에만 3~4주 할애.
UI 개발 복잡도와 피도로가 계속 상승.
사용성 Fool, 사용자수 Low
심지어 상도 받았지만….
* 아이템미 창업 멤버들과 2013년 12월
14. 하이브리드 앱 도입 망설이는 이유는
앱으로서 당연해야 할 것이 미흡하기 때문
서비스 품질 경쟁력 없음
16. View 전환 효과
JavaScript Single Page Application Router
View 전환의 연속성을 표현
VIEW VIEW VIEW
애니메이션 처리
+
History 저장
애니메이션 처리
+
History 저장
17. 터치 반응 지연 시간
웹뷰 터치 반응 시 300ms 의 지연 시간이 존재함
(Single tap 과 Double tap 을 구분하기 위한 설계 의도)
이를 해결하기 위해 다양한 JavaScript 라이브러리가 나옴
fastclick.js / hammer.js 가 대표적
*출처: 네이버 앱 뉴스
18. 유려한 애니메이션 처리
JavaScript setInterval() / jQuery animate()
16~21ms 마다 그림을 그림 👎
CSS webkit-transition,
17~27ms 마다 그림을 그림 👎
CSS webkit-transition translate3d (하드웨어 가속)
0~2ms 마다 그림을 그림 👍
* 출처: http://blog.teamtreehouse.com/create-smoother-animations-transitions-browser
25. - 구축이 빠름 (평균 2주 내외의 개발 기간)
- 텍스트 위주의 앱은 거의 네이티브 수준의 퍼포먼스를 보
임
- Cordova CLI 이외에 앱 개발에 필요한 추가 학습 요소가
없음
- 생각보다 Cordova/PhoneGap 플러그인이 많음
- 유명 SDK 플러그인 지원 (Facebook, Twitter, Fabric 등)
- Cordova 플랫폼/플러그인 의존성 관리 기능 탁월
(config.xml)
정리
28. “현재 운영중인 해먹남녀 iOS 앱이 이미 있는데요,”
“네 깔아서 써봤습니다. 잘 만들었던데요~”
“지금 수준의 앱을 하이브리드로 만들면 얼마나 걸릴까요?”
“한 달 정도 걸리지 않을까요?”
“네 그렇군요… ㅎㅎ”
“네 한 달 내내 빡세게 한다면요… ㅋㅋ”
아직 입사 계획이 없을 때
2016년 2월 신사동 어느 술집에서
발단
바이탈힌트코리아 정지웅 대표
29. 약 한 달 뒤에 비즈니스 목적 상 특정 기능이 추가되어야 하
는 상황.
iOS 개발자 채용이 장기화. (언제 들어올지 모름)
내부 인력들 기존 Objective-C 개발 경험 전무.
클라이언트 개발 가능한 인력 웹 개발자 1명.
상황
30. 어쨌든,
“짧은 시간 안에 앱을 어떻게든 정상화 시키는 것”
이 최우선 목표이니까
새로 만드시죠! 하이브리드로
31. 원하는 퍼포먼스가 구현되지 않으면?
꼭 필요하지 않은 UI 효과는 과감히 포기
Cordova/PhoneGap 플러그인 중 내가 필요한 것이 없으면?
기본 핵심 기능만 리서치, 나머지는 미흡해도 Major 이슈가
아니므로 과감히 포기
앱스토어 순위나 Featured 선정에 패널티가 있지 않을까?
나중에 고민. 지금 그게 중요한게 아니야!
그냥 왠지 불안하다... ㅠㅠ (막연한 걱정과 우려)
한 번 해 보고 정 안되겠다 싶으면 Cool 하게 버리겠다!
내가 만든 코드가 폐기되어도 괜찮다는 약간의 희생정신(?)
목표를 달성할 수 있는가?
32. 꼭 필요한 Cordova 플러그인만 파악
카메라 cordova-plugin-camera
파일 전송 cordova-plugin-file-transfer
푸시알림 phonegap-plugin-push
페이스북 SDK cordova-plugin-facebook4
카카오톡 SDK cordova-plugin-kakaotalk
소셜공유 cordova-plugin-x-socialsharing
인앱브라우저 cordova-plugin-themeablebrowser
딥링크 cordova-plugin-customurlscheme
스팩 정의하기
잘 지원되는가?
OK GO..!
33. 빠르고 쉬운 개발
“개발”은 그렇겠지….
“Very easy, Very simple” 을 외치면서
개발 도구들을 찬양하고 싶었으나
34. Ionic Framework 으로 개발 착수
Framework UI 템플릿 적극 활용하여 화면 제작
Cordova 플러그인 샘플 코드 복/붙 적용
AngularJS 기반의 간편한 애플리케이션 개발
웹 브라우저에서 간편한 디버깅 (+ Live Reload 기능)
훌륭한 개발 도구들
35. 꿀 기능들
$ionic prepare
프로젝트 패키지 한 번에 설치
$ionic resources
스플래시, 아이콘 이미지 팩 한꺼번에 생성
$ionic serve --lab
웹 브라우저에서 iOS/Android 동시 개발 가능
$ionic run -livereload
소스 수정 시 시뮬레이터에서 실시간 반영
36. 이미 훌륭한 Framework 과 Library 가 넘쳐나는 시대.
그럼에도 불구하고 하이브리드 개발이 번거로운 이유,
한 달 동안 걸쳐서 만들어진 과정을 통해 소개합니다.
다음 장에 계속
도구는 도구일 뿐
47. 데이터 싱크를 수행하는 Directive 만들어
View 에서 반복 호출
Angular $rootScope Level 에 데이터 갱신 및 재호출
Sync Directive
“어떤 id 의 스토리에 대해 댓글 수와 좋아요 숫자,
내가 좋아요 했는지 여부를 지금부터 동기화 되도록 하여라
”
50. 1. “동영상 음소거 강제 해제를 해야할 것 같은데?”
2. 백그라운드 오디오 활성화
3. 앱 심사에서 사용성 가이드라인을 벗어나 Reject 됨
4. 음소거 기능 비활성 안내 메시지 노출로 대체함
“동영상 음소거 없애주세요”
51. 1. 커뮤니티에 글 올릴 때 multipart/form 다중 파일 전송 필
요
1. File Transfer 가 다중 전송을 지원하지 않음
2. 개별로 여러 번 수신할 수 있게 서버 API 수정
다중 파일 업로드가 안되서….
파일1 전송 파일2 전송 파일3 전송
Callback Callback
57. 장치의 사양, 해상도에 따라 콘텐츠 이미지 크기 변경 제공
서버 사이드 이미지 리사이즈 프로세싱 및 캐싱
이미지 Resize Rule
http://.../.../...image.jpg&rt=780
http://.../.../...image.jpg&rt=480
http://.../.../...image.jpg&rt=180
장치 해상도 너비 320px 초과인 경우 (아이폰6)
장치 해상도 너비 320px 이하인 경우 (아이폰5)
작은 썸네일의 경우
이미지서버 프로세싱 CloudFront
58. CSS3 blur 필터 대신 이미지 Up-scaling 으로 처리
1KB 크기의 이미지로 해결
Blur 효과
40px
61. 처음엔 안드로이드의 70% 기능 수준
1~2주 간격의 잦은 업데이트
하이브리드 앱의 문제점을 가장 많이 경험한 시간 (2달 정도 소요)
너무 버벅거려요 / 업데이트 하고 나서 흰 화면만 나와요 / 커뮤니티에 사진이 안올라가요,
터치가 인식이 안돼요 / 무한 로딩중이예요 / 발열이 너무 심해요 / 움직이는 그림(GIF)이 나오면 앱이 꺼져
요
VOC
사용자 피드백 대응
62. 실시간 업데이트
CodePush
웹 소스를 클라우드를 통해 버전 체크를 한 후
새로 업데이트 항목이 있으면 자동 다운로드
프로젝트 용량이 많아질수록
파일 다운로드 후 복사 과정에서 멈춤 현상 발생
꼭 긴급한 경우에만 활용!
https://microsoft.github.io/code-push
63. 간편한 인수인계
개발 매뉴얼은 A4용지 반 장
오늘 새로 입사한 개발자도
한 두 시간 만에 앱을 빌드할 수 있는 환경
64. 처음에 놓치기 쉬운
프로젝트 디렉토리 구조
“덮어놓고 코딩하다보면 리팩토링 못 면한다”
크롬 확장프로그램 “AngularJS Graph” 로 본 해먹남녀 앱 구조
65. “한솔씨… 코드가 너무 길어요”
Ionic 기본 프로젝트 폴더 구조에 맞추어서 작업하다 보니,
1file of Controllers
1file of Services
controllers.js (1339 LOC)
66. 기본 폴더 구조의 변경 권장
Ionic 기본 프로젝트 폴더 구조로는 규모가 커질수록 관리가
어려움
각 컴포넌트 별 view, service, controller, directives 등을
묶어서 관리하는 것이 용이
* 출처: https://scotch.io/tutorials/angularjs-best-practices-directory-structure
67. Cordova 핵심
config.xml 프로젝트 설정 파
일
앱 내 모든 설정을 담아두는 핵심
잦은 빌드 시 불필요한 반복 작업 줄이기
앱의 바이너리 버전과 빌드 버전 관리
Hook Script 를 통한 테스크 자동화
info.plist 자동 작성
69. 둘 다 AngularJS
순수 웹 기술로 제작
모바일 앱 ~ 웹 70% 코드 재사용 중
해먹남녀
앱
m.haemukja.com
70. Haemuk Visualizing
해먹남녀 전용 차트 라이브러리
모바일 웹, PC 웹, 사내시스템 동시 적용
https://vitalhint_bucket@bitbucket.org/vitalhint_buck
et/haemuk_visualizing.git
71. iCook 아이쿡
레시피 전용 동영상 플레이어 웹 앱
새로운 기능을 시도할 때 웹 에서 먼저 빠르게 파일럿 서비
스 한 후
앱에도 곧 바로 적용하는 프로세스가 가능해짐
모바일 웹, 하이브리드 앱 동일한 AngularJS 모듈
http://icook.haemukja.com
http://icook.haemukja.com/#/recipes/2636
73. 네이티브 앱 개발은 부품이 모듈화가 잘 된 DELL 컴퓨터라
면,
하이브리드 앱은 용산에서 발품 팔아 만든 조립 PC 에 비유
됨.
느낀 점
*이미지 출처: http://www.nowpug.com/review/79912*이미지 출처: 델 컴퓨터
74. 제한적인 환경에서
의사 결정 방식
해결이 가능한 이슈인가?
금방 해결할 수 있는가?
꼭 지금 해야 하는가? 제품화 하고 싶다면
불필요한 욕심을 버리세요
NO
YES
YES
NO
NO
YES
대안을 찾는다
대안을 찾는다
대안을 찾는다
혹시 모를 대안을 찾아본다
75. 하이브리드 앱
이런 경우에 추천해요
작게 시작할 줄 아시는 분
현실과의 타협을 잘 하시는 분
초기 스타트업의 대안 기술로 활용하고 싶으신 분
HTML/CSS/JavaScript 오래 하신 분
UI 감각 센스가 좋으신, 꼼꼼하신 분
76. 마치며
2016년 행보
2016년 3월 26일 하이브리드 버전 해먹남녀 iOS 앱 정식 오픈
2016년 7월 26일 개인화 추천 2.0 개편
2016년 8월 앱스토어 전체 Featured App 선정, 음식/음료 카테고리 1위
2016년 9월 앱스토어 한가위 특집 추천 앱 선정
2016년 9월 요리 따라하기 전용 플레이어 “아이쿡” 출시
2016년 10월 DEVIEW 2016 파트너사 선정
77. 아직 하이브리드로 잘 버티고 있습니다
아마도… 내년 상반기 까지는…
그 때도 살아있다면 또 만나요!