KSDC에서 주최하는 컨퍼런스에 참여하기 위해 오랜만에 판교에 왔다. 지난 임팩톤에 이어서 두 번째로 왔다.
KSDC란? Korea Student Developer Group의 약자로, 배움에 열정이 있는 개발자들의 모임이다.
이 행사에서 앱 개발에 관한 정보를 얻기 위해서 참여했다.
KSDC의 수장입니다.
케이크 처럼 먹는 OO 행사 준비하고 있으며
미션: 함께하는 성장을 목표로 한다.
앱에 관한 지식을 나누고 정보를 얻어가는 컨퍼런스로 정보 잘 받으시면 좋겠다.
구글 대만에 간 활동 -> 대만 구글에 다니는 사람과 아는 사이
회사에서 리액트 취미로 플러터
플러터란 무엇인가
구글이 만드는 오픈 소스 크로스 플랫폼 프레임워크다.
웬만한 모든 환경을 지원한다.
일반적으로 안드로이드와 ios로 사용한다.
단점: 기존 단계에서 한 단계를 더 거치므로 더 느릴 수 있음
근데 flutter는 이런 제약이 거의 없다고 생각하면 된다.
선언형 ui(최종적인 결과) 사용
많은 회사들이 flutter를 사용
이대로 공부해보세요
1. dart 문법 익히셈
2. 화면 작성에 익숙해지셈
3. 상태 관리와 네비게이션
복잡한 상황이 되면 상태 관리가 어려워질 수 있다.
4. 전역 상태 관리(Riverod, BloC, Provider)
파일 구조가 딱히 정해진 게 없다.
5. 통신하셈(http, dio)
취미용 체크리스트
1. 컨셉
2. 기획 디자인
3. 목업(샘플) 데이터 작성
4. 상태 및 네비게이션
5. 외부 api 통신
6. 테스트
7. 배포
장문의 피드백이 오기도 한다.
플러터 패키지 잘 사용하셈
실무 체크리스트
1. 로그인/인증
2. 푸시 알림(초 중요)
3. crashlytics, 에러 로깅 도구
4. 자동 업데이트
5. 테스트 자동화
6. ci/cd
회사 입장: 기술 > 비즈니스
경쟁력 새로운 기술을 두려워 말기
커뮤니티 지식 공유
마치며
플러터 여정을 시작하신걸 축하합니다.
다른 분야와 크게 다르지 않다.
나중에 강의 받으러 가야 됨 난.
Future Flutter
나만네컷 만듬 미국에서 원격으로 발표 중이라 현재 시간 1시이고 컨디션이 안 좋은 거 양해 바람.
swift ui가 뭔가
ios는 준비할 게 굉장히 많다.
폐쇄적인 환경이다.
obj-c로 객체 지향을 사용하며 ios 개발을 함.
근데 왜 ios에
next가 뭔데 예전에 애플 컴퓨터에 쓴 os다.
swift로 obj-c 대체
uikit로 swift로 ui를 어케 짤 건지 도움을 줌
2019년에 swiftui 등장
왜 나옴? 선언형 ui로 사용하다 보니 개발 속도가 느려짐
모든 애플 os에서 사용가능
어떤 걸 사용해야 하냐?
저수준아니면 obj-c 안씀 웬만하면 swift, swift-ui 씀
근본파 vs 개혁파
개혁파 vs 개선파
모든 사람을 위한 거냐? 최신이 먼저냐? 기준
공식 문서를 따라가셈
mvp
나만 네컷을 토대로 얘기 하겠음
인생 네컷 빌리는 데 비싸요 -> 내가 만든다.
1. 설계
2. 로직(핵심 먼저, 이후 디자인)
3. 프레임워크
4. mvvm, mvc 디자인 패턴
5. 폴더 구조
배포
귀찮죠.
그래서 내맘 네컷도 깃헙에 코드를 둠.
인스타 그램 릴스의 선택을 받음.
배포를 하기 위한 심사
권한 요구 알림 창 더 상세하게 쓰셈
로그인이 왜 필요함?
비로그인도 만들어 주셈
애플 로그인 안됨
배포 시 필요한 것들
피드백이 337개 문제점... 고쳐야 겠지?
스택이 계속 쌓이는 버그가 있어 성능 문제가 발생한 거 해결했다.
여름철 바닷가 조심하세요. 다리 다쳤어요.
rn은 learn once, write anywhere을 지향한다.
따라서 원가 절감에 니즈를 충족할 수 있다.
거의 동일하게 화면을 보여줌
하나 하나 보자
번들링을 이용해 파일을 묶는다!
metro 번들러는 유틸성 코드(polyfill) 주입, 네이티브 초기화를 해준다!
babel를 사용해 코드를 변환한다.
런타임 필수임
js engine로 된 엔진으로 WebAPIs, queue, event loop를 거침
첫 선택은 쓰지마라 - c로 만든 jsc
유지 보수 빡세요.
엔진 추상화
android/ios c++로 명령을 보내 jsi호출
메모리 업데이트 시 반영됨
1. 네이티브 모듈을 호출하면 js엔진에 값을 전달
2. 호스트 함수로 값이 전달, c++ 다이나믹 타입으로 변환함
3. 값이 네이티브 모듈 인프라로 전달
4. 플랫폼 타입으로 변환, 메소드로 호출
렌더링 전략
마지막
성능 개선 프로젝트
뉴 아키텍처
1. 터보 모듈, 콜드 스타트로 시작 속도 개선
2. fabric, ui 렌더링 아키텍처, 상호작용을 스레드에서 동기적으로 처리
3. codegen, 코드 타입을 js에서도 정적 타입 지정 지원
완전 처음 하시는 분들이라면 클론코딩 추천.
블루투스 같이 네이티브 기능에 접근할 수 있도록 만든 건 사람들이 뚫은 거다.
컴포넌트 분리 시점해서 바라봅시다.
하나의 컴포넌트는 하나의 문제를 해결하도록
저수준의 api를 호출해서 구현함
고수준 컴포넌트 일 수록 동작의 정의는 명확해지고 커스텀의 여지는 적어짐
독립적으로 동작하는 ui제공하는 게 고수준 컴포넌트
컴포스를 가장 많이 쓰는거 ui
네이밍 규칙
명사 사용, 파스칼 케이스
값 반환 시 소문자로 시작
함수 재호출시 remember를 사용함 -> 이를 remember를 앞에 적어주셈
composable 함수 파라미터
명시적 의존성, 파라미터
암시적 의존성, context로 전달
ui 반환시 모디파이어가 필요하도록 해 강제적으로 파라미터를 가지도록 함
선언 순서
필수 파라미터, 모디파이어, 선택적 파라미터, 콘텐츠 함수
Default(전달 값이 없을 경우 기본 값 사용) vs nullable(값이 없음)
대부분은 null대신 기본값이 좋다.
슬롯
하위 컴포넌트 표시용
람다 파라미터, 자유롭게 커스텀 가능
무상태 지향
ai 시대 우린 어떻게 해쳐 나가야 하나
모바일 개발 veronikapj
개발에 답이 없다.
코테가 정석인가? 문제 해결력을 늘리는 데 좋다.
빅테크에서 손코딩을 보는 경우도 사람들이 서비스를 구성한다.
제품에 대한 논의
새로운 창의력이 필요한 문제
설득력, 커뮤니케이션 스킬, 구현 능력
목적: 창의성, 기술 역량, 커뮤 스킬, 실무 적용
정답 말고 문제를 어떻게 해결할 건지 생각하셈
문제 정의 방법: 문제가 뭔지 아는 것
네이티브 지식이 많이 필요함
모바일 어플리케이션을 개발하는 데에 다양한 관점을 바라 볼 수 있었다.
또한 하이브리드와 네이티브를 문제를 상황에 따라 선택하는 것이 좋다고 깨달았다.
사실 이 행사를 시작하기 전 1주일 전에 알게 되었다. 요즘 앱 개발에 어떤 바람이 불고 있는 지 궁금해서 참여하게 되었다.