Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Contributing to XcodeGen
Search
freddi(Yuki Aki)
July 11, 2020
Programming
630
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Contributing to XcodeGen
freddi(Yuki Aki)
July 11, 2020
More Decks by freddi(Yuki Aki)
See All by freddi(Yuki Aki)
Why Does Our Swift Code Work? Understanding Swift Through Platforms, Runtime, and the Compiler
freddi
0
340
輝け俺のViewController 〜海外iOSカンファレンス登壇編〜
freddi
4
460
Deep Dive into "any" and "some"
freddi
3
1.8k
挑戦!ISUCON de Server-side Swift 〜タイムゾーンには気をつけろ〜
freddi
0
2.2k
意外と知られてないXcode13の新しい参照カウンタ最適化オプションの挙動
freddi
2
220
How to develop SIL Optimizer in Swift Language
freddi
0
430
SwiftコンパイラがSwiftで開発できるようになる話
freddi
3
720
知ろう! ShazamKit
freddi
1
260
Swift Optimizing at Compiler World
freddi
2
940
Other Decks in Programming
See All in Programming
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
1.5k
Crash Auto Pipelines
veronikapj
1
350
Kawaiicon: Kubernetes, it's no longer cool, but let's secure it anyway!
barnbarn
0
110
AI時代のFlutter品質設計 — アプリ品質を守るQuality Layers
omatty198
0
360
Inertia Rails: The One-Person Framework with React & Friends
skryukov
0
380
LLM 101
dalinaum
0
470
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3.1k
私なりのハーネスエンジニアリング ~独自の言語処理系の開発を通して~
seosoft
0
180
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
140
あなたの await、OS まで届いてる? strace で覗く JavaScript の非同期
hasutosasaki
1
2.2k
느린 네트워크와 저사양 디바이스 사용자를 위한 웹뷰 로딩 시간 개선기
kmkim
1
190
Spec-Driven Development - Why Vaadin Is the Perfect Fit
simas
PRO
0
230
Featured
See All Featured
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
280
Navigating Team Friction
lara
192
16k
Accessibility Awareness
sabderemane
1
290
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
630
Marketing to machines
jonoalderson
1
6k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.2k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
It's Worth the Effort
3n
188
29k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
760
Making the Leap to Tech Lead
cromwellryan
135
10k
Building AI with AI
inesmontani
PRO
1
1.4k
Transcript
Contributing to XcodeGen (and its good points!) freddi (@_ _
_ freddi _ _ _) at potatotips #70 (10th July, 2020)
XcodeGen
XcodeGen - YAML͔JSONͰXcode ProjectΛཧͰ͖ΔΑ͏ʹ͢Δ - Xcode Projectཧ͠ʹ͍͘ΦϦδφϧͷϑΥʔϚοτ - gitͰConflict͕ى͜Δͱ͔ͳΓࠈ -
ͳͷͰɺͬͱ͔ΜͨΜͳYAMLͳͲͰཧͰ͖ΔΑ͏ʹ
Original Format of Xcode Project // !$*UTF8*$! { archiveVersion =
1; classes = { }; objectVersion = 52; objects = { /* Begin PBXBuildFile section */ 96401477240D1BE700A22301 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96401476240D1BE700A22301 /* AppDelegate.swift */; }; 96401479240D1BE700A22301 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96401478240D1BE700A22301 /* SceneDelegate.swift */; }; 9640147C240D1BE700A22301 /* XcodeGenTest.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 9640147A240D1BE700A22301 /* XcodeGenTest.xcdatamodeld */; }; 9640147E240D1BE700A22301 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9640147D240D1BE700A22301 /* ContentView.swift */; }; 96401480240D1BEA00A22301 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9640147F240D1BEA00A22301 /* Assets.xcassets */; }; 96401483240D1BEA00A22301 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 96401482240D1BEA00A22301 /* Preview Assets.xcassets */; }; 96401486240D1BEA00A22301 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 96401484240D1BEA00A22301 /* LaunchScreen.storyboard */; }; 96401491240D1BEA00A22301 /* XcodeGenTestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96401490240D1BEA00A22301 /* XcodeGenTestTests.swift */; }; 9640149C240D1BEA00A22301 /* XcodeGenTestUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9640149B240D1BEA00A22301 /* XcodeGenTestUITests.swift */; }; 96F82BF1240D50ED00C0397B /* APIKit in Frameworks */ = {isa = PBXBuildFile; productRef = 96F82BF0240D50ED00C0397B /* APIKit */; }; 96F82C15240D51C300C0397B /* MyLibrary0 in Frameworks */ = {isa = PBXBuildFile; productRef = 96F82C14240D51C300C0397B /* MyLibrary0 */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ 9640148D240D1BEA00A22301 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 9640146B240D1BE700A22301 /* Project object */; proxyType = 1; remoteGlobalIDString = 96401472240D1BE700A22301; remoteInfo = XcodeGenTest; }; 96401498240D1BEA00A22301 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 9640146B240D1BE700A22301 /* Project object */; proxyType = 1; remoteGlobalIDString = 96401472240D1BE700A22301; remoteInfo = XcodeGenTest; };
After Converting to XcodeGen name: Genned0 options: deploymentTarget: iOS: "13.2"
localPackages: - Packages/APIKit packages: APIKit: url: https://github.com/ishkawa/APIKit from: 5.1.0 MyLibrary0: path: Packages/MyLibrary0/ targets: Genned: type: application platform: iOS sources: - path: XcodeGenTest dependencies: - package: APIKit - package: MyLibrary0
Not Cool Point of XcodeGen - ࠷ॳͷYAMLͷΊͬͪΌ໘ - Xcode্ͷมߋ͕YAMLʹࣗಈతʹө͞Εͳ͍ -
ޙ΄Ͳݴٴ - ·ͩҰ෦ͷػೳ͕ෆ͍ͯ͠Δ - etc) Local Swift Packageͷґଘ
Not Cool Point of XcodeGen - ࠷ॳͷYAMLͷΊͬͪΌ໘ - Xcode্ͷมߋ͕YAMLʹࣗಈతʹө͞Εͳ͍ -
ޙ΄Ͳݴٴ - ·ͩҰ෦ͷػೳ͕ෆ͍ͯ͠Δ - etc) Local Swift Packageͷґଘ
Local Swift Packageͷґଘ - ձࣾͷϓϩδΣΫτͰLocal Swift PackageରԠඞਢͩͬͨ - Ͱ Not
Supporting ͩͬͨ (Issue - #721) - Swift PackageRemoteͷͷ͔͠ରԠͯ͠ͳ͔ͬͨ
ͳΜ͔ΜͰ Δ͜ͱʹͳͬͨ
ࡉ͔͍ܦҢ - TwitterͰ۪ஒΔ
- RepoͷCollaboratorͰ͋Δgiginet͞Μ͔Βͦͦͷ͔͞ΕΔ ࡉ͔͍ܦҢ
ͬͯΈ͔ͬ ࡉ͔͍ܦҢ
OSSߩݙͰؾΛ͚ͭΔ͜ͱ
OSSߩݙͰؾΛ͚ͭΔ͜ͱTips - ޙํޓੑΛอͭ - TestΛॻ͘ - CONTRIBUTING.md ΛಡΜͰ͔ΒPRΛ࡞Δ - PRʹৄ͍͠આ໌Λॻ͘ʢඞཁͳΒϕϯνϚʔΫʣ
- PRߟ͑ͨ΄Ͳૣ͘Ϛʔδ͞Εͳ͍ͱߟ͑Δ
ࠓճͷ࣮ϑϩʔ - Forkͯ͠branchΛΔ - ίʔυॻ͘ - IssueΛݐͯΔʢࠓճ͢Ͱʹ͋ͬͨͭબΜͩʣ - PRΛͭͬͯ͘ɺϨϏϡʔ͞Εͯɺमਖ਼͢Δ -
Merge!
ͷࠓճͷ߹ - TwitterͷҰޙ͘Β͍ʹPR࡞
- Approve͞Ε͚ͨͲΤοδέʔε͕NGͩͬͨͷͰमਖ਼ ͷࠓճͷ߹
- Code OwnerʹίϝϯτΛ͏ ͷࠓճͷ߹
- ଞͷόάݟ͚ͭͨͷͰ͍ͭͰʹमਖ਼ ͷࠓճͷ߹
͔ͦͬΒޙʹϚʔδ ͷࠓճͷ߹
XcodeGenͷߩݙͰྑ͔ͬͨ݅ - ྲྀੴʹΒͳ͍ͱଠଧͪͰ͖ͳ͍͕͋ͬͨ - Xcode ProjectͷϑΥʔϚοτʹৄ͘͠ͳͬͨ - XcodeGenͷҠߦํ๏͕ΑΓৄ͘͠ͳͬͨ - OSSͷContirbuterಊʑͱ໊ΕΔΑ͏ʹͳͬͨ
- ಘ͕ͨࣝɺXcode ProjectͷConflictղফͷTipsʹͳΔ
ͨͩɺͦΕͰXcodeGenͷҠߦ… - ͕ɺProject͔ΒYAMLΛੜ͢ΔػೳͷPR͕͋Δ - ϚϯϞεϓϩδΣΫτͩͱ͔ͳΓ͍͠ - ײ৮తʹ΄΅͑Δ͕ɺશͳҠߦ͍͠ - https://github.com/yonaskolb/XcodeGen/pull/735 -
Ϛʔδ͞Εͯͳ͍ͷͰ͝ར༻ࣗݾͰ
Conclusion
Conclusion - XcodeGenͷLocal Swift PackageͷରԠΛͨ͠ - XcodeGenؾܰʹContributeͰ͖ΔΑʂ - ରԠΛ௨ͯ͡Xcode ProjectͷϑΥʔϚοτʹৄ͘͠ͳͬͨ
- ↑ʹ͓͔͛ͰXcode ProjectͷConflictʹ߹ཧతʹઓ͑ΔΑ͏ʹ
ΈΜͳOSSʹContribute