-
[iOS:컨퍼런스] Let's Swift 컨퍼런스 컨텐츠 작성중컨퍼런스: Conference 2018. 11. 5. 13:54
렛츠 스위프트
Let's Swift 2018
( 수정 및 정리중 )
- 11월6일, 한국과학기술회관
Program발표 세션 워크숍 세션 09:00-10:00👋 참가 등록 09:00 10:00-10:20키노트김정 10:00 10:25-10:55사이드 프로젝트로 앱스토어 1위 공략해보기노수진 11:00-11:30iOS 💖Ruby김은영 11:00 11:00-12:05클린코드와 코드리뷰김정 11:35-12:05TDS (Toss Design System) v2 소개이택규 12:00 12:05-13:00😋 점심시간 13:00-13:30RxRIBs, Multiplatform architecture with Rx김남현 13:00 13:00-14:05Debugging with Xcode, LLDB and Chisel안정민 13:35-14:05ReactorKit으로 RxSwift 시작하기김태준 14:00 14:10-14:40ReSwift와 함께 Unidirectional Architecture황재욱 14:10-15:15AI in iOS이승윤 14:45-15:15RxSwift Internal오진성 15:00 15:20-16:00☕️ 쉬는시간 16:00-16:30GraphQL over Rest API이봉원 16:00 16:00-17:05Let's TDD전수열 16:35-17:05SIMD & MPS in Swift양승헌 17:00 17:10-17:40☀️ 미스터션샤인홍길동 17:40-18:00🎁 경품추첨
10 : 00 키노트- Swift Release TimeLine
- Rank 10 위에 안착한 Swift, objective-c 까지 합하면 7위정도 네?
- 새로운 스위프트 소식들.
- Swift5
- ABI Stability
- 런타임 API 생길 것 같다.
- Swift-NIO
- 로우레벨한 네트워크 프레임워크
- 서버 사이드 프로젝트를 더 좋게 구현할 수 있음.
- 백 엔드 할 분들은 봐보세요
- Swift-Syntax
- 데모 형태에서 로컬 형태로 해서 성능 좋게 만드는 것.
- 스위프트로 스위프트 네이티브 바인딩하는 오픈소스 프로젝트가 활성화 되어있음,
- Swift- LSP
- 오픈소스 프로젝트로 시작될것.
- 곧
- Language Server Protocol
- xcode 가 아닌 환경에서 swift 를 쓸 수 있는 환경이 제공될 수 있음.
- 새로운 플레이그라운드 만드는 개발자도 있다 하더이다.
- 설문조사
- 코드리뷰 하고 있는지
- 아니요가 58%
- TDD
- 아니오가 45%
10 : 25 사이드 프로젝트로 앱스토어 공략해보기
- 보안카드 위젯 개발 했어요~
- 출시 단계를 4단계로 나눴어요
- 아이디어
- 앱스토어
- 초기사용자
- 발품팔아서 모아야해
- 입소문 타고 성장
- 이 단계가 짜릿ㅋㅋ
- 사용자 피드백 해줌
- 블로거들이 리뷰해줌
- 아이디어 단계
- 작고 재미있는 아이디어
- 퇴근 후에 해야하기 때문에 재미없으면 못함.
- 3달 안에는 출시를 해야.
- 기획단계
- 비지니스 모델을 고민많이 해야.
- 광고수익 발생 안되서 앱 내림.
- 사용자 모으기
- 커뮤니티 사이트 위주로 광고를했음.. 글을 올리는
- 어느정도 후엔 페이스북 유료 광고 써봤음 10만원
- 1명당 1500원 이었는데 앱은 1달런데.. 손해 보고 있었음.
- => 손해였지만 앱스토어 순위권에 있는게 더 중요하다고 생각했음. 개인개발자니까.
- 그러다 보니 앱 리뷰해주는 블로거들이 있었음.
- 그들에게 앱을 무료로 받을 수 있는 코드를 주었음
- Redem code 라는 사이트 를 이용했음. 자판기같은
- 유저들과 소통하기
- 개선점, 버그리포팅... 그려주는 사람도 있었다.. 얼굴도 모르는데.
- 소통할 수 있는 채널이 중요하다 생각
- 페이스북 채널을 개설했음
- 앱 전용 이메일을 만들어서 이메일로도 피드백 받음
- MFMailComposeViewController 를 사용해서 앱을 떠나지 않고 메일로 소통할 수 있는 것을 이용했다.
- 페이스북으로 올줄 알았는데, 메일로 제일 많이 피드백이 왔다.
- 앱스토어 리뷰도 개발자가 답변 달 수 있게 됬음.
- 치명적인 버그가 있을때 '긴급 리뷰' 를 이용했음
- 어디까지 사용자의 리뷰를 허용해야 하는가룰 고민했다. 그냥 욕하는 사람도 있으니까.
- 앱스토어 리뷰 관리하기
- 개인개발자기 떄문에 리뷰만큼 중요한게 없다. 대기업 앱은 어느정도 보장이 되어 있는데 개인은 아니니까.
- 4별부터 앱 다운로드 90% 이상 3별 이 50%인데...
- 부정적인 사람이 리뷰를 작성하러 달려가기 때문에 적절한 곳에 개발자에게 직접 컨택할 수 있도록 적절한 곳에 컨택을 할 수 있는 UI 를 넣는 것등의 노력이 필요.
- 적절치 않은 리뷰는 애플에 문제 리포트를 제출해서 지울 수 있음 ㅗ ㅗㅗ 이런 리뷰둘.
- 앱 리젝
- 그냥 리젝이랑 메타데이터 리젝 2가지가 있네
- 이의 제기 신청가능한데 안받아줌
- 걍 고치고 내야댐을 경험으로 배웠데
- 아주 자세하게 리젝해줌
- 수입
- 2위했을때 150~200다운로드 최고 500다운로드 , 현재 평균 한달 20~30만원
- 2달러로 올렸다가 피봤음. -> 골목상권이니까 옆집이
- 디자인을 해주는 친구가 있었음
- 그 친구와 수익을 쉐어 했음.
- 판매 그래프 이상해..
- 아이폰 출시됬을 떄 판매량이 급증 하더이다.
- 사람들은 계속 새로운 앱을 사용하는 구나
- 키체인을 아이클라우드로 백업하는 방식
- 결론
- 쉬운 것은 아니다. 하지만 사용자들이 원하는 것을 만들어 주는 경험.
11:00 iOS and Ruby- Minne 라는 서비스
- 애플페이 관련인듯
- 왜 스위프트에서 루비?
- 루비
- 맥에 기본적으로 설치되어 있음
- Gem :
- 루비의 라이브러리
- 코코아 팟도 루비의 gem
- 버전관리 'Bundler' 를 이용
- 음
- tachikoma
- 코코아팟과 깃허브 관련된 것들 자동으로 풀리퀘스트 해주는 .. 그니까 번거로운 것들을 대신 해주는 거네.
- 내가 쓰고이쓴ㄴ 라이브러리들 새로운 버전 나오면 자동으로 최신버전으로 업데이트 되는 거네.
- CI Tool 로 이용해서 쓰는게 빛을 바란다.
- danger
- 자주 실수하는 코드를 등록함.
- 코드리뷰 로봇 이라고 볼 수 있음.
- 스토리보드 부분을 체크하는 것으로 활용함에 좋아여
- 스토리 보드를 주로 사용하는 팀이 있다면.
- houston
- 서버없이 푸쉬 노티피케이션 테스트 할 수 있는
- tenma
- 릴리즈 준비 자동화 툴임
- 릴리즈 브런츠 준비가 매번 같은 번거로운 동작 => 실수 가능성있으므로 만들은듯
- Fastlane
- 모바일 어플리케이션 배포 자동화 툴
- 앱스토어 신청때 프로비저닝 파일 등록 번거로운 작업 커맨트라인 한줄이면 됨
- CI Tool
- 결론
- 반복되는 것들은 최대한 자동화 합시다.
- 질문
- 일본은 일자리가 남는단다.
- ios 점유율 에 따른 개발자 대우
- 컨퍼런스 문화 잘 발달되있음,
- 개발 순서에 따른 Gem 사용
- 내 생각
- 발표에서 목소리는 중요하다 너무 커서 귀가 아프다.
- tenma 의 경우보면 내가 필요한 것들을 라이브러리로 만들어서 사용할 수 있는게 Ruby 만인가? 이런거 만들고 싶은데.
11:35 Toss Design System ( TDS ) v2 소개- 토스에서 iOS 개발자 입니다~
- TDS 를 개발했대..얘네는 그런과정을 알려준대
- TDS 전에는 어떤 일 또는 문제점이?
- 앱에서 사용할 수 있는 것들을 관리하고 구조화 해 왔다.
- 새로운 것을 만들기 위해 레고블럭들을 정리해왔다고 생각하면 됨
- 통일된 유아이를 성공해지만 통일된 사용자 경험을 제공하진 못했음.
- v2 에서는 의미 단위로? 확장하자?
- 정리
- 통일 성있는 룩 앤 ㅂ필
- 커뮤니케이션 쉬워짐
- 시간 단축
- 코드
- 코드로 구현하려면
- 쓰기 편해야 하고
- 개발자들은 비지니스 로직에만 집중, 디자인관련 코드 신경쓰지 않고
- 프로토콜로 구현해서 확장 가능한 형태
- 모든 TDS 컴포넌트는 UICollectionViewCell 가 슈퍼클래스
- 컴포넌트에서 발생하는 모든 이벤트를 Protocol-base 로 처리함.
- 어떠한 요구사항이 들어와도 최소한의 노력으로 유아이를 짤 수 있게 하는 게 목적
- 메인 프로젝트와 별로 모듈로 관리해서 비지니스 로직과 분리한다. -> 컴파일 시간 단축
- 시행착오
- TDS 쉽고 빠르지만, 개발자의 효율성 vs 디자이너의 창의성 , 이 간격을 어떻게 줄이느냐!
- 비지니스에 따라 구분되되는 TDS 컴포넌트들을... 더 일반화 할 수 없을 까?
- 정리
- 진행중인 프로젝트임
- 질문
- 토스 iOS개발자 몇명? 9명
- 안드로이드 아이오에스,
- 컴포넌트 개발하는 개발자 따로있나요? 한명씩 있어 플랫폼별로
- 외부 공개 의향은 있지만 완성도 있을 때
- 컴포넌트들 네이밍방식?
- 따로 정해져 있는 네이밍방식은 없다
- 가로든 세로든 구현 모두 가능하다. 모두 비율로 ( 오토레이아웃 쓰는듯 ) => 개인적인 경험으로는 굉장히 편해졌다.
13:00 RxRIBs, Multiplatform architecture with Rx
- 비트윈와 TADA 개발하고 있는 분
- TADA 에서 쓰는 것들
- 새로운 아키텍처를 왜 찾게 되었는가?
- 소카와 합쳐지게 됨과 동시에 타다 를 준비하게 됨
- 타다 라이더 앱, 타다 드라이버 앱 두개 만들어야 했고 주어진 시간은 3개월
- 알파버전은 한 두달 -> 빨리 시장에 내놔서 노하우 알려고
- 시간이 없으니 효율성이 중요!
- 두 플랫폼간 따로 하는게 비효율적 -> 초반 시간 투자해서 멀티로 하기로 결정
- MVC 패턴 피한다.
- 뷰 컨트롤러 비대해짐. 비트윈에서 경험
- 그래서 우버의 RIB 씀 크로스 플랫폼 모바일 아키텍쳐
- RIBs (5개)
- Router Interactor Builder
- 립이란 단위가 있다.
- Interactor
- 비지니스 로직 담당
- Router
- 립스 들 사이에 라우팅을 도와주는 Helper
- Builder
- 립 유닛들을 빌드하는 역할
- 재사용성 극대화시키는 아이래
- View
- 레이아웃, 애니메이션
- Presenter
- 뷰가 이해할 수 있는 형태로 변환해 주는
- 모든 모바일의 상태 (홈화면 , 백그라운드 등이 상태) 는 트리구조로 만들 수 있다. 고 우버는 판단
- 앱의 서비스 시작부터 끝까지 그 상태를 모두 표현가능
- 뷰를 기준으로 트리로하면 자식노드가 많게 즉 비대해지므로 관리어려움
- 각 립을 기준으로 독립적으로 일을 할 수 있음
- 립은 애니메이션 힘듬
- HeroTransitions 프레임워크 사용가능 있어보이는 앱 만들 수 있어
- 정리
- 적절한 아키텍처가 있기 마련
- 여러 선택지중 RIBs 도 있고 이걸 이러이러하게 썼다.
- 질문
- 유닛 테스트를 하지만 TDD 를 하진 않는다.
- 구글지도를 채택한 이유는? 한국은 네이버지도가 좀 더 정확하지 읺나요?
- 확정은 아니지만 네이버지도를 사용할 것 같다.
13:35 ReactorKit 으로 RxSwift 시작하기
- RxSwift 쓰면서 어려웠던것과 극복한 이야기
- 왜쓰냐?
- 강력한 비동기 처리
- 간결한 코드 -> 가독성도 향상
- 왜이렇게 어려워?
- 처음보는 문법과 용어
- 에제마다 다른 코드스타일
- 검색결과도 적고 신뢰도에 의문이 가는 것들도 있음
- => 러닝커브가 높았다.
- 채팅 = > 대표적인 비동기 -> 아 Rx 써야겠다 생각함
- RxSwift 는 라이브러리 , ReactorKit 는 프레임워크
- 단방향 데이터 흐름.
- RxJS marble 이란 사이트에서 테스트해볼 수 있는듯
- 정리
- RxSwift 아예알지못했지만 ReactorKit 으로 시작할 수 있었다.
14:10 ReSwift와 함께 Undirectional Architecture
- qanda 를 reSwift 로 개발
- Redux + Swift 라고 추론했음
- 리덕스가 뭔데?
- 플럭스 ...
- 플러스가뭔데? : 뭐단방향 ... 이 Flux 의 스위프트 버전이 ReSwift
- 중앙 데이터 관리자를 통해 단방향 데이터 흐름을 구현한 라이브러리
- 내 생각
- 듣다보니 니껴지는 건데, 앱 개발할 떄 데이터 흐름과 상태변화, 액션 등이 키워드 인듯
14:45 RxSwift Internal
- 하이퍼 커넥트에서 근무한다.
- RxSwift 써본 경험이 있는 분들을 대상으로 한더이다~
- 난 아니니 패스
16:00 GraphQL over Rest API
- 초기 소켓프로그래밍
- 불특정다수 ㄴㄴ
- 이후 XML_RPC
- 이후 SOAP
- 이후 REST
- 개발자 이해도에 따라 구현 달라지고
- 그리고 나온게 GraphQL
- 그래프 -> 실세계의 데이터를 표현 가능
- QL -> Query Language
- GraphQL
- 정해진 데이터 내려받는개ㅔ 아니라 클라이언트가 쿼리 작성하고 요청함.
- 단 한번의 요청으로 원하는 데이터 모둥 얻을 수 있음.
- 완전한 라이센스 자유. 걱정없이 사용하세여
- 깃허브 API 버전 4 부터 그래프 큐엘로 제공함
- REST 는 원하는 데이터를 한번에 얻지 못하니까 여러변의 리퀘스트 필요.
- 하지만 그래프큐엘 한번의 요청으로 해결
- REST 불필요한 데이터까지 다 받아야해
- REST 는 여러 URL 알아야해 그것은 여러 엔드포인트가 있다는 말
- REST 는 버전에 따라 안돼
- GraphQL 기능들
- Query
- 읽기요청
- 필수구현사항임
- 겟대신 포스트
- 원하는 필드만 요청할 수 있음
- Mutation
- R 제외한 CRUD
- 여러개 요청 동시에 보냈을 때 경합이 발생하지 않도록 한번에 하나씩 (쿼리는 병렬처리)
- Subscription
- Apollo-iOS 가 라이브러리
- 깃허브 에서는 한시간에 60번 횟수제한 둠. 레스트
- 깃허브에는 그래프 큐엘에서는 개별요청은 50만 노드를 넘기면 안된다.
- 깃허브에 그래프 큐엘에서는 한시간에 5000포인트 , 서버 부하량 기준으로 계산함.
- 질문
- 한국이 늦는 이유.
- 이거뿐만 아니다.
- 내 생각
- 이거..좋은데?
16:35 SIMD & MPS in Swift
- 게임 만들고 있어
- Software is not a platform
- SnappyCam
- 애플이 인수한 회수
- 애플 내장 카메라보다 빠르게 200장 찍어내는 앱
- 개발자 인터뷰
- 최적화 했다.
- Accelerate Framework
- CPU 위에서 빠른속도로 컴퓨테이션을 제공한다.
- simd, compression
- simd 이야기 할기야 .
- ..효율적인 계산 제공하는, 애플에서
- 벡터 프로그래밍
- 큐브 코어그래픽스로 구현했음
- 로직순서
- 꼭지점 , 회전3 번, 투영 1번 ,선그리기
- 8개 꼭지점 , 화면에 투영, 화면에 선 그리기
- 회전
- 코어그래픽스 가 제일 훌륭한 라이브러리라고생각
- 원근법도 구현할 수 있음
- 아이폰 x 로 simd 성능 비교했을 때 10배이상 난다. 다른 것에 적용했는데 적어도 40% 이상 나더라
- simd 이렇게 좋은데 잘 안씀..ㅠㅠ 쓰세여.
- 내생각
- 이분은 데모와 직접 시연해주는 거 봤는데, 발표에 데모는 필수다.
- 최적화와 성능에 대한 고민은 중요하다고 느꼈음
- Metal Performance Shaders
- OpenGL , OpenCL 애플이 deprecated 했음.
- 앞으론 Metal 사용해라 헀음.
- GPU Software Team 에서 만듬, 애플
- Accelerate 프레임워크와 매우 유사해.
댓글