SlideShare a Scribd company logo
iOS 애플리케이션 개발 생산성 고찰
정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
안정민 카카오뱅크
발표를 통해 기대하는 것
• iOS 개발 생산성 저하 원인 파악
• 개인 및 프로젝트 전반적인 개선 방법 공유
목차
1. iOS 개발의 병목 현상 분석
2. 생산성 향상을 위한 작업 환경 개선 방법
3. 전체적인 개발 생산성 관점 접근 방식
4. 마치며
여러분은 정시퇴근을
잘 하고 계신가요?
iOS 개발의 병목 현상 분석
iOS 개발의 병목 현상 분석
• 외부 요인
iOS 개발의 병목 현상 분석
• 외부 요인
• 기획 시나리오 변경
iOS 개발의 병목 현상 분석
• 외부 요인
• 기획 시나리오 변경
• 디자인 변경
iOS 개발의 병목 현상 분석
• 외부 요인
• 기획 시나리오 변경
• 디자인 변경
iOS 개발의 병목 현상 분석
• 외부 요인
• 기획 시나리오 변경
• 디자인 변경
• 서버 작업
iOS 개발의 병목 현상 분석
• 외부 요인
• 기획 시나리오 변경
• 디자인 변경
• 서버 작업
• 과거 코드 이슈
iOS 개발의 병목 현상 분석
• 외부 요인
• 기획 시나리오 변경
• 디자인 변경
• 서버 작업
• 과거 코드 이슈
iOS 개발의 병목 현상 분석
• 외부 요인
• 기획 시나리오 변경
• 디자인 변경
• 서버 작업
• 과거 코드 이슈
iOS 개발의 병목 현상 분석
• 외부 요인
• 기획 시나리오 변경
• 디자인 변경
• 서버 작업
• 과거 코드 이슈
iOS 개발의 병목 현상 분석
• 외부 요인
• 기획 시나리오 변경
• 디자인 변경
• 서버 작업
• 과거 코드 이슈
• 회의
iOS 개발의 병목 현상 분석
• 외부 요인
• 기획 시나리오 변경
• 디자인 변경
• 서버 작업
• 과거 코드 이슈
• 회의
iOS 개발의 병목 현상 분석
• 외부 요인
• 기획 시나리오 변경
• 디자인 변경
• 서버 작업
• 과거 코드 이슈
• 회의
iOS 개발의 병목 현상 분석
• 내부 요인
iOS 개발의 병목 현상 분석
• 내부 요인
• 긴 피드백 사이클(FeedBack Cycle)
iOS 개발의 병목 현상 분석
• 내부 요인
• 긴 피드백 사이클
• 빌드 시간
iOS 개발의 병목 현상 분석
• 내부 요인
• 긴 피드백 사이클
• 빌드 시간
iOS 개발의 병목 현상 분석
• 내부 요인
• 긴 피드백 사이클
• 빌드 시간
• 실행 시간
iOS 개발의 병목 현상 분석
• 내부 요인
• 긴 피드백 사이클
• 빌드 시간
• 실행 시간
iOS 개발의 병목 현상 분석
• 내부 요인
• 긴 피드백 사이클
• 빌드 시간
• 실행 시간
• 테스트
iOS 개발의 병목 현상 분석
• 내부 요인
• 긴 피드백 사이클
• 빌드 시간
• 실행 시간
• 테스트
iOS 개발의 병목 현상 분석
• 내부 요인
• 긴 피드백 사이클
• 빌드 시간
• 실행 시간
• 테스트
iOS 개발의 병목 현상 분석
• 내부 요인
• 긴 피드백 사이클
• 빌드 시간
• 실행 시간
• 테스트
코드 작성
빌드
실행 및 동작 확인
디버깅
코드 작성
빌드
실행 및
동작 확인
디버깅
코드 작성
빌드
실행 및
동작 확인
디버깅
코드 작성
빌드
실행 및
동작 확인
디버깅
코드 작성
빌드
동작 확인
디버깅
로그인
메뉴진입
코드 작성
빌드
동작 확인
디버깅
생산성 향상을 위한 작업 환경 개선 방법
생산성 향상을 위한 작업 환경 개선 방법
생산성 향상을 위한 작업 환경 개선 방법
• 뷰 계층구조 보기 확장
• 콘솔 로그 확장
• 런타임 코드 제어
• Hot Reload
생산성 향상을 위한 작업 환경 개선 방법
• 뷰 계층구조 보기 확장
• 콘솔 로그 확장
• 런타임 코드 제어
• Hot Reload
• 뷰 계층구조 보기 확장
생산성 향상을 위한 작업 환경 개선 방법
• 뷰 계층구조 보기 확장
• Xcode의 Debug View Hierarchy를 통해 View 디버깅
생산성 향상을 위한 작업 환경 개선 방법
생산성 향상을 위한 전략
• 뷰 계층구조 보기 확장
• Xcode의 Debug View Hierarchy를 통해 View 디버깅
• 프로세스를 일시정지 시키고 확인하는 단점
생산성 향상을 위한 전략
• 뷰 계층구조 보기 확장
• Xcode의 Debug View Hierarchy를 통해 View 디버깅
• 프로세스를 일시정지 시키고 확인하는 단점
• Lookin, Reveal 등을 이용한 View 디버깅
Lookin
Reveal
Reveal
Lookin
오픈소스 상용 소프트웨어
무료 유료 (14-Day Free Trial)
lookin.work revealapp.com
• 뷰 계층구조 보기 확장
• 콘솔 로그 확장
• 런타임 코드 제어
• Hot Reload
생산성 향상을 위한 작업 환경 개선 방법
• 콘솔 로그 확장
생산성 향상을 위한 작업 환경 개선 방법
• 콘솔 로그 확장
• Xcode의 콘솔 로그를 통해 로그를 확인
• print, Logger
생산성 향상을 위한 작업 환경 개선 방법
• 콘솔 로그 확장
• Xcode의 콘솔 로그를 통해 로그를 확인
• 작은 화면에서 많은 로그를 확인해야 하는 문제
- OS, 네트워크, DB, 화면 등에서 발생하는 로그
생산성 향상을 위한 작업 환경 개선 방법
• 콘솔 로그 확장
• Xcode의 콘솔 로그를 통해 로그를 확인
• 작은 화면에서 많은 로그를 확인해야 하는 문제
- OS, 네트워크, DB, 화면 등에서 발생하는 로그
• Pulse, Proxyman 등을 이용하여 로그를 확인
생산성 향상을 위한 작업 환경 개선 방법
Pulse
Proxyman
• 콘솔 로그 확장
• 넓은 화면에서 유효한 로그 확인
생산성 향상을 위한 작업 환경 개선 방법
• 뷰 계층구조 보기 확장
• 콘솔 로그 확장
• 런타임 코드 제어
• Hot Reload
생산성 향상을 위한 작업 환경 개선 방법
• 런타임 코드 제어
생산성 향상을 위한 작업 환경 개선 방법
• 런타임 코드 제어
• LLDB를 통해 디버깅
생산성 향상을 위한 작업 환경 개선 방법
• 런타임 코드 제어
• LLDB를 통해 디버깅
• 중단점 설정을 누락하여 디버깅을 못하는 경우
• 지역 변수로 만든 객체 접근
생산성 향상을 위한 작업 환경 개선 방법
• 런타임 코드 제어
• LLDB를 통해 디버깅
• 메모리 주소를 획득
• 런타임으로 코드를 수행
• Xcode의 Debug Memory Graph, Debug View Hierarchy
• Facebook/Chisel, p-x9/iLLDB 등 이용
생산성 향상을 위한 작업 환경 개선 방법
• 런타임 코드 제어
• LLDB를 통해 디버깅
• 메모리 주소를 획득
• 런타임으로 코드를 수행
• Xcode의 Debug Memory Graph, Debug View Hierarchy
• Facebook/Chisel, p-x9/iLLDB 등 이용
생산성 향상을 위한 작업 환경 개선 방법
• 런타임 코드 제어
• LLDB를 통해 디버깅
• 메모리 주소를 획득
• 런타임으로 코드를 수행
생산성 향상을 위한 작업 환경 개선 방법
• 뷰 계층구조 보기 확장
• 콘솔 로그 확장
• 런타임 코드 제어
• Hot Reload
생산성 향상을 위한 작업 환경 개선 방법
• Hot Reload
• 코드 변경시 애플리케이션이 즉시 적용되어 생산성을 높임
생산성 향상을 위한 작업 환경 개선 방법
• Hot Reload
• SwiftUI의 Preview
생산성 향상을 위한 작업 환경 개선 방법
• Hot Reload
• SwiftUI의 Preview
• johnno1962/InjectionIII
생산성 향상을 위한 작업 환경 개선 방법
• Hot Reload
• 빌드 및 재실행의 횟수 감소
생산성 향상을 위한 작업 환경 개선 방법
전체적인 개발 생산성 관점 접근 방식
전체적인 개발 생산성 관점 접근 방식
• 작업 환경의 최적화
전체적인 개발 생산성 관점 접근 방식
• 작업 환경의 최적화
• 적절한 방법 및 도구 사용
• 최소한의 빌드 및 실행으로 검증
전체적인 개발 생산성 관점 접근 방식
• 작업 환경의 최적화
• 작업 프로젝트의 규모 축소
전체적인 개발 생산성 관점 접근 방식
• 작업 환경의 최적화
• 작업 프로젝트의 규모 축소
• 다른 기능과 결합 최소화
전체적인 개발 생산성 관점 접근 방식
• 작업 환경의 최적화
• 작업 프로젝트의 규모 축소
• 다른 기능과 결합 최소화
• 모듈 분리
전체적인 개발 생산성 관점 접근 방식
• 작업 환경의 최적화
• 작업 프로젝트의 규모 축소
• 다른 기능과 결합 최소화
• 모듈 분리
전체적인 개발 생산성 관점 접근 방식
• 작업 환경의 최적화
• 작업 프로젝트의 규모 축소
• 다른 기능과 결합 최소화
• 모듈 분리
• 모듈의 데모앱을 통해 빠르게 동작 확인
코드 작성
빌드
실행 및
동작 확인
디버깅
코드 작성
빌드
실행 및
동작 확인
디버깅
x10
코드 작성
빌드
실행 및
동작 확인
디버깅
x50
코드 작성
빌드
실행 및
동작 확인
디버깅
x100
전체적인 개발 생산성 관점 접근 방식
• 작업 환경의 최적화
• 작업 프로젝트의 규모 축소
• 다른 기능과 결합 최소화
• 모듈 분리
• 모듈의 데모앱을 통해 빠르게 동작 확인
• 모듈 테스트 코드 수행
전체적인 개발 생산성 관점 접근 방식
• 작업 환경의 최적화
• 작업 프로젝트의 규모 축소
• 다른 기능과 결합 최소화
• 모듈 분리
• 모듈의 데모앱을 통해 빠르게 동작 확인
• 모듈 테스트 코드 수행
전체적인 개발 생산성 관점 접근 방식
• 작업 환경의 최적화
• 작업 프로젝트의 규모 축소
• 다른 기능과 결합 최소화
• 모듈 분리
• 모듈의 데모앱을 통해 빠르게 동작 확인
• 모듈 테스트 코드 수행
• Tuist, XcodeGen, SwiftPM, CocoaPods 등을 통해 가능
카카오뱅크 iOS 프로젝트의 모듈화 여정 if(kakao)2022
우리가 모듈화를 할 수 밖에 없었던 이유 KWDC 2023
Modular Architecture w/ Tuist Let’Swift 2022
Tuist, 도입은 했는데 그래서 Modular Architecture은 어떻게 만들어가면 되나요? Let’Swift 2023
Modular Architecture 시작하기 SyncSwift 2022
전체적인 개발 생산성 관점 접근 방식
마치며
마치며
• Xcode 개발 환경에서 조금만 벗어나보면 어떨까?
• Xcode 프로젝트 파일을 우리가 제어하면 어떨까?
• 코드 작성 후 빠르게 결과를 확인하려면 어떻게 해야할까?
• 동적으로 애플리케이션을 제어할 수 있으면 어떨까?
QnA

More Related Content

What's hot

20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
정민 안
 
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
Moonbeom KWON
 
RxSwift Testing 같이 시작하기 feat. RxBlocking, RxTest
RxSwift Testing 같이 시작하기 feat. RxBlocking, RxTestRxSwift Testing 같이 시작하기 feat. RxBlocking, RxTest
RxSwift Testing 같이 시작하기 feat. RxBlocking, RxTest
Byeongchan Lee
 
20240325 TuistNight 모듈로 나누면 알아두면 좋을 3가지 팁
20240325 TuistNight 모듈로 나누면 알아두면 좋을 3가지 팁20240325 TuistNight 모듈로 나누면 알아두면 좋을 3가지 팁
20240325 TuistNight 모듈로 나누면 알아두면 좋을 3가지 팁
정민 안
 
ReactorKit으로 단방향 반응형 앱 만들기
ReactorKit으로 단방향 반응형 앱 만들기ReactorKit으로 단방향 반응형 앱 만들기
ReactorKit으로 단방향 반응형 앱 만들기
Suyeol Jeon
 
Hexagonal Architecture
Hexagonal ArchitectureHexagonal Architecture
Hexagonal Architecture
Marcelo Cure
 
Maven
MavenMaven
fastlane을 이용하여 iOS/Mac 앱 관리하기
fastlane을 이용하여 iOS/Mac 앱 관리하기fastlane을 이용하여 iOS/Mac 앱 관리하기
fastlane을 이용하여 iOS/Mac 앱 관리하기
정민 안
 
Elasticsearch Query DSL - Not just for wizards...
Elasticsearch Query DSL - Not just for wizards...Elasticsearch Query DSL - Not just for wizards...
Elasticsearch Query DSL - Not just for wizards...
clintongormley
 
Google Firebase Presentation
Google Firebase PresentationGoogle Firebase Presentation
Google Firebase Presentation
Aeni Patel
 
Microservices
MicroservicesMicroservices
Microservices
SmartBear
 
Multiplatform architecture ribs in swift
Multiplatform architecture ribs in swiftMultiplatform architecture ribs in swift
Multiplatform architecture ribs in swift
NAVER Engineering
 
Introduction to jest
Introduction to jestIntroduction to jest
Introduction to jest
pksjce
 
Introducing Clean Architecture
Introducing Clean ArchitectureIntroducing Clean Architecture
Introducing Clean Architecture
Roc Boronat
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans
Hitesh-Java
 
Angular material
Angular materialAngular material
Angular material
Kalpesh Satasiya
 
Architecture: Microservices
Architecture: MicroservicesArchitecture: Microservices
Architecture: Microservices
Amazon Web Services
 
Flux architecture
Flux architectureFlux architecture
Flux architecture
Boyan Mihaylov
 
Angular 2.0 forms
Angular 2.0 formsAngular 2.0 forms
Angular 2.0 forms
Eyal Vardi
 
Docker Kubernetes Istio
Docker Kubernetes IstioDocker Kubernetes Istio
Docker Kubernetes Istio
Araf Karsh Hamid
 

What's hot (20)

20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
 
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
 
RxSwift Testing 같이 시작하기 feat. RxBlocking, RxTest
RxSwift Testing 같이 시작하기 feat. RxBlocking, RxTestRxSwift Testing 같이 시작하기 feat. RxBlocking, RxTest
RxSwift Testing 같이 시작하기 feat. RxBlocking, RxTest
 
20240325 TuistNight 모듈로 나누면 알아두면 좋을 3가지 팁
20240325 TuistNight 모듈로 나누면 알아두면 좋을 3가지 팁20240325 TuistNight 모듈로 나누면 알아두면 좋을 3가지 팁
20240325 TuistNight 모듈로 나누면 알아두면 좋을 3가지 팁
 
ReactorKit으로 단방향 반응형 앱 만들기
ReactorKit으로 단방향 반응형 앱 만들기ReactorKit으로 단방향 반응형 앱 만들기
ReactorKit으로 단방향 반응형 앱 만들기
 
Hexagonal Architecture
Hexagonal ArchitectureHexagonal Architecture
Hexagonal Architecture
 
Maven
MavenMaven
Maven
 
fastlane을 이용하여 iOS/Mac 앱 관리하기
fastlane을 이용하여 iOS/Mac 앱 관리하기fastlane을 이용하여 iOS/Mac 앱 관리하기
fastlane을 이용하여 iOS/Mac 앱 관리하기
 
Elasticsearch Query DSL - Not just for wizards...
Elasticsearch Query DSL - Not just for wizards...Elasticsearch Query DSL - Not just for wizards...
Elasticsearch Query DSL - Not just for wizards...
 
Google Firebase Presentation
Google Firebase PresentationGoogle Firebase Presentation
Google Firebase Presentation
 
Microservices
MicroservicesMicroservices
Microservices
 
Multiplatform architecture ribs in swift
Multiplatform architecture ribs in swiftMultiplatform architecture ribs in swift
Multiplatform architecture ribs in swift
 
Introduction to jest
Introduction to jestIntroduction to jest
Introduction to jest
 
Introducing Clean Architecture
Introducing Clean ArchitectureIntroducing Clean Architecture
Introducing Clean Architecture
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans
 
Angular material
Angular materialAngular material
Angular material
 
Architecture: Microservices
Architecture: MicroservicesArchitecture: Microservices
Architecture: Microservices
 
Flux architecture
Flux architectureFlux architecture
Flux architecture
 
Angular 2.0 forms
Angular 2.0 formsAngular 2.0 forms
Angular 2.0 forms
 
Docker Kubernetes Istio
Docker Kubernetes IstioDocker Kubernetes Istio
Docker Kubernetes Istio
 

Similar to Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰
- 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?

[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
iFunFactory Inc.
 
LetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptxLetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptx
ssuser2601f7
 
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
Amazon Web Services Korea
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)
DONGSU KIM
 
VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리
Gyuwon Yi
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
Chanwoong Kim
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
Hee Jae Lee
 
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
NAVER D2
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
Hankyo
 
개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2
Daniel Lim
 
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
NAVER Engineering
 
React native development
React native developmentReact native development
React native development
SangSun Park
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
NAVER Engineering
 
DevOps 시대의 새로운 Role - Full Cycle Developer
DevOps 시대의 새로운 Role - Full Cycle DeveloperDevOps 시대의 새로운 Role - Full Cycle Developer
DevOps 시대의 새로운 Role - Full Cycle Developer
창훈 현
 
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
Terry Cho
 
객체지향프로그래밍 특강
객체지향프로그래밍 특강객체지향프로그래밍 특강
객체지향프로그래밍 특강
uEngine Solutions
 
스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
Daekwon Kang
 
2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx
ssuserf875e6
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
Chris Ohk
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼
Kenu, GwangNam Heo
 

Similar to Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰
- 정시 퇴근을 위해 우리는 어떻게 해야할 것인가? (20)

[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
 
LetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptxLetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptx
 
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)
 
VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
 
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2
 
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
 
React native development
React native developmentReact native development
React native development
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
 
DevOps 시대의 새로운 Role - Full Cycle Developer
DevOps 시대의 새로운 Role - Full Cycle DeveloperDevOps 시대의 새로운 Role - Full Cycle Developer
DevOps 시대의 새로운 Role - Full Cycle Developer
 
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
 
객체지향프로그래밍 특강
객체지향프로그래밍 특강객체지향프로그래밍 특강
객체지향프로그래밍 특강
 
스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
 
2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼
 

More from 정민 안

20240516_동적_데이터을_대응하는_코드_작성하기.pdf
20240516_동적_데이터을_대응하는_코드_작성하기.pdf20240516_동적_데이터을_대응하는_코드_작성하기.pdf
20240516_동적_데이터을_대응하는_코드_작성하기.pdf
정민 안
 
Letusgo 2019 Summer - StringInterpolation and SwiftUI
Letusgo 2019 Summer - StringInterpolation and SwiftUILetusgo 2019 Summer - StringInterpolation and SwiftUI
Letusgo 2019 Summer - StringInterpolation and SwiftUI
정민 안
 
Debugging with xcode, lldb and chisel
Debugging with xcode, lldb and chiselDebugging with xcode, lldb and chisel
Debugging with xcode, lldb and chisel
정민 안
 
Introduce fastlane
Introduce fastlaneIntroduce fastlane
Introduce fastlane
정민 안
 
Git lecture
Git lectureGit lecture
Git lecture
정민 안
 
형상관리 발표자료 안정민
형상관리 발표자료 안정민형상관리 발표자료 안정민
형상관리 발표자료 안정민
정민 안
 

More from 정민 안 (6)

20240516_동적_데이터을_대응하는_코드_작성하기.pdf
20240516_동적_데이터을_대응하는_코드_작성하기.pdf20240516_동적_데이터을_대응하는_코드_작성하기.pdf
20240516_동적_데이터을_대응하는_코드_작성하기.pdf
 
Letusgo 2019 Summer - StringInterpolation and SwiftUI
Letusgo 2019 Summer - StringInterpolation and SwiftUILetusgo 2019 Summer - StringInterpolation and SwiftUI
Letusgo 2019 Summer - StringInterpolation and SwiftUI
 
Debugging with xcode, lldb and chisel
Debugging with xcode, lldb and chiselDebugging with xcode, lldb and chisel
Debugging with xcode, lldb and chisel
 
Introduce fastlane
Introduce fastlaneIntroduce fastlane
Introduce fastlane
 
Git lecture
Git lectureGit lecture
Git lecture
 
형상관리 발표자료 안정민
형상관리 발표자료 안정민형상관리 발표자료 안정민
형상관리 발표자료 안정민
 

Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰
- 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?

  • 1. iOS 애플리케이션 개발 생산성 고찰 정시 퇴근을 위해 우리는 어떻게 해야할 것인가? 안정민 카카오뱅크
  • 2. 발표를 통해 기대하는 것 • iOS 개발 생산성 저하 원인 파악 • 개인 및 프로젝트 전반적인 개선 방법 공유
  • 3. 목차 1. iOS 개발의 병목 현상 분석 2. 생산성 향상을 위한 작업 환경 개선 방법 3. 전체적인 개발 생산성 관점 접근 방식 4. 마치며
  • 5. iOS 개발의 병목 현상 분석
  • 6. iOS 개발의 병목 현상 분석 • 외부 요인
  • 7. iOS 개발의 병목 현상 분석 • 외부 요인 • 기획 시나리오 변경
  • 8. iOS 개발의 병목 현상 분석 • 외부 요인 • 기획 시나리오 변경 • 디자인 변경
  • 9. iOS 개발의 병목 현상 분석 • 외부 요인 • 기획 시나리오 변경 • 디자인 변경
  • 10. iOS 개발의 병목 현상 분석 • 외부 요인 • 기획 시나리오 변경 • 디자인 변경 • 서버 작업
  • 11. iOS 개발의 병목 현상 분석 • 외부 요인 • 기획 시나리오 변경 • 디자인 변경 • 서버 작업 • 과거 코드 이슈
  • 12. iOS 개발의 병목 현상 분석 • 외부 요인 • 기획 시나리오 변경 • 디자인 변경 • 서버 작업 • 과거 코드 이슈
  • 13. iOS 개발의 병목 현상 분석 • 외부 요인 • 기획 시나리오 변경 • 디자인 변경 • 서버 작업 • 과거 코드 이슈
  • 14. iOS 개발의 병목 현상 분석 • 외부 요인 • 기획 시나리오 변경 • 디자인 변경 • 서버 작업 • 과거 코드 이슈
  • 15. iOS 개발의 병목 현상 분석 • 외부 요인 • 기획 시나리오 변경 • 디자인 변경 • 서버 작업 • 과거 코드 이슈 • 회의
  • 16. iOS 개발의 병목 현상 분석 • 외부 요인 • 기획 시나리오 변경 • 디자인 변경 • 서버 작업 • 과거 코드 이슈 • 회의
  • 17. iOS 개발의 병목 현상 분석 • 외부 요인 • 기획 시나리오 변경 • 디자인 변경 • 서버 작업 • 과거 코드 이슈 • 회의
  • 18. iOS 개발의 병목 현상 분석 • 내부 요인
  • 19. iOS 개발의 병목 현상 분석 • 내부 요인 • 긴 피드백 사이클(FeedBack Cycle)
  • 20. iOS 개발의 병목 현상 분석 • 내부 요인 • 긴 피드백 사이클 • 빌드 시간
  • 21. iOS 개발의 병목 현상 분석 • 내부 요인 • 긴 피드백 사이클 • 빌드 시간
  • 22. iOS 개발의 병목 현상 분석 • 내부 요인 • 긴 피드백 사이클 • 빌드 시간 • 실행 시간
  • 23. iOS 개발의 병목 현상 분석 • 내부 요인 • 긴 피드백 사이클 • 빌드 시간 • 실행 시간
  • 24. iOS 개발의 병목 현상 분석 • 내부 요인 • 긴 피드백 사이클 • 빌드 시간 • 실행 시간 • 테스트
  • 25. iOS 개발의 병목 현상 분석 • 내부 요인 • 긴 피드백 사이클 • 빌드 시간 • 실행 시간 • 테스트
  • 26. iOS 개발의 병목 현상 분석 • 내부 요인 • 긴 피드백 사이클 • 빌드 시간 • 실행 시간 • 테스트
  • 27. iOS 개발의 병목 현상 분석 • 내부 요인 • 긴 피드백 사이클 • 빌드 시간 • 실행 시간 • 테스트
  • 28.
  • 29.
  • 30.
  • 37.
  • 41. 생산성 향상을 위한 작업 환경 개선 방법
  • 42. 생산성 향상을 위한 작업 환경 개선 방법
  • 43. 생산성 향상을 위한 작업 환경 개선 방법 • 뷰 계층구조 보기 확장 • 콘솔 로그 확장 • 런타임 코드 제어 • Hot Reload
  • 44. 생산성 향상을 위한 작업 환경 개선 방법 • 뷰 계층구조 보기 확장 • 콘솔 로그 확장 • 런타임 코드 제어 • Hot Reload
  • 45. • 뷰 계층구조 보기 확장 생산성 향상을 위한 작업 환경 개선 방법
  • 46. • 뷰 계층구조 보기 확장 • Xcode의 Debug View Hierarchy를 통해 View 디버깅 생산성 향상을 위한 작업 환경 개선 방법
  • 47.
  • 48.
  • 49. 생산성 향상을 위한 전략 • 뷰 계층구조 보기 확장 • Xcode의 Debug View Hierarchy를 통해 View 디버깅 • 프로세스를 일시정지 시키고 확인하는 단점
  • 50. 생산성 향상을 위한 전략 • 뷰 계층구조 보기 확장 • Xcode의 Debug View Hierarchy를 통해 View 디버깅 • 프로세스를 일시정지 시키고 확인하는 단점 • Lookin, Reveal 등을 이용한 View 디버깅
  • 52.
  • 54.
  • 55. Reveal Lookin 오픈소스 상용 소프트웨어 무료 유료 (14-Day Free Trial) lookin.work revealapp.com
  • 56. • 뷰 계층구조 보기 확장 • 콘솔 로그 확장 • 런타임 코드 제어 • Hot Reload 생산성 향상을 위한 작업 환경 개선 방법
  • 57. • 콘솔 로그 확장 생산성 향상을 위한 작업 환경 개선 방법
  • 58. • 콘솔 로그 확장 • Xcode의 콘솔 로그를 통해 로그를 확인 • print, Logger 생산성 향상을 위한 작업 환경 개선 방법
  • 59.
  • 60.
  • 61. • 콘솔 로그 확장 • Xcode의 콘솔 로그를 통해 로그를 확인 • 작은 화면에서 많은 로그를 확인해야 하는 문제 - OS, 네트워크, DB, 화면 등에서 발생하는 로그 생산성 향상을 위한 작업 환경 개선 방법
  • 62. • 콘솔 로그 확장 • Xcode의 콘솔 로그를 통해 로그를 확인 • 작은 화면에서 많은 로그를 확인해야 하는 문제 - OS, 네트워크, DB, 화면 등에서 발생하는 로그 • Pulse, Proxyman 등을 이용하여 로그를 확인 생산성 향상을 위한 작업 환경 개선 방법
  • 63. Pulse
  • 64.
  • 66.
  • 67. • 콘솔 로그 확장 • 넓은 화면에서 유효한 로그 확인 생산성 향상을 위한 작업 환경 개선 방법
  • 68. • 뷰 계층구조 보기 확장 • 콘솔 로그 확장 • 런타임 코드 제어 • Hot Reload 생산성 향상을 위한 작업 환경 개선 방법
  • 69. • 런타임 코드 제어 생산성 향상을 위한 작업 환경 개선 방법
  • 70. • 런타임 코드 제어 • LLDB를 통해 디버깅 생산성 향상을 위한 작업 환경 개선 방법
  • 71.
  • 72. • 런타임 코드 제어 • LLDB를 통해 디버깅 • 중단점 설정을 누락하여 디버깅을 못하는 경우 • 지역 변수로 만든 객체 접근 생산성 향상을 위한 작업 환경 개선 방법
  • 73. • 런타임 코드 제어 • LLDB를 통해 디버깅 • 메모리 주소를 획득 • 런타임으로 코드를 수행 • Xcode의 Debug Memory Graph, Debug View Hierarchy • Facebook/Chisel, p-x9/iLLDB 등 이용 생산성 향상을 위한 작업 환경 개선 방법
  • 74. • 런타임 코드 제어 • LLDB를 통해 디버깅 • 메모리 주소를 획득 • 런타임으로 코드를 수행 • Xcode의 Debug Memory Graph, Debug View Hierarchy • Facebook/Chisel, p-x9/iLLDB 등 이용 생산성 향상을 위한 작업 환경 개선 방법
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91. • 런타임 코드 제어 • LLDB를 통해 디버깅 • 메모리 주소를 획득 • 런타임으로 코드를 수행 생산성 향상을 위한 작업 환경 개선 방법
  • 92. • 뷰 계층구조 보기 확장 • 콘솔 로그 확장 • 런타임 코드 제어 • Hot Reload 생산성 향상을 위한 작업 환경 개선 방법
  • 93. • Hot Reload • 코드 변경시 애플리케이션이 즉시 적용되어 생산성을 높임 생산성 향상을 위한 작업 환경 개선 방법
  • 94. • Hot Reload • SwiftUI의 Preview 생산성 향상을 위한 작업 환경 개선 방법
  • 95. • Hot Reload • SwiftUI의 Preview • johnno1962/InjectionIII 생산성 향상을 위한 작업 환경 개선 방법
  • 96.
  • 97. • Hot Reload • 빌드 및 재실행의 횟수 감소 생산성 향상을 위한 작업 환경 개선 방법
  • 98. 전체적인 개발 생산성 관점 접근 방식
  • 99. 전체적인 개발 생산성 관점 접근 방식 • 작업 환경의 최적화
  • 100. 전체적인 개발 생산성 관점 접근 방식 • 작업 환경의 최적화 • 적절한 방법 및 도구 사용 • 최소한의 빌드 및 실행으로 검증
  • 101. 전체적인 개발 생산성 관점 접근 방식 • 작업 환경의 최적화 • 작업 프로젝트의 규모 축소
  • 102.
  • 103.
  • 104. 전체적인 개발 생산성 관점 접근 방식 • 작업 환경의 최적화 • 작업 프로젝트의 규모 축소 • 다른 기능과 결합 최소화
  • 105. 전체적인 개발 생산성 관점 접근 방식 • 작업 환경의 최적화 • 작업 프로젝트의 규모 축소 • 다른 기능과 결합 최소화 • 모듈 분리
  • 106. 전체적인 개발 생산성 관점 접근 방식 • 작업 환경의 최적화 • 작업 프로젝트의 규모 축소 • 다른 기능과 결합 최소화 • 모듈 분리
  • 107. 전체적인 개발 생산성 관점 접근 방식 • 작업 환경의 최적화 • 작업 프로젝트의 규모 축소 • 다른 기능과 결합 최소화 • 모듈 분리 • 모듈의 데모앱을 통해 빠르게 동작 확인
  • 109. 코드 작성 빌드 실행 및 동작 확인 디버깅 x10
  • 110. 코드 작성 빌드 실행 및 동작 확인 디버깅 x50
  • 111. 코드 작성 빌드 실행 및 동작 확인 디버깅 x100
  • 112. 전체적인 개발 생산성 관점 접근 방식 • 작업 환경의 최적화 • 작업 프로젝트의 규모 축소 • 다른 기능과 결합 최소화 • 모듈 분리 • 모듈의 데모앱을 통해 빠르게 동작 확인 • 모듈 테스트 코드 수행
  • 113. 전체적인 개발 생산성 관점 접근 방식 • 작업 환경의 최적화 • 작업 프로젝트의 규모 축소 • 다른 기능과 결합 최소화 • 모듈 분리 • 모듈의 데모앱을 통해 빠르게 동작 확인 • 모듈 테스트 코드 수행
  • 114. 전체적인 개발 생산성 관점 접근 방식 • 작업 환경의 최적화 • 작업 프로젝트의 규모 축소 • 다른 기능과 결합 최소화 • 모듈 분리 • 모듈의 데모앱을 통해 빠르게 동작 확인 • 모듈 테스트 코드 수행 • Tuist, XcodeGen, SwiftPM, CocoaPods 등을 통해 가능
  • 115. 카카오뱅크 iOS 프로젝트의 모듈화 여정 if(kakao)2022 우리가 모듈화를 할 수 밖에 없었던 이유 KWDC 2023 Modular Architecture w/ Tuist Let’Swift 2022 Tuist, 도입은 했는데 그래서 Modular Architecture은 어떻게 만들어가면 되나요? Let’Swift 2023 Modular Architecture 시작하기 SyncSwift 2022 전체적인 개발 생산성 관점 접근 방식
  • 117. 마치며 • Xcode 개발 환경에서 조금만 벗어나보면 어떨까? • Xcode 프로젝트 파일을 우리가 제어하면 어떨까? • 코드 작성 후 빠르게 결과를 확인하려면 어떻게 해야할까? • 동적으로 애플리케이션을 제어할 수 있으면 어떨까?
  • 118. QnA