SlideShare a Scribd company logo
Let’Swift 2023
Swift macro, 어디다 쓰죠?
김성종 (CJ올리브영)
들어가기 전에
들어가기 전에
Source of truth
들어가기 전에
Source of truth
목차
• 스위프트 매크로가 하는 일
목차
• 스위프트 매크로가 하는 일
목차
• 스위프트 매크로의 사용법
• 스위프트 매크로가 하는 일
목차
• 스위프트 매크로의 사용법
• 스위프트 매크로의 작성법
• 스위프트 매크로가 하는 일
목차
• 스위프트 매크로의 사용법
• 스위프트 매크로의 작성법
• 스위프트 매크로의 사용 예시
스위프트 매크로가 하는 일
비교대상 #1 - Code Snippet Library
비교대상 #1 - Code Snippet Library
비교대상 #1 - Code Snippet Library
Cmd + Shift + L
비교대상 #1 - Code Snippet Library
비교대상 #1 - Code Snippet Library
비교대상 #1 - Code Snippet Library
비교대상 #1 - Code Snippet Library
- 외부에 미리 만들어 둔 텍스트를 그대로 에디터에 붙여줍니다
- 코드 플레이스 홀더 작성 가능
- 라이브러리 패널 / 단축키로 빠르게 호출 가능
비교대상 #1 - Code Snippet Library
- 외부에 미리 만들어 둔 텍스트를 그대로 에디터에 붙여줍니다
- 코드 플레이스 홀더 작성 가능
- 라이브러리 패널 / 단축키로 빠르게 호출 가능
- 개발자가 직접 불러서 사용해야함. (백날 만들어 놔도…)
- 팀 내부에서 공유하기 번거로움
- 특정 위치에 스니펫 파일들을 설치하는 형식, 설치 스크립트 돌려야 해요
- 한번 설치된 파일 업데이트는 더 번거로움
비교대상 #2 - C Macro
비교대상 #2 - C Macro
비교대상 #2 - C Macro
비교대상 #2 - C Macro
😺
비교대상 #2 - C Macro
비교대상 #2 - C Macro
비교대상 #2 - C Macro
비교대상 #2 - C Macro
😾
비교대상 #2 - C Macro
비교대상 #2 - C Macro
비교대상 #2 - C Macro
비교대상 #2 - C Macro
🙀
비교대상 #2 - C Macro
비교대상 #2 - C Macro
- 프로젝트 내부에 정의한 텍스트를 전처리기가 그대로 붙여 넣어줍니다
- 텍스트 취급이라서 호출도 마음대로 사용 가능
비교대상 #2 - C Macro
- 프로젝트 내부에 정의한 텍스트를 전처리기가 그대로 붙여 넣어줍니다
- 텍스트 취급이라서 호출도 마음대로 사용 가능
- 멀티라인 정의
- 소스 파악할 때 위 아래로 오르락 내리락
- 다른 프로젝트에 공유할때 소스카피
- 텍스트 취급, 로직 실수 발생이 너무 쉬움
스위프트 매크로가 하는 일
이미지 출처: https://docs.swift.org/swift-book/documentation/the-swift-programming-language/macros/
매크로가 작성된 곳에 코드를 붙여넣어 줍니다
스위프트 매크로가 하는 일
이미지 출처: https://docs.swift.org/swift-book/documentation/the-swift-programming-language/macros/
차이점 #1
이미지 출처: https://docs.swift.org/swift-book/documentation/the-swift-programming-language/macros/
매크로가 작성된 곳에 코드를 붙여넣어 줍니다
매크로가 작성된 곳에 컴파일러가 코드를 만들어서 붙여넣어 줍니다
차이점 #1
이미지 출처: https://docs.swift.org/swift-book/documentation/the-swift-programming-language/macros/
차이점 #2
이미지 출처: https://www.timc.dev/posts/understanding-swift-packages/
차이점 #2
Swift Package Manager
이미지 출처: https://www.timc.dev/posts/understanding-swift-packages/
차이점 #2
Swift Package Manager
팀 내부에서 공유, 버전관리, 다른 프로젝트에서 재사용
이미지 출처: https://www.timc.dev/posts/understanding-swift-packages/
차이점 #3
매크로 호출부에서 펼쳐보기 가능
차이점 #3
매크로 호출부에서 펼쳐보기 가능
결과물 코드는 복사 + 붙여넣기도 가능
차이점 #3
스위프트 매크로는
스위프트 매크로는
- 컴파일러가 원하는 위치에 코드를 생성해서 붙여줍니다
- 스위프트 패키지를 이용하여 배포
- 만들어진 코드 미리보기, 복사 붙여넣기 가능
- 타입 추론 돌아감
스위프트 매크로는
- 컴파일러가 원하는 위치에 코드를 생성해서 붙여줍니다
- 스위프트 패키지를 이용하여 배포
- 만들어진 코드 미리보기, 복사 붙여넣기 가능
- 타입 추론 돌아감
- 배경지식이 필요함
- 사용할 때: 7가지 역할을 이해해야 함
- 작성할 때: Swift Syntax Tree가 생소함
스위프트 매크로의 사용 방법
사용방법
사용방법
매크로의 역할에 맞춰서 기호와 이름을 작성하여 호출
#{ 매크로 이름 } 혹은 @{ 매크로 이름 }
사용방법
매크로의 역할에 맞춰서 기호와 이름을 작성하여 호출
#{ 매크로 이름 } 혹은 @{ 매크로 이름 }
사용방법
매크로의 역할에 맞춰서 기호와 이름을 작성하여 호출
펼쳐보기
펼쳐보기
펼쳐보기
매크로 호출부 우클릭 -> expand macro 선택
7가지 역할들
이미지 출처: https://developer.apple.com/wwdc23/10167
7가지 역할들
이미지 출처: https://developer.apple.com/wwdc23/10167
7가지 역할들
이미지 출처: https://developer.apple.com/wwdc23/10167
7가지 역할들
이미지 출처: https://developer.apple.com/wwdc23/10167
예시 출처
예시 출처
https://github.com/apple/swift-syntax
예시 출처
https://github.com/apple/swift-syntax
@freestanding(expression)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/Expression
@freestanding(expression)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/Expression
@freestanding(expression)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/Expression
@freestanding(declaration)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/Expression
@freestanding(declaration)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/Expression
@freestanding(declaration)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/Expression
@attached(peer)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/Peer
@attached(peer)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/Peer
@attached(peer)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/Peer
@attached(accessor)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/ComplexMacros
@attached(accessor)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/ComplexMacros
@attached(accessor)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/ComplexMacros
@attached(memberAttribute)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/MemberAttribute
@attached(memberAttribute)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/MemberAttribute
@attached(memberAttribute)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/MemberAttribute
@attached(member)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/Member
@attached(member)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/Member
@attached(member)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/Member
@attached(conformance)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/Extension
@attached(conformance)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/Extension
@attached(conformance)
출처: https://github.com/apple/swift-syntax/tree/main/Examples/Sources/MacroExamples/Implementation/Extension
스위프트 매크로의 작성 방법
작성 시작
Xcode 15 > New > Swift Package > macro template
작성 시작
매크로 패키지 구조
매크로 패키지 구조
매크로 패키지 구조
선언
매크로 패키지 구조
선언
실행
매크로 패키지 구조
선언
실행
구현
매크로 패키지 구조
선언
실행
구현
테스트
선언 타겟
선언 타겟
선언 타겟
매크로 선언에서 매크로를 호출합니다
실행 타겟
실행 타겟
구현 타겟
구현 타겟
구현 타겟
코드젠 프로그램의 시작점
구현타겟: Swift Syntax Tree
구현타겟: Swift Syntax Tree
구현 타겟에 브레이크 포인트 설정
테스트 코드 실행
po { 원하는 대상 }
구현타겟: Swift Syntax Tree
구현 타겟에 브레이크 포인트 설정
테스트 코드 실행
po { 원하는 대상 }
https://swift-ast-explorer.com/
구현타겟: AST 추가 도구
https://swift-ast-explorer.com/
구현타겟: AST 추가 도구
구현타겟: Diagnostic
구현타겟: Diagnostic
친절한 경고 메시지와 Fix-it 까지 제공 가능
구현타겟: Diagnostic
구현타겟: Diagnostic
https://github.com/apple/swift-syntax
구현타겟: Diagnostic
https://github.com/apple/swift-syntax
테스트 타겟
테스트 타겟
테스트 타겟
테스트 대상
테스트 타겟
테스트 대상
예측 결과
테스트 타겟
테스트 매크로 제공
테스트 대상
예측 결과
테스트 타겟: 추가 도구
https://github.com/pointfreeco/swift-macro-testing
테스트 타겟: 추가 도구
https://github.com/pointfreeco/swift-macro-testing
스위프트 매크로의 사용 예시
애플은 어디다 쓰나요
Xcode 15 SDK
애플은 어디다 쓰나요
Xcode 15 SDK
SwiftUI
- #Preview
애플은 어디다 쓰나요
Xcode 15 SDK
Observation
- @Observable
SwiftUI
- #Preview
애플은 어디다 쓰나요
Xcode 15 SDK
Observation
- @Observable
TipKit
- @Parameter
- #Rule
SwiftUI
- #Preview
애플은 어디다 쓰나요
Xcode 15 SDK
Observation
- @Observable
TipKit
- @Parameter
- #Rule
SwiftData
- @Transient
- @Attribute
- @Model
- @Query
- #Predicate
SwiftUI
- #Preview
애플은 어디다 쓰나요
커뮤니티는 어디다 쓰나요
커뮤니티는 어디다 쓰나요
Swift-Spyable
https://github.com/Matejkob/swift-spyable
https://swiftpackageindex.com/Matejkob/swift-spyable
우리는 어디다 해 볼 수 있을까요?
우리는 어디다 해 볼 수 있을까요?
팀 컨벤션이 있어서 어디서든 통용할 수 있는 매크로 만들기는 너무 힘듬
우리는 어디다 해 볼 수 있을까요?
팀 컨벤션이 있어서 어디서든 통용할 수 있는 매크로 만들기는 너무 힘듬
우리는 어디다 해 볼 수 있을까요?
팀 컨벤션이 있어서 어디서든 통용할 수 있는 매크로 만들기는 너무 힘듬
우리는 어디다 해 볼 수 있을까요?
팀 컨벤션이 있어서 어디서든 통용할 수 있는 매크로 만들기는 너무 힘듬
우리는 어디다 해 볼 수 있을까요?
우리는 어디다 해 볼 수 있을까요?
팀 내에 존재하는 애매한 중복 코드 제거
팀 안에서만 사용한다고 가정해보면 의외로 많음
우리는 어디다 해 볼 수 있을까요?
팀 내에 존재하는 애매한 중복 코드 제거
팀 안에서만 사용한다고 가정해보면 의외로 많음
예시를 하나 준비했습니다
요구사항 소개
요구사항 소개
Decodable을 채택한 자료형을 사용하기 불편한 경우
혹은 Codable 이전에 구현 된 프로젝트들
😿
요구사항 소개
Decodable을 채택한 자료형을 사용하기 불편한 경우
혹은 Codable 이전에 구현 된 프로젝트들
WKScriptMessage.body: Any -> JSONString -> Instance
XMLParser -> [String: Any] -> Instance
😿
😹
요구사항 소개
Decodable을 채택한 자료형을 사용하기 불편한 경우
혹은 Codable 이전에 구현 된 프로젝트들
WKScriptMessage.body: Any -> JSONString -> Instance
XMLParser -> [String: Any] -> Instance
Legacy Initializers
😿
😹
Heritage Initializers
요구사항 소개
Decodable을 채택한 자료형을 사용하기 불편한 경우
혹은 Codable 이전에 구현 된 프로젝트들
WKScriptMessage.body: Any -> JSONString -> Instance
XMLParser -> [String: Any] -> Instance
😿
😹
레포지토리
레포지토리
https://github.com/Willicious-k/HeritageInitializers
레포지토리
https://github.com/Willicious-k/HeritageInitializers
실행 결과
@InitFromDict
실행 결과
@InitFromDict
실행 결과
@InitFromDict
실행 결과
@InitFromJSONString
실행 결과
@InitFromJSONString
실행 결과
@InitFromJSONString
로직 설명: 조건 검사
로직 설명: 조건 검사
Struct, Class, Actor만 구분 하려면?
로직 설명: 조건 검사
Struct, Class, Actor만 구분 하려면?
🙏
로직 설명: 가드 조건문 만들기
로직 설명: 가드 조건문 만들기
로직 설명: 배정문 만들기
로직 설명: 배정문 만들기
로직 설명: 결과 블럭
로직 설명: 결과 블럭
로직 설명: 결과 블럭
String Interpolation을 잘 지원해서 엄청 어렵지는 않습니다
감사합니다 🙇
willicious.k@gmail.com
Let'Swift 2023 Swift Macro, 어디다 쓰죠?

More Related Content

What's hot

Modern Java web applications with Spring Boot and Thymeleaf
Modern Java web applications with Spring Boot and ThymeleafModern Java web applications with Spring Boot and Thymeleaf
Modern Java web applications with Spring Boot and Thymeleaf
LAY Leangsros
 
TECHTALK 20200923 Qlik Sense+Qlik NPrinting でセルフサービスBIから定型帳票の配信までをカバー
TECHTALK 20200923 Qlik Sense+Qlik NPrinting でセルフサービスBIから定型帳票の配信までをカバーTECHTALK 20200923 Qlik Sense+Qlik NPrinting でセルフサービスBIから定型帳票の配信までをカバー
TECHTALK 20200923 Qlik Sense+Qlik NPrinting でセルフサービスBIから定型帳票の配信までをカバー
QlikPresalesJapan
 
Introduction To Microservices
Introduction To MicroservicesIntroduction To Microservices
Introduction To Microservices
Lalit Kale
 
API Management Part 1 - An Introduction to Azure API Management
API Management Part 1 - An Introduction to Azure API ManagementAPI Management Part 1 - An Introduction to Azure API Management
API Management Part 1 - An Introduction to Azure API Management
BizTalk360
 
Builder Design Pattern (Generic Construction -Different Representation)
Builder Design Pattern (Generic Construction -Different Representation)Builder Design Pattern (Generic Construction -Different Representation)
Builder Design Pattern (Generic Construction -Different Representation)
Sameer Rathoud
 
Api security
Api security Api security
Api security
teodorcotruta
 
Microservices
MicroservicesMicroservices
Microservices
SmartBear
 
Mastering Java Bytecode With ASM - 33rd degree, 2012
Mastering Java Bytecode With ASM - 33rd degree, 2012Mastering Java Bytecode With ASM - 33rd degree, 2012
Mastering Java Bytecode With ASM - 33rd degree, 2012
Anton Arhipov
 
Qlik Sense ストーリーテリングベストプラクティス
Qlik Sense ストーリーテリングベストプラクティスQlik Sense ストーリーテリングベストプラクティス
Qlik Sense ストーリーテリングベストプラクティス
QlikPresalesJapan
 
Understanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsUnderstanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple Steps
Tessa Mero
 
Spring jdbc
Spring jdbcSpring jdbc
Spring jdbc
Harshit Choudhary
 
Spring Boot in Action
Spring Boot in Action Spring Boot in Action
Spring Boot in Action
Alex Movila
 
Deploying Azure DevOps using Terraform
Deploying Azure DevOps using TerraformDeploying Azure DevOps using Terraform
Deploying Azure DevOps using Terraform
Adin Ermie
 
Git interview questions | Edureka
Git interview questions | EdurekaGit interview questions | Edureka
Git interview questions | Edureka
Edureka!
 
Onion architecture
Onion architectureOnion architecture
Onion architecture
Vidyasagar Machupalli
 
What is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | EdurekaWhat is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | Edureka
Edureka!
 
2021年10月26日 Qlik Sense SaaS vs Client Managed徹底比較
2021年10月26日  Qlik Sense SaaS  vs Client Managed徹底比較2021年10月26日  Qlik Sense SaaS  vs Client Managed徹底比較
2021年10月26日 Qlik Sense SaaS vs Client Managed徹底比較
QlikPresalesJapan
 
Why Microservice
Why Microservice Why Microservice
Why Microservice
Kelvin Yeung
 
Qlik Sense SaaS向けコマンドラインツールのご紹介 - Windows/Linux/macOS対応"qlik"コマンド
Qlik Sense SaaS向けコマンドラインツールのご紹介 - Windows/Linux/macOS対応"qlik"コマンドQlik Sense SaaS向けコマンドラインツールのご紹介 - Windows/Linux/macOS対応"qlik"コマンド
Qlik Sense SaaS向けコマンドラインツールのご紹介 - Windows/Linux/macOS対応"qlik"コマンド
QlikPresalesJapan
 
Exposing services with Azure API Management
Exposing services with Azure API ManagementExposing services with Azure API Management
Exposing services with Azure API Management
Callon Campbell
 

What's hot (20)

Modern Java web applications with Spring Boot and Thymeleaf
Modern Java web applications with Spring Boot and ThymeleafModern Java web applications with Spring Boot and Thymeleaf
Modern Java web applications with Spring Boot and Thymeleaf
 
TECHTALK 20200923 Qlik Sense+Qlik NPrinting でセルフサービスBIから定型帳票の配信までをカバー
TECHTALK 20200923 Qlik Sense+Qlik NPrinting でセルフサービスBIから定型帳票の配信までをカバーTECHTALK 20200923 Qlik Sense+Qlik NPrinting でセルフサービスBIから定型帳票の配信までをカバー
TECHTALK 20200923 Qlik Sense+Qlik NPrinting でセルフサービスBIから定型帳票の配信までをカバー
 
Introduction To Microservices
Introduction To MicroservicesIntroduction To Microservices
Introduction To Microservices
 
API Management Part 1 - An Introduction to Azure API Management
API Management Part 1 - An Introduction to Azure API ManagementAPI Management Part 1 - An Introduction to Azure API Management
API Management Part 1 - An Introduction to Azure API Management
 
Builder Design Pattern (Generic Construction -Different Representation)
Builder Design Pattern (Generic Construction -Different Representation)Builder Design Pattern (Generic Construction -Different Representation)
Builder Design Pattern (Generic Construction -Different Representation)
 
Api security
Api security Api security
Api security
 
Microservices
MicroservicesMicroservices
Microservices
 
Mastering Java Bytecode With ASM - 33rd degree, 2012
Mastering Java Bytecode With ASM - 33rd degree, 2012Mastering Java Bytecode With ASM - 33rd degree, 2012
Mastering Java Bytecode With ASM - 33rd degree, 2012
 
Qlik Sense ストーリーテリングベストプラクティス
Qlik Sense ストーリーテリングベストプラクティスQlik Sense ストーリーテリングベストプラクティス
Qlik Sense ストーリーテリングベストプラクティス
 
Understanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsUnderstanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple Steps
 
Spring jdbc
Spring jdbcSpring jdbc
Spring jdbc
 
Spring Boot in Action
Spring Boot in Action Spring Boot in Action
Spring Boot in Action
 
Deploying Azure DevOps using Terraform
Deploying Azure DevOps using TerraformDeploying Azure DevOps using Terraform
Deploying Azure DevOps using Terraform
 
Git interview questions | Edureka
Git interview questions | EdurekaGit interview questions | Edureka
Git interview questions | Edureka
 
Onion architecture
Onion architectureOnion architecture
Onion architecture
 
What is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | EdurekaWhat is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | Edureka
 
2021年10月26日 Qlik Sense SaaS vs Client Managed徹底比較
2021年10月26日  Qlik Sense SaaS  vs Client Managed徹底比較2021年10月26日  Qlik Sense SaaS  vs Client Managed徹底比較
2021年10月26日 Qlik Sense SaaS vs Client Managed徹底比較
 
Why Microservice
Why Microservice Why Microservice
Why Microservice
 
Qlik Sense SaaS向けコマンドラインツールのご紹介 - Windows/Linux/macOS対応"qlik"コマンド
Qlik Sense SaaS向けコマンドラインツールのご紹介 - Windows/Linux/macOS対応"qlik"コマンドQlik Sense SaaS向けコマンドラインツールのご紹介 - Windows/Linux/macOS対応"qlik"コマンド
Qlik Sense SaaS向けコマンドラインツールのご紹介 - Windows/Linux/macOS対応"qlik"コマンド
 
Exposing services with Azure API Management
Exposing services with Azure API ManagementExposing services with Azure API Management
Exposing services with Azure API Management
 

Similar to Let'Swift 2023 Swift Macro, 어디다 쓰죠?

프로그래머로 부터 배우는 코딩 기술 (プログラマから学ぶコーディングテクニック)
프로그래머로 부터  배우는 코딩 기술 (プログラマから学ぶコーディングテクニック)프로그래머로 부터  배우는 코딩 기술 (プログラマから学ぶコーディングテクニック)
프로그래머로 부터 배우는 코딩 기술 (プログラマから学ぶコーディングテクニック)
Mayuko Sekiya
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
Sewon Ann
 
Portfolio
PortfolioPortfolio
Portfolio
MyeongSeokKim2
 
2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx
ssuserf875e6
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계
Leonardo YongUk Kim
 
피니엔진
피니엔진피니엔진
피니엔진
승우 백
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XpressEngine
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨
KwangSeob Jeong
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1YoungSu Son
 
Node.js in Flitto
Node.js in FlittoNode.js in Flitto
Node.js in Flitto
SeungWoo Lee
 
Design pattern 4
Design pattern 4Design pattern 4
Design pattern 4
Daniel Lim
 
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
NAVER D2
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: YeomanJae Sung Park
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
Chris Ohk
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15
Chanwoong Kim
 
파크히어 Realm 사용 사례
파크히어 Realm 사용 사례파크히어 Realm 사용 사례
파크히어 Realm 사용 사례
선협 이
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
Chanwoong Kim
 
[W3C HTML5 2017] Electron과 TypeScript로 만드는 Visual Studio Code, 그리고 ProtoPie
[W3C HTML5 2017] Electron과 TypeScript로 만드는 Visual Studio Code, 그리고 ProtoPie[W3C HTML5 2017] Electron과 TypeScript로 만드는 Visual Studio Code, 그리고 ProtoPie
[W3C HTML5 2017] Electron과 TypeScript로 만드는 Visual Studio Code, 그리고 ProtoPie
양재동 코드랩
 
Opensource java library deploy public repository
Opensource java library deploy public repositoryOpensource java library deploy public repository
Opensource java library deploy public repository
KyungHo Jung
 
반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게
Sungju Jin
 

Similar to Let'Swift 2023 Swift Macro, 어디다 쓰죠? (20)

프로그래머로 부터 배우는 코딩 기술 (プログラマから学ぶコーディングテクニック)
프로그래머로 부터  배우는 코딩 기술 (プログラマから学ぶコーディングテクニック)프로그래머로 부터  배우는 코딩 기술 (プログラマから学ぶコーディングテクニック)
프로그래머로 부터 배우는 코딩 기술 (プログラマから学ぶコーディングテクニック)
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
 
Portfolio
PortfolioPortfolio
Portfolio
 
2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계
 
피니엔진
피니엔진피니엔진
피니엔진
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1
 
Node.js in Flitto
Node.js in FlittoNode.js in Flitto
Node.js in Flitto
 
Design pattern 4
Design pattern 4Design pattern 4
Design pattern 4
 
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15
 
파크히어 Realm 사용 사례
파크히어 Realm 사용 사례파크히어 Realm 사용 사례
파크히어 Realm 사용 사례
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
[W3C HTML5 2017] Electron과 TypeScript로 만드는 Visual Studio Code, 그리고 ProtoPie
[W3C HTML5 2017] Electron과 TypeScript로 만드는 Visual Studio Code, 그리고 ProtoPie[W3C HTML5 2017] Electron과 TypeScript로 만드는 Visual Studio Code, 그리고 ProtoPie
[W3C HTML5 2017] Electron과 TypeScript로 만드는 Visual Studio Code, 그리고 ProtoPie
 
Opensource java library deploy public repository
Opensource java library deploy public repositoryOpensource java library deploy public repository
Opensource java library deploy public repository
 
반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게
 

Let'Swift 2023 Swift Macro, 어디다 쓰죠?