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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
17
輝け俺のViewController 〜海外iOSカンファレンス登壇編〜
freddi
4
440
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
420
SwiftコンパイラがSwiftで開発できるようになる話
freddi
3
720
知ろう! ShazamKit
freddi
1
260
Swift Optimizing at Compiler World
freddi
2
930
Other Decks in Programming
See All in Programming
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
8.3k
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
160
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
980
mrbgem 三角測量 開発
ogom
0
240
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
0
370
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
250
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
580
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
360
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
34
16k
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
370
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
630
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
300
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
Making the Leap to Tech Lead
cromwellryan
135
10k
Writing Fast Ruby
sferik
630
63k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Google's AI Overviews - The New Search
badams
0
1.6k
Test your architecture with Archunit
thirion
2
2.4k
We Are The Robots
honzajavorek
0
400
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
350
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
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