Slide 1

Slide 1 text

Contributing to XcodeGen (and its good points!) freddi (@_ _ _ freddi _ _ _) at potatotips #70 (10th July, 2020)

Slide 2

Slide 2 text

XcodeGen

Slide 3

Slide 3 text

XcodeGen - YAML͔JSONͰXcode ProjectΛ؅ཧͰ͖ΔΑ͏ʹ͢Δ - Xcode Project͸؅ཧ͠ʹ͍͘ΦϦδφϧͷϑΥʔϚοτ - gitͰConflict͕ى͜Δͱ͔ͳΓ஍ࠈ - ͳͷͰɺ΋ͬͱ͔ΜͨΜͳYAMLͳͲͰ؅ཧͰ͖ΔΑ͏ʹ

Slide 4

Slide 4 text

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; };

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

Not Cool Point of XcodeGen - ࠷ॳͷYAML΁ͷΊͬͪΌ໘౗ - Xcode্ͷมߋ͕YAMLʹࣗಈతʹ͸൓ө͞Εͳ͍ - ޙ΄Ͳݴٴ - ·ͩҰ෦ͷػೳ͕ෆ଍͍ͯ͠Δ - etc) Local Swift Packageͷґଘ

Slide 7

Slide 7 text

Not Cool Point of XcodeGen - ࠷ॳͷYAML΁ͷΊͬͪΌ໘౗ - Xcode্ͷมߋ͕YAMLʹࣗಈతʹ͸൓ө͞Εͳ͍ - ޙ΄Ͳݴٴ - ·ͩҰ෦ͷػೳ͕ෆ଍͍ͯ͠Δ - etc) Local Swift Packageͷґଘ

Slide 8

Slide 8 text

Local Swift Packageͷґଘ - ձࣾͷϓϩδΣΫτͰLocal Swift PackageରԠඞਢͩͬͨ - Ͱ΋ Not Supporting ͩͬͨ (Issue - #721) - Swift Package͸Remoteͷ΋ͷ͔͠ରԠͯ͠ͳ͔ͬͨ

Slide 9

Slide 9 text

ͳΜ΍͔Μ΍Ͱ ΍Δ͜ͱʹͳͬͨ

Slide 10

Slide 10 text

ࡉ͔͍ܦҢ - TwitterͰ۪ஒΔ

Slide 11

Slide 11 text

- RepoͷCollaboratorͰ͋Δgiginet͞Μ͔Βͦͦͷ͔͞ΕΔ ࡉ͔͍ܦҢ

Slide 12

Slide 12 text

΍ͬͯΈ͔ͬ ࡉ͔͍ܦҢ

Slide 13

Slide 13 text

OSSߩݙͰؾΛ͚ͭΔ͜ͱ

Slide 14

Slide 14 text

OSSߩݙͰؾΛ͚ͭΔ͜ͱTips - ޙํޓ׵ੑΛอͭ - TestΛॻ͘ - CONTRIBUTING.md ΛಡΜͰ͔ΒPRΛ࡞Δ - PRʹৄ͍͠આ໌Λॻ͘ʢඞཁͳΒϕϯνϚʔΫ΋ʣ - PR͸ߟ͑ͨ΄Ͳૣ͘Ϛʔδ͞Εͳ͍ͱߟ͑Δ

Slide 15

Slide 15 text

ࠓճͷ࣮૷ϑϩʔ - Forkͯ͠branchΛ੾Δ - ίʔυॻ͘ - IssueΛݐͯΔʢࠓճ͸͢Ͱʹ͋ͬͨ΍ͭબΜͩʣ - PRΛͭͬͯ͘ɺϨϏϡʔ͞Εͯɺमਖ਼͢Δ - Merge!

Slide 16

Slide 16 text

๻ͷࠓճͷ৔߹ - TwitterͷҰ೔ޙ͘Β͍ʹ͸PR࡞੒

Slide 17

Slide 17 text

- Approve͞Ε͚ͨͲΤοδέʔε͕NGͩͬͨͷͰमਖ਼ ๻ͷࠓճͷ৔߹

Slide 18

Slide 18 text

- Code OwnerʹίϝϯτΛ໯͏ ๻ͷࠓճͷ৔߹

Slide 19

Slide 19 text

- ଞͷόά΋ݟ͚ͭͨͷͰ͍ͭͰʹमਖ਼ ๻ͷࠓճͷ৔߹

Slide 20

Slide 20 text

͔ͦͬΒ਺೔ޙʹϚʔδ ๻ͷࠓճͷ৔߹

Slide 21

Slide 21 text

XcodeGen΁ͷߩݙͰྑ͔ͬͨ݅ - ྲྀੴʹ஌Βͳ͍ͱଠ౛ଧͪͰ͖ͳ͍໰୊͕͋ͬͨ - Xcode ProjectͷϑΥʔϚοτʹৄ͘͠ͳͬͨ - XcodeGen΁ͷҠߦํ๏͕ΑΓৄ͘͠ͳͬͨ - OSSͷContirbuterಊʑͱ໊৐ΕΔΑ͏ʹͳͬͨ - ಘͨ஌͕ࣝɺXcode ProjectͷConflictղফͷTipsʹͳΔ

Slide 22

Slide 22 text

ͨͩɺͦΕͰ΋XcodeGen΁ͷҠߦ͸… - ͕ɺProject͔ΒYAMLΛੜ੒͢ΔػೳͷPR͕͋Δ - ϚϯϞεϓϩδΣΫτͩͱ͔ͳΓ೉͍͠ - ײ৮తʹ΄΅࢖͑Δ͕ɺ׬શͳҠߦ͸೉͍͠ - https://github.com/yonaskolb/XcodeGen/pull/735 - Ϛʔδ͞Εͯͳ͍ͷͰ͝ར༻͸ࣗݾ੹೚Ͱ

Slide 23

Slide 23 text

Conclusion

Slide 24

Slide 24 text

Conclusion - XcodeGenͷLocal Swift PackageͷରԠΛͨ͠࿩ - XcodeGen͸ؾܰʹContributeͰ͖ΔΑʂ - ରԠΛ௨ͯ͡Xcode ProjectͷϑΥʔϚοτʹৄ͘͠ͳͬͨ - ↑ʹ͓͔͛ͰXcode ProjectͷConflictʹ߹ཧతʹઓ͑ΔΑ͏ʹ

Slide 25

Slide 25 text

ΈΜͳ΋OSSʹContribute