React Native 클로져로 개발하시는 분 계신지요?

236 views
Skip to first unread message

Moon James

unread,
Mar 22, 2016, 3:10:23 AM3/22/16
to Korean Clojure User Group
오랜만에 들어와 보니 클로져 번역서도 나오고, 다들 활발하게 스터디 하시는 것 같네요..  부럽.. ㅎㅎ

저는 지난 가을부터 조금씩 해오던 프로젝트가 있는데요, 제가 iOS를 하고 다른 분이 안드로이드를 하려고 하는데..

이걸 클로져로 개발해볼까 궁리중입니다.  RN 을 보니, 컴퍼넌트도 얼마 없는 것 같고..  아직 갈길이 멀어 보이기는 하는데요..

UI 를 가장 간단히 구현하고 (지원하는 컴퍼넌트만 쓰고), UI 와 서버 접속 로직의 공유 정도만 되더라도 장기적으로 시간을 세이브할 수 있을 것 같고..  일단 클로져로 작업해보고 싶은 면도 있구요.. ㅎㅎ

그래서 질문 드립니다.  (어제부터 cljsrn 슬랙 채널을 보고는 있습니다만 궁금한 게 있어서요)

> 일부 구현을 네이티브로 할 경우라든지 아니면 어떤 경우에라도 자바스크립트를 알아야 할 경우가 있을까요?  (클로져나 안드로이드 자바, iOS 스위프트 등은 얼마든지 공부하겠지만, JS 를 또 공부해야 하는 건.. 억울.. ㅠㅠ)

> 혹시 써보신 분이 계시다면 얼마나 안정적인지..  이걸로 실 서비스를 제공하는 앱을 만들어도 될지.. 조언 부탁드려요.

이와 관련된 다른 조언도 부탁드립니다.

감사합니다..




김영태

unread,
Mar 23, 2016, 2:39:59 AM3/23/16
to Korean Clojure User Group
React Native는 실제로 써 보지 않아서 저도 잘은 모릅니다만, 아무래도 실전 프로젝트에 적용하기에는 아직은 시기 상조인 것으로 보입니다.

React Native가 Android나 IOS API를 자바스크립트로 wrapping한 것이어서, 클로저스크립트를 이용해야 할 것으로 보이는데, 그렇다면 직접 자바스크립트로 프로그래밍해야 하는 일은 없겠지만, 최소한 클로저스크립트의 자바스크립트 interop을 이용해 자바스크립트 라이브러리 함수들을 호출하는 식으로 프로그래밍해야 합니다.

React Native와 관련된 클로저스크립트 라이브러리로 re-natal이라는 것이 있습니다만, 소스 코드를 직접 살펴보면 아시겠지만, 해 놓은 것이 별로 없는 상태입니다.


그런데, 현재  Reactive Native의 모든 라이브러리를 클로저스크립트로 wrappinge해 놓은 라이브러리가 없는 상황이라서, 이런 경우에는 클로저스크립트로 자바스크립트 프로그래밍하는 것과 크게 다르지 않은 상황이 되어 버립니다. 그래서 클로저스크립트 프로그래밍이라고 부르기 어려운 코딩이 나올 것 같습니다.

아울러, React Native가 아직은 성숙한 프로젝트가 아니어서, 문제에 부딪혔을 떄 문제 해결에 필요한 조언이나 정보를 얻기 힘들다는 점도 장애로 작용할 것으로 보입니다.

저의 경험으로는 mobile app이 15 fps 이상의 화면 갱신율을 가지지 않는다면, cordova나 phonegap 같은 tool을 이용하시는 것이 더 낫지 않을까 판단됩니다.


2016년 3월 22일 화요일 오후 4시 10분 23초 UTC+9, Moon James 님의 말:

박상규

unread,
Mar 24, 2016, 2:01:59 AM3/24/16
to cloju...@googlegroups.com
저도 React Native(RN)를 써 본 적이 없어서 도움이 되는 경험을 공유해 드릴 것은 없지만...사견을 좀 적어봅니다.

사실 저는 RN보다는 React를 이용한 하이브리드앱에 더 많은 표를 줍니다만, 화려한 UX를 제공하는 앱을 위해서라면 역시 RN으로 해야겠죠. 

하지만 RN은 기존 IOS나 안드로이드 개발자분들에게는 상당한 매력을 주는 것은 사실인 듯 합니다.
(아래 두 링크를 보시면 가히 폭발적 인기를 끄는 모양인 듯...)




그렇지만, 이미 보셨겠지만, 다음 링크는 React Native(RN)로 만든 앱들 리스트인데, 리트업된 앱들이 100% RN으로 되어 있지는 않다고 하는 걸로 봐서는...일부 기능은 Native로 가게 되지 않나 추측해 봅니다.


그리고 Clojurescript를 하려면 어느 정도(?)는 자바스크립트의 문법 지식을 알기는 해야 하는 것도 사실이구요...

이거 별로 도움이 되지는 못한 듯 하네요...^^;;;
만약 RN으로 개발을 계속 진행하시게 되면 좋은 경험 공유 부탁드려요...




2016년 3월 22일 오후 4:10, Moon James <jm9...@gmail.com>님이 작성:

--
이 메일은 Google 그룹스 'Korean Clojure User Group' 그룹에 가입한 분들에게 전송되는 메시지입니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 clojure-kr+...@googlegroups.com에 이메일을 보내세요.
이 그룹에 게시하려면 cloju...@googlegroups.com에 이메일을 보내세요.
웹에서 이 토론을 보려면 https://groups.google.com/d/msgid/clojure-kr/18f3b250-7c57-4ebd-b046-1bad17f88f4f%40googlegroups.com을(를) 방문하세요.
더 많은 옵션을 보려면 https://groups.google.com/d/optout을(를) 방문하세요.

김영태

unread,
Mar 24, 2016, 7:56:16 AM3/24/16
to Korean Clojure User Group
한철희님이 IOS 용  re-natal 예제를 만드셨네요. 참고하시기 바랍니다.



2016년 3월 22일 화요일 오후 4시 10분 23초 UTC+9, Moon James 님의 말:
오랜만에 들어와 보니 클로져 번역서도 나오고, 다들 활발하게 스터디 하시는 것 같네요..  부럽.. ㅎㅎ
Message has been deleted
Message has been deleted

Moon James

unread,
Mar 24, 2016, 10:07:38 PM3/24/16
to Korean Clojure User Group
두분 답변 감사합니다.  re-natal 은 간단히 테스트를 해 봤는데..  그 다음부터는 막막하더라구요.. ㅎㅎ  
제가 자바스크립트, 클로져, 노드 ..  이런거에 대해 거의 아는 게 없는 수준이다보니.. 
그런데 15 fps 는 어디서 나온 수치인가요?  RN  이 네이티브를 써서 성능은 굉장히 좋다...  라는 것만 봐서 좀 새로운 이슈 같아 보입니다.
한철희님 덕키..  그 소스는 한달 전 쯤엔가 봤는데, 새로운 걸 만드셨네요..  한번 봐야겠습니다.ㅎㅎ

JS 에서 네이티브를 쓸 수 있다.. 
클로져 스크립트에서 JS 를 부를 수 있다..
이론상으로는 다 되는데..  그 방법을 알고..  코딩을 하고..  그게 얼마나 효율적일 지..
클로져 공부삼아 해보는 건 되겠는데..
좀 더 파봐야겠습니다. ㅎㅎ


2016년 3월 24일 목요일 오후 8시 56분 16초 UTC+9, 김영태 님의 말:
Message has been deleted

김영태

unread,
Mar 24, 2016, 10:35:46 PM3/24/16
to Korean Clojure User Group
예전에 Hybrid app으로 game을 만들어 볼까 하고, 사전에 직접 테스트해 본 결과입니다. 
15 fps 이상 나오지 않아 결국 포기했습니다. 게임을 만들려면 최소 30 fps 이상은 나와야 하거든요.

그리고 위의 테스트는 React Native 상에서 테스트한 것이 아니라, Cordova와 같은 Hybrid app 상에서 
테스트한 것입니다. 

2016년 3월 25일 금요일 오전 11시 7분 38초 UTC+9, Moon James 님의 말:

CH

unread,
Mar 25, 2016, 5:40:10 AM3/25/16
to Korean Clojure User Group
예제를 2개 만들어 본 느낌을 적어 봅니다.

- React Native 의 콤포넌트에 대한 이해. 이건 Native 앱 만드셨다면 이해가 가능할 겁니다.

- Reagent 이해 : 사실 이게 제일 중요할 듯 합니다. Reagent 말고도 ClojureScript로 RN 래핑 라이브리리는 Om, Re-frame도 있다는데
결국 각자 자신만의 철학으로 Wrapping을 하는 것 같습니다 ( .. 같습니다. 라고 적은 이유는 실제 제가 코딩해본 것은 Reagent 뿐이라 )
이건 결국 ClojureScript, ReactJS 에 대한 이해도 필요할 듯 한데 저도 아직 본격적으로는 분석 못했습니다.

- CSS 에 대한 이해 : 화면 레이아웃 신택스로 CSS를 사용합니다. 특히 flex box에 대한 이해가 필수.

- 네이티브 기능 확장 : React Native Duckie 는  BLE비콘 스캔 기능을 ObjC로 짜서 확장했었습니다. 생각보다 바인딩은 쉽게 되더군요.
RN으로 구현하기 골치 아프다 싶은 기능은 그냥 ObjC로 만들어버리고  RN은 철저하게 View만 사용하는 아키텍처도 가능은 하리라 봅니다.

- JS에 대한 지식은 생각보다 필요 없을지도...?  RN의 아키텍처가 코딩언어만 JS일뿐 JS와는 많이 다른 별개라고 생각합니다.


삽질(..)하면 느낀 우려되는 점 

RN은 JS기반이라  CLJS의 맵이나 벡터는 사용할 수 없고 반드시 clj->js로 변환해주는 작업이 필요합니다. 그 반대도 필요하고요.
RN의 콤포넌트끼리 조합할 때 Reagent가 중간에 끼면 오동작하므로 Unwrapping (적절한 용어는 아님..) 도 필요합니다.
제가 올린 Cat-API-Reagent-Native  받아서 core.cljs 보시면.. ListView 관련 코드가 엄청 더티..합니다.
ListView에 Row(iOS라면 Cell ) 붙이는데 처음에는 그냥 죽 붙였다가  아무리 해도 동작을 안해서  며칠 삽질한 결과, 
결국  https://github.com/mfikes/reagent-react-native 샘플 코드 보고 겨우 방법을 찾았습니다.

본격적으로 개발을 하게 될 때 이런 막힘... 을 또 겪는다면 어찌될지? 
실무에 적용하기에 리스키하다는 생각이 들더군요.  Best Practices, TroubleShootings 가 아직 덜 쌓인 느낌?


그래도..  CLJSRN 는 저로서는 아주 흥미있는 작업입니다. 
REPL가 가능한 Native App..  도전할 가치가 있다고 생각합니다.


박상규

unread,
Mar 25, 2016, 9:47:02 AM3/25/16
to cloju...@googlegroups.com

유일하게 RN을 경험하신 분의 경험 공유...감사합니다...^^

2016. 3. 25. 오후 6:40에 "CH" <apps...@gmail.com>님이 작성:
--
이 메일은 Google 그룹스 'Korean Clojure User Group' 그룹에 가입한 분들에게 전송되는 메시지입니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 clojure-kr+...@googlegroups.com에 이메일을 보내세요.
이 그룹에 게시하려면 cloju...@googlegroups.com에 이메일을 보내세요.
Reply all
Reply to author
Forward
0 new messages