Slide 1

Slide 1 text

ؔ੢ϞόΠϧΞϓϦݚڀձ JPMartha *OTUBMMBUJPO NZPXOGSBNFXPSL XJUICarthage

Slide 2

Slide 2 text

CarthageͰ ࣗ࡞Ϋι ϥΠϒϥϦΛ Πϯετʔϧͯ͠Έ·ͨ͠ (Xcode 7.2, iOS 9.2, Carthage 0.11.0) https://github.com/Carthage/Carthage

Slide 3

Slide 3 text

Carthage ͱ͍͑͹ @ikesyo͞Μ https://github.com/Carthage/Carthage/pulse

Slide 4

Slide 4 text

΄΅@ikesyo͞Μ͕ ൃදࡁΈͷ಺༰ʹͳΓ·͢
 ʢҎԼ͸ͦͷଞΛؚΊͨࢀߟࢿྉʣ • Carthageʹ͍ͭͯ஌Γ͍ͨnݸͷ͜ͱ (@ikesyo)
 http://www.slideshare.net/syoikeda/carthagen • iOSͰͷFrameworkಋೖͷ͓͞Β͍ (@ikesyo)
 http://www.slideshare.net/syoikeda/iosframework • SwiftͰϥΠϒϥϦΛެ։͢Δ (@morizotter)
 http://qiita.com/morizotter/items/2e45f8f94c1010ebd69f • SwiftΛ࢖ͬͯϞμϯͳWeb APIΫϥΠΞϯτΛര଎Ͱ։ൃ͢Δ (@giginet)
 http://qiita.com/giginet/items/1e64f584f948661cffd1 • γϯϓϧͳґଘؔ܎؅ཧγεςϜ Carthage (Realm)
 https://realm.io/jp/news/swift-dependency-management-with-carthage/

Slide 5

Slide 5 text

ͦΕͰ΋ࣗ෼Ͱࢼͨ͠ͷͰ ൃද͠·͢

Slide 6

Slide 6 text

ࠓޙͷࣗ෼ͷ ؔϞόͰͷ՝୊͸ ϦϦʔε͢Δ͜ͱͰ͢

Slide 7

Slide 7 text

ϦϦʔεͱ͍ͬͯ΋ ͍ͣΕʹͯ͠΋࣮ྗ࣍ୈͰ͕͢… ᶃ App StoreͰϦϦʔε ‣ ͓ͦΒ͘Ṷ͔Βͳ͍Ͱ͢ΑͶ… ᶄ GitHubͰϦϦʔε ‣ Φʔϓϯιʔε׆ಈ͢Δํָ͕ͦ͠͏

Slide 8

Slide 8 text

&·ͣࠓճ͸؀ڥ࡞ΓͰ͢ ʢࣗ࡞ϥΠϒϥϦͷத਎͸Ϋιʣ ⚠ Himotoki ͱ APIKit Λ࢖͍ͬͯ·͕͢ ܾͯͦ͠ΕΒͷ͜ͱͰ͸͋Γ·ͤΜɻ

Slide 9

Slide 9 text

ͱΓ͋͑ͣάάΓ·ͨ͠ w SwiftͰϥΠϒϥϦΛެ։͢Δ @morizotter http://qiita.com/morizotter/items/2e45f8f94c1010ebd69f ‣ ґଘϓϩδΣΫτ͕͋Δέʔε͕ͳ͔ͳ͔ݟ౰ͨΓ·ͤΜ

Slide 10

Slide 10 text

Himotoki, APIKitΛ ͷ͍ͧͯΈ·ͨ͠

Slide 11

Slide 11 text

git submodule .gitmodules͸ Carthage ͕
 ੜ੒͠·͢ɻ

Slide 12

Slide 12 text

Carthage/Checkouts/ CarthageͰbuildͯ͠
 GitHub΁Pushͨ͠Β
 ͜͏ͳΓ·͢ɻ

Slide 13

Slide 13 text

ͱΓ͋͑ͣϚω͠ͳ͕Β ΍ͬͯΈ·ͨ͠

Slide 14

Slide 14 text

ࣗ࡞ϥΠϒϥϦଆ

Slide 15

Slide 15 text

ࣗ࡞ϥΠϒϥϦଆͰ΍Δ͜ͱ ᶃ FrameworkΛ࡞੒ ᶄ Carthage.pkgΛΠϯετʔϧʢ˞ࠓճলུʣ ᶅ CartfileΛ࡞੒ ᶆ carthage updateΛ࣮ߦ ᶇ carthage buildΛ࣮ߦ ᶈ GitHubͰrelease

Slide 16

Slide 16 text

ᶃFrameworkΛ࡞੒ ֎෦͔ΒࢀরͰ͖ΔΑ͏publicʹ͠·͢ɻ public final class Connpass {
 
 public static func sendSearchEventRequest() {
 
 // ͝ʹΐ͝ʹΐ
 
 }
 
 }

Slide 17

Slide 17 text

ᶃFrameworkΛ࡞੒

Slide 18

Slide 18 text

ᶃFrameworkΛ࡞੒ Manage SchemesͰ☑Shared ʹ͠·͢ɻ

Slide 19

Slide 19 text

ᶃFrameworkΛ࡞੒ ⚠ ൃදޙ௥ิɿRun Script ͸ઃఆෆཁͰ͢ɻ
 ʮϑϨʔϜϫʔΫΛϑϨʔϜϫʔΫʹຒΊࠐ·ͣɺ ΞϓϦϨϕϧͰϦϯΫɺຒΊࠐΈΛ͠·͠ΐ͏ɻʯ(@ikesyo)
 http://www.slideshare.net/syoikeda/dynamic-frameworks-tips

Slide 20

Slide 20 text

ᶅCartfileΛ࡞੒ github "ikesyo/Himotoki" ~> 1.3 github "ishkawa/APIKit" ~> 1.1.2

Slide 21

Slide 21 text

ᶆcarthage updateΛ࣮ߦ $ carthage update
 --use-submodules --platform iOS ⚠ Φϓγϣϯ͕ٯͩͱࣦഊ͠·ͨ͠ɻ ‣ Φϓγϣϯ —-use-submodules • ґଘϓϩδΣΫτΛGitͷαϒϞδϡʔϧͱͯ͠௥Ճ͠·͢ɻ —-platform iOS • ࠓճiOSͷΈΛର৅ͱͨ͠ͷͰࢦఆ͠·͢ɻ

Slide 22

Slide 22 text

ᶆcarthage updateΛ࣮ߦ Carthage/BuildͱCarthage/Checkouts ϑΥϧμ಺ʹͦΕͧΕͷFrameworkͷϑΝΠϧ͕ ੜ੒͞Ε·ͨ͠ɻ ‣ Himotoki ‣ APIKit ‣ ResultʢAPIKit͕ґଘ͍ͯ͠Δʣ

Slide 23

Slide 23 text

ᶇ carthage buildΛ࣮ߦ $ carthage build
 —-no-skip-current --platform iOS ⚠ Φϓγϣϯ͕ٯͩͱࣦഊ͠·ͨ͠ɻ ‣ Cathage/Build/iOS/ w ConnpassAPIClient.framework͕ੜ੒͞Ε·ͨ͠ɻ

Slide 24

Slide 24 text

.gitmodulesΛੜ੒ (Carthage) [submodule "Carthage/Checkouts/Himotoki"]
 path = Carthage/Checkouts/Himotoki
 url = https://github.com/ikesyo/Himotoki.git [submodule "Carthage/Checkouts/Result"]
 path = Carthage/Checkouts/Result
 url = https://github.com/antitypical/Result.git [submodule "Carthage/Checkouts/APIKit"]
 path = Carthage/Checkouts/APIKit
 url = https://github.com/ishkawa/APIKit.git
 ‣ࣗ෼Ͱઌʹ࡞͍ͬͯͨ৔߹͸௥ه͞Ε·ͨ͠ɻ

Slide 25

Slide 25 text

.git/configʹ௥ه (Carthage) Carthage/Checkouts/ {Framework໊}ͷ
 submodule͕௥ه͞Ε·ͨ͠ɻ

Slide 26

Slide 26 text

Carthage/Checkouts/ ⚠Himotoki΍APIKitͱಉ༷ʹͳΓ·͕ͨ͠ Ӆ͠ϑΝΠϧͳͲΛݟͯ΋࢓૊Έ͸Θ͔Γ·ͤΜ


Slide 27

Slide 27 text

ᶇGitHubͰrelease w CarthageͰ͸ʮv1.2.3ʯͷΑ͏ʹׂΓ౰ͯ·͢ɻ ˠsemantic version 
 ʮv0.0.8-alphaʯͱλά෇͚ͯ͠
 Pre-release͠·ͨ͠ɻʢ-alpha΍-beta͸0,ʣ

Slide 28

Slide 28 text

࢖͏ଆ

Slide 29

Slide 29 text

࢖͏ଆͰ΍Δ͜ͱ ᶃ CartfileΛ࡞੒ ᶄ carthage updateΛ࣮ߦ ᶅ FrameworkΛ૊ΈࠐΈ

Slide 30

Slide 30 text

ʮv0.0.8-alphaʯΛର৅ͱ͢Δ৔߹͸
 ࣍ͷͱ͓Γهड़͠·͢ɻ github "JPMartha/ConnpassAPIClient" ~> 0.0.8 ᶃCartfileΛ࡞੒

Slide 31

Slide 31 text

ᶄcarthage updateΛ࣮ߦ $ carthage update --platform iOS ‣ Carthage/Build/ w iOS, MacOS, tvOS, watchOS ‣ Carthage/Checkouts/ w Himotoki, ConnpassAPIClient

Slide 32

Slide 32 text

APIKit͸ϏϧυࡁΈόΠφϦ͕ μ΢ϯϩʔυ͞Ε·͢ *** Fetching ConnpassAPIClient *** Fetching Himotoki *** Fetching APIKit *** Fetching Result *** Checking out ConnpassAPIClient at "v0.0.8-alpha" *** Checking out Himotoki at "1.3.2" *** Downloading APIKit.framework binary at "1.1.2: Fix Content-Type" *** Downloading Result.framework binary at "1.0.1: A New Beginning" *** xcodebuild output can be found in ....log *** Building scheme "Himotoki-iOS" in Himotoki.xcodeproj *** Building scheme "ConnpassAPIClient" in ConnpassAPIClient.xcodeproj

Slide 33

Slide 33 text

APIKitͷrelease ϏϧυࡁΈόΠφϦʢzipϑΝΠϧʣ͕͋ΔͨΊͰ͢ɻ

Slide 34

Slide 34 text

ࢀߟɿHimotokiͷrelease

Slide 35

Slide 35 text

ᶅFrameworkΛ૊ΈࠐΈ

Slide 36

Slide 36 text

+࣮ફ

Slide 37

Slide 37 text

FrameworkΛimport࣮ͯ͠ߦ import UIKit import ConnpassAPIClient // ࣗ࡞ϥΠϒϥϦ class ViewController: UIViewController { @IBAction func buttonTapped(sender: UIButton) {
 // Connpass͔Β”ؔ੢ϞόΠϧΞϓϦݚڀձ”Λݕࡧ Connpass.sendSearchEventRequest() 
 } }

Slide 38

Slide 38 text

㊗੒ޭ
 ʢ+40/Λσίʔυͯ͠ϩάग़ྗ͢Δ͚ͩͷΫιϥΠϒϥϦʣ results_returned: 9 results_available: 9 results_start: 1 event_id: 23958 title: ؔ੢ϞόΠϧΞϓϦݚڀձ #9 description:

iOS/AndroidΞϓϦ։ൃऀ޲͚ͷษڧձͰ͢ɻ

ձ৔

͸ͯͳژ౎ΦϑΟε8F ηϛφʔϧʔϜ

19࣌10෼ΑΓड෇Λ։࢝͠·͢ɻ

ೖΓํ

19࣌ʹͳΔͱϏϧͷਖ਼໘ೖΓޱͷγϟολʔ͕ԼΓ·͢ɻ޲͔ͬͯࠨखͷ௨Γʹ͋Δ௨༻ޱ͔Β͓ೖΓ͍ͩ͘͞ɻ௨༻ޱ͕ด·ͬ ͍ͯΔ৔߹ʹ͸Πϯλʔϗϯ͔Βʮ801ʯΛݺͼ͍ͩͯͩ͘͠͞ɻ

։࠵֓ཁ

࠷ߴͷϞόΠϧΞϓϦΛ࡞Γ͍ͨσϕϩούʔ͕ɺ͓ޓ͍ʹ࠷৽ͷ஌ݟΛ൸࿐ͯ͠ަྲྀ͢ΔݚڀձͰ͢ɻ

ͦΕͧΕͷൃද͸࣋ͪ࣌ؒ5෼ͷϥΠτχϯάτʔΫʢLTʣܗࣜͱ͠·͢ɻݪଇͱͯ͠5෼Ҏ಺ʹɺҴ࠺ͷΑ͏ͳ଎͞ͱ੎͍Ͱ͓࿩ ͍͖ͨͩ͠·͢ɻ

࠙਌ձ

ൃදऴྃޙʹ࠙਌ձΛاը͍ͯ͠·͢ɻฃͬͯ͝ࢀՃ͍ͩ͘͞ɻ

Ϗʔϧ΍ܰ৯Λ༻ҙ͍ͯ͠·͢ɻ

λΠϜςʔϒϧ

TBD

event_url: http://kanmoba.connpass.com/event/23958/

Slide 39

Slide 39 text

࠷ޙʹࣗ࡞ϥΠϒϥϦͰ͓ࢼ͠ $ carthage archive ConnpassAPIClient ‣࣮ߦ݁Ռ *** Found Carthage/Build/iOS/ConnpassAPIClient.framework *** Found Carthage/Build/iOS/ConnpassAPIClient.framework.dSYM *** Found Carthage/Build/iOS/2209388D-3339-30F6-B80B-A779B6C91550.bcsymbolmap *** Found Carthage/Build/iOS/3841BD75-0DB2-3250-8395-786A569C7368.bcsymbolmap *** Created ConnpassAPIClient.framework.zip ‣ϦϙδτϦͷ௚ԼʹzipϑΝΠϧ͕ੜ੒͞Ε·ͨ͠ɻ

Slide 40

Slide 40 text

‣ GitHub ͰΞοϓϩʔυ͢Ε͹ Carthage Ͱμ΢ϯϩʔυͰ͖·͢ɻ ‣ Push ͚ͨͩ͠Ͱ͸ࣗಈతʹઃఆ͞Ε·ͤΜɻ(Pushෆཁ)

Slide 41

Slide 41 text

Ҏ্ ͋Γ͕ͱ͏͍͟͝·ͨ͠‼