8. 개발 프로세스 - 희망회로
• 작성/수정한 코드가 빠르게 빌드되면 어떨까?
• 작업하는 화면 UI가 시뮬레이터에서 실행할 때 바로 띄워지면 어떨까?
• 작성하는 코드가 시뮬레이터에서 실시간으로 반영되면 어떨까?
• React Native, Flutter, 웹앱 등은 코드를 작성하면 바로 반영되는 Hot Reload가 된다던
데, iOS 개발에는 그런 기능이 없는 걸까?
• Preview가 있기는 하지만, 매끄럽게 동작하지 않고 에러 날 때도 있고 좋은데, 없으면
아쉬움.
9. 개발 프로세스
• 작성하는 코드가 시뮬레이터에서 실시간으로 반영되면 어떨까?
• React Native, Flutter, 웹앱 등은 코드를 작성하면 바로 반영되는 Hot Reload가 된다던
데, iOS 개발에는 그런 기능이 없는 걸까?
• Preview가 있기는 하지만, 매끄럽게 동작하지 않고 에러 날 때도 있고 좋은데, 없으면
아쉬움.
10. • 작성하는 코드가 시뮬레이터에서 실시간으로 반영되면 어떨까?
• React Native, Flutter, 웹앱 등은 코드를 작성하면 바로 반영되는 Hot Reload가 된다던
데, iOS 개발에는 그런 기능이 없는 걸까?
• Preview가 있기는 하지만, 매끄럽게 동작하지 않고 에러 날 때도 있고 좋은데, 없으면
아쉬움.
개발 프로세스
InjectionIII
13. Xcode Plugin History 옛날 옛적..
• 옛날 옛적에 Alcatraz 도구를 이용해 Xcode의 제약을 벗어난 플러그인을 사용하였습니
다.
14.
15.
16.
17. Xcode Plugin History
• 2015년 9월쯤에 XcodeGhost라는 사건이 발생합니다.
• Xcode 8(2016.9)부터 Alcatraz를 이용한 플러그인 막힘
• 모든 플러그인 오픈소스 운영 종료
• InjectionForXcode도 운영 종료
• Swift 기반으로 InjectionIII를 다시 만들고, 작업을 이어감.
• 플러그인이 막히기 전에 유용하게 사용도 했고, 커밋 하나지만 기여했었음.
18. Xcode Plugin History
• 2015년 9월쯤에 XcodeGhost라는 사건이 발생합니다.
• Xcode 8(2016.9)부터 Alcatraz를 이용한 플러그인 사용이 막혀버렸습니다.
• 모든 플러그인 오픈소스 운영 종료
• InjectionForXcode도 운영 종료
• Swift 기반으로 InjectionIII를 다시 만들고, 작업 계속이어감.
• 플러그인이 막히기 전에 유용하게 사용도 했고, 커밋 하나지만 기여했었음.
19. InjectionIII
• 시간이 흘러, 애플이 Xcode Extension 기능을 열어줌
• Swift Package Manager 출시
• InjectionIII를 이용하여 이전의 InjectionForXcode와 같이 개발 가능해짐.
• Swift PM을 활용해 InjectionIII를 쉽게 사용할 수 있는 프로젝트 HotReloading 출시
• Sourcery를 만든 krzysztofzablocki가 InjectionIII를 쉽게 사용할 수 있는 프로젝트
Inject를 출시
• 이를 이용해서 쉽게 프로젝트에 추가하여 Hot Reload로 앱 개발이 가능해짐
24. 1. InjectionIII를 설치
2. SwiftPM으로 Inject 추가
• OTHER_LDFLAGS에
-Xlinker -interposable
추가
InjectionIII - Inject 활용한 설정 방법
25. 1. InjectionIII를 설치
2. SwiftPM으로 Inject 추가
3. InjectionIII 실행
• 실행할 프로젝트 설정
InjectionIII - Inject 활용한 설정 방법
26. 1. InjectionIII를 설치
2. SwiftPM으로 Inject 추가
3. InjectionIII 실행
4. Inject 활용한 코드 작성
InjectionIII - Inject 활용한 설정 방법
27. InjectionIII
• 이런 도구들은 각각의 환경마다 동작할 수 있거나, 동작하지 않을 수 있음
(슈뢰딩거의 InjectionIII)
• 프로젝트 규모가 중형 이상, 구조가 복잡하거나 기타 등등의 이유로 동작 안 할 수 있음
• 프로젝트 규모를 작게 만들고, 단순한 구조를 가져가거나 등으로 방법을 한다면
InjectionIII가 동작할 수 있지 않을까?
28. 모듈화
• 특정 기능을 개발하는데 모든 것이 다 필요하지 않음
• 필요한 기능만 잘 조립해서 만들 수 있다면 기능 개발에 작은 규모의 프로젝트로 관리
• 프로젝트 규모가 작아지고 단순해지니 InjectionIII 같은 도구를 사용 가능해짐.
• Preview 같은 기능도 잘 동작할 가능성이 커짐.
• 만약 SPM을 사용하지 않고, xcproject 단위로 모듈을 나눠야 한다면?
• Tuist를 이용하면 쉽게 가능
32. 가능한가?
• 가능함.
• 하나의 프로젝트에서 개발하는 것에서 여러 프로젝트에서 여러 타겟 - Multi Project,
Multi Module 기반으로 만들 수 있어야함.
• 작은 단위의 데모앱을 만들 수 있으므로, InjectionIII 등의 도구 적용이 쉬움