SlideShare a Scribd company logo
1 of 25
React Native 와
ClojureScript 를 조합한
iOS App 개발
2015.10.24
Clojure 스터디 모임
한철희
자기소개
• 스타트업의 Senior Programmer
• iOS 개발 총괄
• Java, Swift, Objective-C
• 6502 Assembly, FORTH, Haskell, APL …
• finally, Clojure !!!
진행 순서
• iOS에서 Clojure를?
• React Native + ClojureScript + ?
• 예제 프로젝트 : React Native Duckie
• 결론 : 왜 Clojure인가
Q: 왜 iOS App을 Clojure로
?
A: 아직 newbie라서요
iOS App dev. with Clojure
1. Native App
- RoboVM
2. Hybrid Web App
- Cordova + ClojureScript
3. Hybrid Native App
- React Native + ClojureScript
RoboVM
• JVM bytecode를 ARM / x86 Native Code로 변환
• iOS / Android 앱 개발 툴 제공
• lein-fruit 플러그인
하지만...
What if ..
• 나는 지금 RoboVM
얘기를 신나게 하고
있었을 겁니다.
• ...만약 Swift 가 없었
다면 말이죠
Hybrid App + ClojureScript
• 웹 기반이라면 ClojureScript로 해결 가능
• 검증된 하이브리드 앱 개발 방법론
• 자료 풍부
하지만...
개발은 시작도 안했는데 태
클이
• “모바일 웹은 느려”
• “고객에게 최고의 사용자
경험을 제공함이 제1순
위 고려 사항”
• “당신이 책임질래?”
React Native
• Facebook이 개발한 React(JS)에서
파생된 오픈소스
• JavaScript + JSX 로 개발
• View가 네이티브 방식으로 만들어
진다
• “Learn Once , Write Everywhere”
• Native App 개발 지식 필요
React Native + ClojureScript
• React(JS) ClojureScript 인터페이스
• Om
• Reagent
• React Native도 React(JS) 처럼 JavaScript기반이므
로 Om / Reagent 둘 다 “사용”은 가능
Early Adopters
• React Native + ClojureScript 사례
- https://github.com/dmotz/natal : Om
- https://github.com/chendesheng/ReagentNativeD
emo : Reagent
- https://github.com/mfikes/reagent-react-native :
Reagent
- http://cljsrn.org : 관련 정보 정리
Reagent
• Om보다 나중에 만들어졌다 ( JSX 도입 이후 )
• Om보다 경량
• Om보다 간단(상대적)
• 아직 깔끔한 Bootstrap 은 없음
결정 !
• React Native + ClojureScript 사례
- https://github.com/dmotz/natal : Om
- https://github.com/chendesheng/ReagentNati
veDemo
Reagent
- https://github.com/mfikes/reagent-react-native :
Reagent
- http://cljsrn.org : 관련 정보 정리
example:
React Native Duckie
React Native Duckie
• Internet of Things
• BLE , Motion , Temperature Sensor
• 환경 변화에 반응
➡탕온계 prototype 를 만들었습니다
코드 리뷰
개발/동작 환경
• Xcode 7
• Atom
• Terminal
• iPhone 5S
• ReagentNativeDemo 를 개조
• Trial & Errors
React Native프로젝트를
Reagent로 바꾸기
• 뷰 컴포넌트 작성
• 자바스크립트 변환
• 네이티브 라이브러리 붙이기
• React Native 플러그인 붙이기
reagent 세팅
• react-native init HelloWorld
• ReactNativeDemo 의 reagentnative 폴더를 복사
• AppDelegate.m 수정 - 2줄
• lein cljsbuild auto
• Xcode 실행
• core.cljs 편집
프로젝트 파일
• github에 공개
https://github.com/cheolhee/ReactNativeDuckie
• 일부 코드는 변형/삭제됐음을 양해 바랍니다.
후기: 왜 Clojure인가
왜 Clojure인가
• LISP : 검증된 고전
• 함수형 패러다임
• Java 자원 활용 가능 - 👍
• 문법이 심플 - 😮
• 스타트업의 개발자로서, 재미짐
Links
• https://facebook.github.io/react/
• http://facebook.github.io/react-native/
• https://github.com/clojure/clojurescript
• http://cljsrn.org
감사합니다
http://viz.co.kr

More Related Content

What's hot

다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!우영 주
 
Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015sung yong jung
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱NAVER D2
 
[115] clean fe development_윤지수
[115] clean fe development_윤지수[115] clean fe development_윤지수
[115] clean fe development_윤지수NAVER D2
 
Springcamp spring boot intro
Springcamp spring boot introSpringcamp spring boot intro
Springcamp spring boot introJae-il Lee
 
React를 이용하여 멀티플랫폼에서 개발하기
React를 이용하여 멀티플랫폼에서 개발하기React를 이용하여 멀티플랫폼에서 개발하기
React를 이용하여 멀티플랫폼에서 개발하기WebFrameworks
 
Meteor 0.3.6 Preview
Meteor 0.3.6 PreviewMeteor 0.3.6 Preview
Meteor 0.3.6 PreviewJuntai Park
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기현철 조
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Daum DNA
 
Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까? Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까? Kim Hunmin
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Appsjungkees
 
Node.js 현재와 미래
Node.js 현재와 미래Node.js 현재와 미래
Node.js 현재와 미래JeongHun Byeon
 
[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우NAVER D2
 
Python server-101
Python server-101Python server-101
Python server-101Huey Park
 
[141] react everywhere
[141] react everywhere[141] react everywhere
[141] react everywhereNAVER D2
 

What's hot (18)

역시 Redux
역시 Redux역시 Redux
역시 Redux
 
다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!
 
Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱
 
Spring Boot 1
Spring Boot 1Spring Boot 1
Spring Boot 1
 
[115] clean fe development_윤지수
[115] clean fe development_윤지수[115] clean fe development_윤지수
[115] clean fe development_윤지수
 
Springcamp spring boot intro
Springcamp spring boot introSpringcamp spring boot intro
Springcamp spring boot intro
 
React를 이용하여 멀티플랫폼에서 개발하기
React를 이용하여 멀티플랫폼에서 개발하기React를 이용하여 멀티플랫폼에서 개발하기
React를 이용하여 멀티플랫폼에서 개발하기
 
Meteor 0.3.6 Preview
Meteor 0.3.6 PreviewMeteor 0.3.6 Preview
Meteor 0.3.6 Preview
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
 
Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까? Facebook은 React를 왜 만들었을까?
Facebook은 React를 왜 만들었을까?
 
Spring Boot 2
Spring Boot 2Spring Boot 2
Spring Boot 2
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
Node.js 현재와 미래
Node.js 현재와 미래Node.js 현재와 미래
Node.js 현재와 미래
 
[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우
 
Python server-101
Python server-101Python server-101
Python server-101
 
[141] react everywhere
[141] react everywhere[141] react everywhere
[141] react everywhere
 

Viewers also liked

Smart Patient: 스마트폰 시대 환자들의 새로운 검색, 커뮤니케이션 문화와 대응방안
Smart Patient: 스마트폰 시대 환자들의 새로운 검색, 커뮤니케이션 문화와 대응방안Smart Patient: 스마트폰 시대 환자들의 새로운 검색, 커뮤니케이션 문화와 대응방안
Smart Patient: 스마트폰 시대 환자들의 새로운 검색, 커뮤니케이션 문화와 대응방안Health 2.0 Seoul
 
명화로 꾸며보는 원포인트 셀프 인테리어
명화로 꾸며보는 원포인트 셀프 인테리어명화로 꾸며보는 원포인트 셀프 인테리어
명화로 꾸며보는 원포인트 셀프 인테리어이은콘텐츠
 
한 번에 개발하는 안드로이드&iOS 앱 with 앱메소드
한 번에 개발하는 안드로이드&iOS 앱 with 앱메소드한 번에 개발하는 안드로이드&iOS 앱 with 앱메소드
한 번에 개발하는 안드로이드&iOS 앱 with 앱메소드Devgear
 
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계승명 양
 
싱크로 4D BIM 서비스
싱크로 4D BIM 서비스싱크로 4D BIM 서비스
싱크로 4D BIM 서비스Taiheon Choi
 
2015년 온라인 모바일 이슈(f)
2015년 온라인 모바일 이슈(f)2015년 온라인 모바일 이슈(f)
2015년 온라인 모바일 이슈(f)Nasmedia
 
Unity Auto Build iOS
Unity Auto Build iOSUnity Auto Build iOS
Unity Auto Build iOSGiseok Lee
 
안드로이드 어플 개발 전략 10가지 2부
안드로이드 어플 개발 전략 10가지 2부안드로이드 어플 개발 전략 10가지 2부
안드로이드 어플 개발 전략 10가지 2부mosaicnet
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012devCAT Studio, NEXON
 
취미로 엔진 만들기
취미로 엔진 만들기취미로 엔진 만들기
취미로 엔진 만들기Jiho Choi
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발흥배 최
 
212140045 박채영 인데코
212140045 박채영 인데코212140045 박채영 인데코
212140045 박채영 인데코채영 박
 
게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴예림 임
 
Room Planner Project
Room Planner ProjectRoom Planner Project
Room Planner Project송 진수
 

Viewers also liked (14)

Smart Patient: 스마트폰 시대 환자들의 새로운 검색, 커뮤니케이션 문화와 대응방안
Smart Patient: 스마트폰 시대 환자들의 새로운 검색, 커뮤니케이션 문화와 대응방안Smart Patient: 스마트폰 시대 환자들의 새로운 검색, 커뮤니케이션 문화와 대응방안
Smart Patient: 스마트폰 시대 환자들의 새로운 검색, 커뮤니케이션 문화와 대응방안
 
명화로 꾸며보는 원포인트 셀프 인테리어
명화로 꾸며보는 원포인트 셀프 인테리어명화로 꾸며보는 원포인트 셀프 인테리어
명화로 꾸며보는 원포인트 셀프 인테리어
 
한 번에 개발하는 안드로이드&iOS 앱 with 앱메소드
한 번에 개발하는 안드로이드&iOS 앱 with 앱메소드한 번에 개발하는 안드로이드&iOS 앱 with 앱메소드
한 번에 개발하는 안드로이드&iOS 앱 with 앱메소드
 
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계
야생의 땅: 듀랑고의 시뮬레이션 MMO 샌드박스 설계
 
싱크로 4D BIM 서비스
싱크로 4D BIM 서비스싱크로 4D BIM 서비스
싱크로 4D BIM 서비스
 
2015년 온라인 모바일 이슈(f)
2015년 온라인 모바일 이슈(f)2015년 온라인 모바일 이슈(f)
2015년 온라인 모바일 이슈(f)
 
Unity Auto Build iOS
Unity Auto Build iOSUnity Auto Build iOS
Unity Auto Build iOS
 
안드로이드 어플 개발 전략 10가지 2부
안드로이드 어플 개발 전략 10가지 2부안드로이드 어플 개발 전략 10가지 2부
안드로이드 어플 개발 전략 10가지 2부
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
 
취미로 엔진 만들기
취미로 엔진 만들기취미로 엔진 만들기
취미로 엔진 만들기
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발
 
212140045 박채영 인데코
212140045 박채영 인데코212140045 박채영 인데코
212140045 박채영 인데코
 
게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴
 
Room Planner Project
Room Planner ProjectRoom Planner Project
Room Planner Project
 

Similar to iOS App 개발 with React Native + ClojureScript

AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In ProductionMooYeol Lee
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15Chanwoong Kim
 
React native 개발 및 javascript 기본
React native 개발 및 javascript 기본React native 개발 및 javascript 기본
React native 개발 및 javascript 기본Tj .
 
최광훈 포트폴리오
최광훈 포트폴리오최광훈 포트폴리오
최광훈 포트폴리오Kwanghoon Choi
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈NAVER D2
 
Single-page Application
Single-page ApplicationSingle-page Application
Single-page ApplicationSangmin Yoon
 
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월월간 IT 슬라이드
 
레일스를 이용한 애자일 웹 개발 가이드
레일스를 이용한 애자일 웹 개발 가이드레일스를 이용한 애자일 웹 개발 가이드
레일스를 이용한 애자일 웹 개발 가이드Sukjoon Kim
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍Chris Ohk
 
Collaboration with Eclipse final
Collaboration with Eclipse finalCollaboration with Eclipse final
Collaboration with Eclipse finalKenu, GwangNam Heo
 
Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.장현 한
 
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정양재동 코드랩
 
Docker와 DevOps에서 Serverless와 NoOps로의 여정
Docker와 DevOps에서 Serverless와 NoOps로의 여정Docker와 DevOps에서 Serverless와 NoOps로의 여정
Docker와 DevOps에서 Serverless와 NoOps로의 여정Kyuhyun Byun
 
Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현병태 정
 
[W3C HTML5 2017] Electron과 TypeScript로 만드는 Visual Studio Code, 그리고 ProtoPie
[W3C HTML5 2017] Electron과 TypeScript로 만드는 Visual Studio Code, 그리고 ProtoPie[W3C HTML5 2017] Electron과 TypeScript로 만드는 Visual Studio Code, 그리고 ProtoPie
[W3C HTML5 2017] Electron과 TypeScript로 만드는 Visual Studio Code, 그리고 ProtoPie양재동 코드랩
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: YeomanJae Sung Park
 
[OpenInfra Days Korea 2018] K8s workshop: Kubernetes for Beginner
[OpenInfra Days Korea 2018] K8s workshop: Kubernetes for Beginner[OpenInfra Days Korea 2018] K8s workshop: Kubernetes for Beginner
[OpenInfra Days Korea 2018] K8s workshop: Kubernetes for BeginnerOpenStack Korea Community
 
React native development
React native developmentReact native development
React native developmentSangSun Park
 

Similar to iOS App 개발 with React Native + ClojureScript (20)

AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15
 
React native 개발 및 javascript 기본
React native 개발 및 javascript 기본React native 개발 및 javascript 기본
React native 개발 및 javascript 기본
 
최광훈 포트폴리오
최광훈 포트폴리오최광훈 포트폴리오
최광훈 포트폴리오
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
 
Single-page Application
Single-page ApplicationSingle-page Application
Single-page Application
 
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
 
레일스를 이용한 애자일 웹 개발 가이드
레일스를 이용한 애자일 웹 개발 가이드레일스를 이용한 애자일 웹 개발 가이드
레일스를 이용한 애자일 웹 개발 가이드
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
 
Collaboration with Eclipse final
Collaboration with Eclipse finalCollaboration with Eclipse final
Collaboration with Eclipse final
 
Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.
 
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
 
Docker와 DevOps에서 Serverless와 NoOps로의 여정
Docker와 DevOps에서 Serverless와 NoOps로의 여정Docker와 DevOps에서 Serverless와 NoOps로의 여정
Docker와 DevOps에서 Serverless와 NoOps로의 여정
 
Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현
 
[W3C HTML5 2017] Electron과 TypeScript로 만드는 Visual Studio Code, 그리고 ProtoPie
[W3C HTML5 2017] Electron과 TypeScript로 만드는 Visual Studio Code, 그리고 ProtoPie[W3C HTML5 2017] Electron과 TypeScript로 만드는 Visual Studio Code, 그리고 ProtoPie
[W3C HTML5 2017] Electron과 TypeScript로 만드는 Visual Studio Code, 그리고 ProtoPie
 
AWS + Docker in Vingle
AWS + Docker in VingleAWS + Docker in Vingle
AWS + Docker in Vingle
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
 
[OpenInfra Days Korea 2018] K8s workshop: Kubernetes for Beginner
[OpenInfra Days Korea 2018] K8s workshop: Kubernetes for Beginner[OpenInfra Days Korea 2018] K8s workshop: Kubernetes for Beginner
[OpenInfra Days Korea 2018] K8s workshop: Kubernetes for Beginner
 
React native development
React native developmentReact native development
React native development
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 

iOS App 개발 with React Native + ClojureScript

  • 1. React Native 와 ClojureScript 를 조합한 iOS App 개발 2015.10.24 Clojure 스터디 모임 한철희
  • 2. 자기소개 • 스타트업의 Senior Programmer • iOS 개발 총괄 • Java, Swift, Objective-C • 6502 Assembly, FORTH, Haskell, APL … • finally, Clojure !!!
  • 3. 진행 순서 • iOS에서 Clojure를? • React Native + ClojureScript + ? • 예제 프로젝트 : React Native Duckie • 결론 : 왜 Clojure인가
  • 4. Q: 왜 iOS App을 Clojure로 ? A: 아직 newbie라서요
  • 5. iOS App dev. with Clojure 1. Native App - RoboVM 2. Hybrid Web App - Cordova + ClojureScript 3. Hybrid Native App - React Native + ClojureScript
  • 6. RoboVM • JVM bytecode를 ARM / x86 Native Code로 변환 • iOS / Android 앱 개발 툴 제공 • lein-fruit 플러그인 하지만...
  • 7. What if .. • 나는 지금 RoboVM 얘기를 신나게 하고 있었을 겁니다. • ...만약 Swift 가 없었 다면 말이죠
  • 8. Hybrid App + ClojureScript • 웹 기반이라면 ClojureScript로 해결 가능 • 검증된 하이브리드 앱 개발 방법론 • 자료 풍부 하지만...
  • 9. 개발은 시작도 안했는데 태 클이 • “모바일 웹은 느려” • “고객에게 최고의 사용자 경험을 제공함이 제1순 위 고려 사항” • “당신이 책임질래?”
  • 10. React Native • Facebook이 개발한 React(JS)에서 파생된 오픈소스 • JavaScript + JSX 로 개발 • View가 네이티브 방식으로 만들어 진다 • “Learn Once , Write Everywhere” • Native App 개발 지식 필요
  • 11. React Native + ClojureScript • React(JS) ClojureScript 인터페이스 • Om • Reagent • React Native도 React(JS) 처럼 JavaScript기반이므 로 Om / Reagent 둘 다 “사용”은 가능
  • 12. Early Adopters • React Native + ClojureScript 사례 - https://github.com/dmotz/natal : Om - https://github.com/chendesheng/ReagentNativeD emo : Reagent - https://github.com/mfikes/reagent-react-native : Reagent - http://cljsrn.org : 관련 정보 정리
  • 13. Reagent • Om보다 나중에 만들어졌다 ( JSX 도입 이후 ) • Om보다 경량 • Om보다 간단(상대적) • 아직 깔끔한 Bootstrap 은 없음
  • 14. 결정 ! • React Native + ClojureScript 사례 - https://github.com/dmotz/natal : Om - https://github.com/chendesheng/ReagentNati veDemo Reagent - https://github.com/mfikes/reagent-react-native : Reagent - http://cljsrn.org : 관련 정보 정리
  • 16. React Native Duckie • Internet of Things • BLE , Motion , Temperature Sensor • 환경 변화에 반응 ➡탕온계 prototype 를 만들었습니다
  • 18. 개발/동작 환경 • Xcode 7 • Atom • Terminal • iPhone 5S • ReagentNativeDemo 를 개조 • Trial & Errors
  • 19. React Native프로젝트를 Reagent로 바꾸기 • 뷰 컴포넌트 작성 • 자바스크립트 변환 • 네이티브 라이브러리 붙이기 • React Native 플러그인 붙이기
  • 20. reagent 세팅 • react-native init HelloWorld • ReactNativeDemo 의 reagentnative 폴더를 복사 • AppDelegate.m 수정 - 2줄 • lein cljsbuild auto • Xcode 실행 • core.cljs 편집
  • 21. 프로젝트 파일 • github에 공개 https://github.com/cheolhee/ReactNativeDuckie • 일부 코드는 변형/삭제됐음을 양해 바랍니다.
  • 23. 왜 Clojure인가 • LISP : 검증된 고전 • 함수형 패러다임 • Java 자원 활용 가능 - 👍 • 문법이 심플 - 😮 • 스타트업의 개발자로서, 재미짐
  • 24. Links • https://facebook.github.io/react/ • http://facebook.github.io/react-native/ • https://github.com/clojure/clojurescript • http://cljsrn.org