Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
@niw 09/18/2021 — Online iOSDC Japan 2021 ࣮ફ iOS ΦʔϓϯιʔεϓϩδΣΫτͷ࢝Ίํ
Slide 2
Slide 2 text
Yoshimasa Niwa @niw
Slide 3
Slide 3 text
No content
Slide 4
Slide 4 text
ϥΠϒϥϦͷ։ൃ
Slide 5
Slide 5 text
ϥΠϒϥϦͷ։ൃ API σβΠϯ
Slide 6
Slide 6 text
API σβΠϯ جຊతͳϙΠϯτ Θ͔Γ໊͍͢લΛ͚ͭΔ ίϯϙʔωϯτؒͷࣝͷ Α͘ΒΕ͍ͯΔύλʔϯʹै͏
Slide 7
Slide 7 text
APIσβΠϯ ԼҐޓੑͷ୲อ ޓੑͷഁյʹϝδϟʔόʔδϣϯΞοϓ͕ඞཁ ར༻ऀͷෛ୲ Swift ͷ௨ৗͷϓϩτίϧมߋ͕Ͱ͖ͳ͍ @objc @optional ͷ׆༻ݕ౼
Slide 8
Slide 8 text
API σβΠϯ ڞ௨ͷػೳઃఆ ϩάͷૹΓઌɺσόοάΦϓγϣϯͳͲ ґଘੑೖͰΞϓϦέʔγϣϯ͕ػೳΛఏڙͰ͖ΔΑ͏ʹ͢ Δ Singleton ͷΦϒδΣΫτΛ໊લۭؒʹ༻ҙ
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
ϥΠϒϥϦͷ։ൃ ϥΠηϯε
Slide 11
Slide 11 text
ϥΠηϯε ๏తͳ͕Θ͔Δਓʹ૬ஊ Ұൠతʹ Apache License 2.0 MIT License ͕ଟ͍ͱࢥ͍ ·͢ ͲͷϥΠηϯεΛ͏͔
Slide 12
Slide 12 text
ϥΠηϯε Ͳ͏ͬͯදࣔ͢Δ͔ LICENSE ϑΝΠϧ ֤ιʔείʔυʹϥΠηϯεͷจΛϔομͱͯ͠ೖΕΔ
Slide 13
Slide 13 text
ϥΠηϯε SPDX(Software Package Data Exchange) ϥΠηϯεใͳ ͲΛهड़͢ΔϑΥʔϚοτ 1. spdx.org/licenses Ͱ༻͢ΔϥΠηϯεͷ Identifier Λ୳͢ 2. Identifier Λ SPDX short-form identifiers ͷܗࣜͰ֘͢Δ ιʔείʔυʹίϝϯτͰՃ SPDX Λ͏
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
ϥΠηϯε IDETemplateMacros.plist υΩϡϝϯτ͕ Xcode ͷϔϧϓʹ͔͠ͳ͍΄΅ൿີͷػೳ …xcodeproj/xcshareddata ʹஔͯ͠ɺϓϩδΣΫτ ͝ͱʹࢦఆͰ͖Δ Xcode ͕σϑΥϧτͰ࡞ΔϑΝΠϧͷϔομΛมߋͰ͖Δ
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
Copyright ͷຖ ม͑Δඞཁ͋Δͷʁ
Slide 18
Slide 18 text
͍͍͑
Slide 19
Slide 19 text
ϓϩδΣΫτͷެ։ ύοέʔδϯά
Slide 20
Slide 20 text
ύοέʔδϯά Swift Package Manager ͷ࠾༻ Apple ͷϓϥοτϑΥʔϜͰݱঢ়ɺࣄ্࣮ͷσϑΝΫτɾ ελϯμʔυ Xcode ͷαϙʔτ͕͋Δ ଞͷύοέʔδϚωʔδϟʔͱ͋ΔఔڞଘͰ͖Δ
Slide 21
Slide 21 text
ύοέʔδϯά CocoaPods Carthage ͷରԠ ଞͷϥΠϒϥϦͷґଘ͕ͳ͍߹ɺPodspec ϑΝΠϧ ͳͲΛར༻ऀ͕هड़͢Δ͜ͱͰར༻Ͱ͖Δ ଞͷϥΠϒϥϦͷґଘ͕͋Δ߹ɺPodspec ϑΝΠϧͳ Ͳఏڙ͢Δ͜ͱ͕ߟ͑ΒΕΔ͕ɺόʔδϣϯͷҰ؏ੑͳͲ ؾΛ͚ͭΔ͜ͱ͕૿͑Δ
Slide 22
Slide 22 text
Example ΞϓϦͷಉࠝ ͙͢ʹࢼͤΔΑ͏ʹ͢Δ ϥΠϒϥϦΛධՁͯ͠Β͏ͨΊʹ͙͢ʹࢼͤΔΑ͏ʹ͠ ͓ͯ͘ͱྑ͍ Example ΞϓϦͷϓϩδΣΫτͦͷ··ϥΠϒϥϦͷ։ൃ ڥͱͯ͑͠Δ
Slide 23
Slide 23 text
Examples Sources Tests Example.xcodeproj Package Local Package
Slide 24
Slide 24 text
ϥΠϒϥϦͷ։ൃ ·ͱΊ API σβΠϯʹԼҐޓੑͷߟྀͳͲීஈΑΓߟྀ͢Δ͜ ͱ͕ଟ͍ ϥΠηϯεͷදࣔΛͪΌΜͱ͢Δ Swift Package Manager Λ͏
Slide 25
Slide 25 text
ϝϯςφϯεͷܭը
Slide 26
Slide 26 text
ϝϯςφϯεͷܭը Pull Request ͷऔΓѻ͍
Slide 27
Slide 27 text
Pull Request?
Slide 28
Slide 28 text
Pull Request ͷऔΓѻ͍ Pull Request Λड͚͚Δ ͦͦ Pull Request Λड͚͚Δ͔Ͳ͏͔ΛܾΊ͓ͯ͘ Pull Request Λड͚͚Δ߹ɺCLA (Contributor License Agreements) ͷಉҙͷ֬ೝͳͲ͕ඞཁ CONTRIBUTING ϑΝΠϧͷՃ
Slide 29
Slide 29 text
Pull Request ͷऔΓѻ͍ ϓϥΠϚϦͷϨϙδτϦ ΦʔϓϯιʔεͷϨϙδτϦΛͦͷ··ϓϥΠϚϦͱͯ͠ϥ ΠϒϥϦͷ։ൃʹ͏߹͕ͳ͍ ։ൃʹ͏ϨϙδτϦ͕ΦʔϓϯιʔεͷϨϙδτϦͰ͋Δ ͱݶΒͳ͍
Slide 30
Slide 30 text
Pull Request ͷऔΓѻ͍ Mono Repo ͷ߹ ಛʹ Mono Repo (Monolitic Repository) Ͱ։ൃ͍ͯ͠Δ߹ ΦʔϓϯιʔεϨϙδτϦΛϓϥΠϚϦʹ͢Δͷ͕͍͠ Pull Request ͱɺ෦ͷ Mono Repo ͷมߋͷಉظ͕ඞཁʹͳ Δ
Slide 31
Slide 31 text
Mono Repo Frameworks Open Source Library Sources Tests Applications Open Source Repo Sources Tests
Slide 32
Slide 32 text
Mono Repo Open Source Repo Pull Request Contribution
Slide 33
Slide 33 text
Pull Request ͷऔΓѻ͍ Pull Request ͷऔΓࠐΈ GitHub API Λͬͯ Pull Request ͔Βίϛοτϝοηʔδͱ ύονΛ࡞Δ git apply --directory ͰύονΛద༻ͯ͠ίϛοτ ͢Δ
Slide 34
Slide 34 text
Pull Request ͷऔΓѻ͍ Commit Author ֤ Commit ͷ Author Λҡ࣋͢Δ Pull Request ʹ Author ͕ෳਓ͍Δ߹͕͋Δ ίϛοτϝοηʔδͰ Co-authored-by: name Λ͏
Slide 35
Slide 35 text
Mono Repo Open Source Repo Pull Request GitHub API Contribution Testing Application
Slide 36
Slide 36 text
Pull Request ͷऔΓѻ͍ git format-patch, git am git format-patch Ͱ Mono Repo ͷಛఆͷσΟϨΫτϦ ͷมߋͷύονΛ࡞ git am ͰύονΛΦʔϓϯιʔεͷϨϙδτϦʹద༻
Slide 37
Slide 37 text
ϝϯςφϯεͷܭը ίϛοτνΣοΫ
Slide 38
Slide 38 text
ίϛοτνΣοΫ λεΫͷछྨ Linting ϑΥʔϚοτ Ϣχοτςετ υΩϡϝϯτੜ
Slide 39
Slide 39 text
ίϛοτνΣοΫ CIڥͷޓੑ ։ൃʹ͔ͭ͏ϨϙδτϦͱΦʔϓϯιʔεͷϨϙδτϦͰCI ͷ࣮ߦڥ͕ҟͳΔ߹͋Δ ίϛοτνΣοΫͷͦΕͧΕͷλεΫݸผʹ࣮ߦͰ͖ΔΑ ͏ʹ͓ͯ͘͠
Slide 40
Slide 40 text
ίϛοτνΣοΫ GNU make ͷ׆༻ ίϛοτνΣοΫͷλεΫ make ͷλʔήοτͱͯ͠هड़ ͓͖ͯ͠ɺҙͷڥͱλΠϛϯάͰ࣮ߦͰ͖ΔΑ͏ʹͯ͠ ͓͘ Python Ruby ʹґଘ͢ΔπʔϧΛ͏߹ɺεΫϦϓτ ͷ࣮ߦڥΛִ͢ΔΑ͏ͳΈΛಋೖ͢Δ VirtualEnv, Bundler ͳͲ
Slide 41
Slide 41 text
No content
Slide 42
Slide 42 text
GNU make 3.81? Ruby 2.6?
Slide 43
Slide 43 text
ϝϯςφϯεͷܭը ·ͱΊ Pull Request Λड͚͚Δ߹ɺͦͷͨΊͷखॱλεΫͳ ͲΛ͓͑ͯ͘ ίϛοτνΣοΫͷλεΫΛҙͷڥͱλΠϛϯάͰ࣮ߦ Ͱ͖ΔΑ͏ʹ͓ͯ͘͠
Slide 44
Slide 44 text
ϓϩδΣΫτͷެ։
Slide 45
Slide 45 text
ϓϩδΣΫτͷެ։ GitHub ࣄ্࣮ Swift Package Manager ͷσϑΥϧτͷϨδετϦ ಛผͳཧ༝ͳͲ͕ͳ͚Ε GitHub Λར༻͢Εྑ͍
Slide 46
Slide 46 text
ϓϩδΣΫτͷެ։ GitHub Actions macOS ͕͑ΔͷͰɺίϛοτνΣοΫͷ Xcode Λͬͨ λεΫ͕࣮ߦՄೳ Pull Request ίϛοτͷ Push ͷࡍʹίϛοτνΣοΫΛ ࣮ߦ͢Δ GitHub Pages Λͬͯੜͨ͠υΩϡϝϯτΛϗεςΟϯά
Slide 47
Slide 47 text
No content
Slide 48
Slide 48 text
ϓϩδΣΫτͷެ։ ISSUE_TEMPLATE ࣗ༝ʹهड़Ͱ͖Δ Issue ҙਤ͕໌֬Ͱͳ͍߹͕͋Δ όάใࠂͷϑΥʔϚοτΛఆܕจͱͯ͠༻ҙ͓ͯ͘͠
Slide 49
Slide 49 text
No content
Slide 50
Slide 50 text
ϓϩδΣΫτͷެ։ PULL_REQUEST_TEMPLATE ಉ༷ʹ Pull Request ࣗ༝ʹهड़Ͱ͖Δͱҙਤ͕໌֬Ͱͳ ͍߹͕͋Δ Pull Request ͦͷ··ίϛοτϝοηʔδͱͯ͠ར༻Ͱ͖ ΔΑ͏ʹɺఆܕจΛ༻ҙ͓ͯ͘͠
Slide 51
Slide 51 text
No content
Slide 52
Slide 52 text
ϓϩδΣΫτͷެ։ ·ͱΊ Swift Package Manager ͷࣄ্࣮ͷσϑΥϧτͷϨδετϦ ͕ GitHub ͳͷͰɺGitHub Ͱެ։͢Δͷ͕ྑ͍ GitHub ActionsɺIssue Pull Request ͷఆܕจͷ࡞ͯ͠ ͓͘
Slide 53
Slide 53 text
ͬͯ͘Β͏
Slide 54
Slide 54 text
Φʔϓϯιʔεͷҙٛ ίϛϡχςΟͷؐݩ