Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Contributing to XcodeGen
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
freddi(Yuki Aki)
July 11, 2020
Programming
610
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)
輝け俺のViewController 〜海外iOSカンファレンス登壇編〜
freddi
4
400
Deep Dive into "any" and "some"
freddi
3
1.7k
挑戦!ISUCON de Server-side Swift 〜タイムゾーンには気をつけろ〜
freddi
0
2.1k
意外と知られてないXcode13の新しい参照カウンタ最適化オプションの挙動
freddi
2
200
How to develop SIL Optimizer in Swift Language
freddi
0
400
SwiftコンパイラがSwiftで開発できるようになる話
freddi
3
710
知ろう! ShazamKit
freddi
1
240
Swift Optimizing at Compiler World
freddi
2
900
Recap Pointfree Vol. 1~3
freddi
1
910
Other Decks in Programming
See All in Programming
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
540
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
550
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
250
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
140
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.4k
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
180
Agentic UI
manfredsteyer
PRO
0
170
dRuby over BLE
makicamel
2
380
New "Type" system on PicoRuby
pocke
1
960
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
5.2k
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
130
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
110
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
610
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
460
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
The Language of Interfaces
destraynor
162
27k
The SEO Collaboration Effect
kristinabergwall1
1
490
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
540
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
How to Ace a Technical Interview
jacobian
281
24k
Mobile First: as difficult as doing things right
swwweet
225
10k
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