Swift Package Manager ことはじめ #cswift

>100 Views

February 19, 17

スライド概要

Swift 3.0.2 に付属の Swift Package Manager の基本的なところを簡単にまとめたスライドです。第13回 カジュアル Swift 勉強会 @ 青葉台で話しました。

※ Docswell での公開に移行する直前の Slideshare での閲覧数は 2,133 でした。

profile-image

正統派趣味人プログラマー。プログラミングとは幼馴染です。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

4XJGU1BDLBHF.BOBHFS ͜ͱ͸͡Ί !ΧδϡΞϧ4XJGUษ‫ڧ‬ձ ‫۽‬୩༑޺ IUUQF[OFUKQ 4XJGU TXJGUQN

2.

4XJGU1BDLBHF.BOBHFS

3.

4XJGU1BDLBHF.BOBHFS ֓ཁ ⾣ 4XJGUඪ४ͷύοέʔδ؅ཧγεςϜ ⾣ 4XJGU͔Βར༻Մೳ ⾣ μ΢ϯϩʔυɺίϯύΠϧɺϦϯΫΛࣗಈԽ ⾣ Φʔϓϯιʔε IUUQTHJUIVCDPNBQQMFTXJGUQBDLBHFNBOBHFS

4.

4XJGU1BDLBHF.BOBHFS ૝ఆ‫ڥ؀‬ ⾣ NBD04 -JOVY w ‫Ͱ఺࣌ݱ‬͸J04 XBUDI04 UW04ʹඇରԠ ⾣ 'PVOEBUJPO "QQ,JU (MJCͳͲͷϞδϡʔϧ͸ ద੾ʹଘࡏ͍ͯ͠Ε͹࢖͑Δ

5.

4XJGU1BDLBHF.BOBHFS όʔδϣϯͷ֬ೝ ⾣ TXJGUQBDLBHFίϚϯυͰ֬ೝՄೳ ⾣ WFSTJPOΦϓγϣϯΛࢦఆ swift package --version Apple Swift Package Manager - Swift 3.0.2 (swiftpm-11750)

6.

༻‫ޠ‬  1BDLBHF  .PEVMF  1SPEVDU  %FQFOEFODZ

7.

༻‫ޠ‬ 1BDLBHF  ⾣ ൦෍ͷ୯Ґ ⾣ ϚχϑΣετϑΝΠϧ1BDLBHFTXJGUͰߏ੒ ⾣ ͻͱͭͷύοέʔδʹෳ਺ͷλʔήοτΛ࣋ͭ ⾣ λʔήοτΛߏ੒͢ΔιʔεϑΝΠϧΛ࣋ͭ ⾣ λʔήοτຖͷґଘ৘ใΛ࣋ͭ ⾣ ֎෦Ϟδϡʔϧͱͷґଘ৘ใΛ࣋ͭ

8.

༻‫ޠ‬ .PEVMF  ⾣ 4XJGUίʔυΛ؅ཧ͢Δ୯Ґ w ໨త୯ҐͰ࡞Ε͹ɺ࠶ར༻͕Մೳ ⾣ Ϟδϡʔϧ୯ҐͰ໊લۭؒΛ࣋ͭ ⾣ ΞΫηείϯτϩʔϧͷ؅ཧ୯Ґ ⾣ μ΢ϯϩʔυͯ͠Ϗϧυ͢Δඞཁ͕͋Δ w (MJCD΍%BSXJO౳͸ɺ͙͢ʹ࢖͑Δ

9.

༻‫ޠ‬ 1SPEVDU  ⾣ λʔήοτ͕ੜ੒͢Δ΋ͷ w ࣮ߦՄೳϑΝΠϧ w 4XJGUϞδϡʔϧ w $ϥΠϒϥϦ

10.

༻‫ޠ‬ %FQFOEFODZ  ⾣ ύοέʔδͰඞཁͳ֎෦Ϟδϡʔϧ ⾣ (JUϦϙδτϦ΁ͷ63-Ͱࢦఆ͢Δ ⾣ (JUͷλά৘ใͰόʔδϣϯ؅ཧ͞Ε͍ͯΔ ⾣ ґଘؔ܎͸ύοέʔδϚωʔδϟʔ͕؅ཧ ⾣ ґଘੑ͸࠶‫ؼ‬తʹղܾ͞ΕΔ

11.

1BDLBHF࡞Γͷ‫ج‬ຊ

12.

1BDLBHF࡞Γͷ‫ج‬ຊ ֓ཁ  ύοέʔδΛऩΊΔ৔ॴΛ࡞Δ  ϚχϑΣετΛ࡞Δ  ‫׳‬शʹैͬͯϑΝΠϧΛἧ͑Δ  Ϗϧυ͢Δ

13.

1BDLBHF࡞Γͷ‫ج‬ຊ ύοέʔδΛऩΊΔ৔ॴΛ࡞Δ ⾣ σΟϨΫτϦʔΛ࡞Δ ⾣ ύοέʔδ໊ͱಉ͡ʹ͢Δͱѻ͍΍͍͢ mkdir MyPackage

14.

1BDLBHF࡞Γͷ‫ج‬ຊ ϚχϑΣετΛ࡞Δ ⾣ ϧʔτʹ1BDLBHFTXJGUΛ࡞੒͢Δ ⾣ 1BDLBHF‫Ͱܕ‬ύοέʔδ৘ใΛએ‫͢ݴ‬Δ JNQPSU1BDLBHF%FTDSJQUJPO MFUQBDLBHF1BDLBHF  OBNF.Z1BDLBHF  UBSHFUT< 5BSHFU OBNF.BJO.PEVMF EFQFOEFODJFT<4VC.PEVMF>  >  EFQFOEFODJFT< 1BDLBHF VSM&YUFSOBM1BDLBHF NBKPS7FSTJPO  > 

15.

1BDLBHF࡞Γͷ‫ج‬ຊ ‫׳‬शʹैͬͯϑΝΠϧΛἧ͑Δ ⾣ ϑΥϧμʔ಺ʹϑΝΠϧΛἧ͑Δ ⾣ ἧ͑ํʹΑͬͯ1SPEVDU͕มΘΔ ⾣  ࣮ߦՄೳϓϩμΫτ  4XJGUϞδϡʔϧ  $$  γεςϜϞδϡʔϧ 0CKFDUJWF$ϥΠϒϥϦ ϚχϑΣετϑΝΠϧͷ಺༰͸‫ڞ‬௨

16.

1BDLBHF࡞Γͷ‫ج‬ຊ  ࣮ߦՄೳϓϩμΫτ༻ͷἧ͑ํ ⾣ ࠷௿‫ݶ‬ɺNBJOTXJGUΛ༻ҙ͢Δ ⾣ ඞཁͳΒ4XJGUϑΝΠϧΛ4PVSDFT௚Լʹ഑ஔ

17.

1BDLBHF࡞Γͷ‫ج‬ຊ  4XJGUϞδϡʔϧ༻ͷἧ͑ํ ⾣ NBJOTXJGUΛ഑ஔ͠ͳ͍ ⾣ ඞཁͳ4XJGUϑΝΠϧΛ4PVSDFT௚Լʹ഑ஔ

18.

1BDLBHF࡞Γͷ‫ج‬ຊ  $ϥΠϒϥϦ༻ͷἧ͑ํ ⾣ NBJODΛ഑ஔ͠ͳ͍ ⾣ ඞཁͳ$ϑΝΠϧΛ4PVSDFT௚Լʹ഑ஔ

19.

1BDLBHF࡞Γͷ‫ج‬ຊ  γεςϜϞδϡʔϧ༻ͷἧ͑ํ ⾣ ϞδϡʔϧϚοϓΛ഑ஔ͢Δ ⾣ ϞδϡʔϧϚοϓͰ࢖͏ϔομʔϑΝΠϧΛ഑ஔ͢Δ

20.

1BDLBHF࡞Γͷ‫ج‬ຊ Ϗϧυ͢Δ ⾣ TXJGUCVJMEίϚϯυΛ࣮ߦ͢Δ ⾣ ‫ط‬ఆͰ͸CVJMEEFCVH಺ʹ1SPEVDU͕࡞ΒΕΔ swift build

21.

ύοέʔδͷӡ༻

22.

ύοέʔδͷӡ༻ TXJGUQBDLBHFίϚϯυ  JOJU ύοέʔδͷ਽‫ܗ‬Λ࡞Δ  GFUDI VQEBUF ґଘύοέʔδΛߋ৽͢Δ  HFOFSBUFYDPEFQSPK 9DPEFϓϩδΣΫτΛੜ੒͢Δ  TIPXEFQFOEFODJFT ֎෦ґଘؔ܎Λදࣔ͢Δ  EVNQQBDLBHF ϚχϑΣετ৘ใΛग़ྗ͢Δ

23.

ύοέʔδͷӡ༻ TXJGUQBDLBHFJOJU ⾣ ύοέʔδͷ਽‫ܗ‬Λࣗಈੜ੒ ⾣ UZQFͰ਽‫ܗ‬ͷछྨΛࢦఆՄೳ  FNQUZ    ۭͷύοέʔδ  MJCSBSZ    4XJGUϞδϡʔϧʢ‫ط‬ఆʣ  FYFDVUBCMF  ࣮ߦՄೳϓϩμΫτ  TZTUFNNPEVMF γεςϜϞδϡʔϧ

24.

TXJGUQBDLBHFJOJU  ۭͷύοέʔδ swift package init --type empty

25.

TXJGUQBDLBHFJOJU  4XJGUϞδϡʔϧ swift package init

26.

TXJGUQBDLBHFJOJU  ࣮ߦՄೳϓϩμΫτ swift package init --type executable

27.

TXJGUQBDLBHFJOJU  γεςϜϞδϡʔϧ swift package init --type system-module

28.

ύοέʔδͷӡ༻ TXJGUQBDLBHFGFUDI ⾣ 1BDLBHFͷґଘ৘ใΛϑΣον͢Δ ⾣ ʜΒ͍͠ɻ۩ମతʹԿΛ͍ͯ͠Δͷʁ swift package fetch

29.

ύοέʔδͷӡ༻ TXJGUQBDLBHFVQEBUF ⾣ 1BDLBHFͷґଘ৘ใΛߋ৽͢Δ ⾣ ϦϞʔτϦϙδτϦ͔Β࠷৽൛ΛDMPOF͢Δ swift package update

30.

ύοέʔδͷӡ༻ TXJGUQBDLBHFHFOFSBUFYDPEFQSPK ⾣ ϚχϑΣετ৘ใ͔Β9DPEFϓϩδΣΫτΛੜ੒ ⾣ ϚχϑΣετΛߋ৽ͨ͠Β࠶ੜ੒͕ඞཁ ⾣ ΦϓγϣϯΛࢦఆՄೳ w PVUQVU1"5) 9DPEFϓϩδΣΫτΛੜ੒͢ΔύεΛࢦఆ w FOBCMFDPEFDPWFSBHF 5FTUΞΫγϣϯͰ$PEF$PWFSBHFΛ༗ޮԽ w 9MJOLFS'-"(4 #VJME4FUUJOHTͷ0UIFS-JOLFS'MBHTΛࢦఆ w 9DD'-"(4 9TXJGUD'-"(4 #VJME4FUUJOHTͷίϯύΠϥʔϑϥάΛࢦఆ

31.

ύοέʔδͷӡ༻ TXJGUQBDLBHFTIPXEFQFOEFODJFT ⾣ ֎෦Ϟδϡʔϧͷґଘ৘ใΛग़ྗ ⾣ GPSNBUͰग़ྗϑΥʔϚοτΛࢦఆՄೳ  UFYU   ςΩετͰπϦʔग़ྗʢ‫ط‬ఆʣ  EPU    EPU‫ࣜܗ‬ʁ  KTPO   +40/‫Ͱࣜܗ‬ग़ྗ

32.

TXJGUQBDLBHFTIPXEFQFOEFODJFT  ςΩετ‫ࣜܗ‬ swift package show-dependencies . └── MyPackage2</private/tmp/[email protected]>

33.

TXJGUQBDLBHFTIPXEFQFOEFODJFT  EPU‫ ࣜܗ‬ʁ swift package show-dependencies --format dot node [shape = box] "/private/tmp/MyPackage"[label="MyPackage\n/private/ tmp/MyPackage\nunspecified"] "/private/tmp/MyPackage2"[label="MyPackage2\n/ private/tmp/MyPackage2\n0.1.4"] "/private/tmp/MyPackage" -> "/private/tmp/ MyPackage2" }

34.
[beta]
TXJGUQBDLBHFTIPXEFQFOEFODJFT

 +40/‫ࣜܗ‬
swift package show-dependencies --format son

{"dependencies": [{"dependencies": [], "name":
"MyPackage2", "path": "/private/tmp/MyPackage/
Packages/MyPackage2-0.1.4", "url": "/private/tmp/
MyPackage2", "version": "0.1.4"}], "name":
"MyPackage", "path": "/private/tmp/MyPackage",
"url": "/private/tmp/MyPackage", "version":
“unspecified"}

35.

ύοέʔδͷӡ༻ TXJGUQBDLBHFEVNQQBDLBHF ⾣ ϚχϑΣετ৘ใΛ+40/‫Ͱࣜܗ‬ग़ྗ ⾣ JOQVUͰϚχϑΣετϑΝΠϧΛࢦఆՄೳ {"dependencies": [{"url": "/private/tmp/MyPackage2", "version": {"lowerBound": "0.0.0", "upperBound": "0.9223372036854775807.9223372036854775807"}}], "exclude": [], "name": "MyPackage", "targets": []}

36.

ύοέʔδͷϏϧυૢ࡞

37.

ύοέʔδͷϏϧυૢ࡞ TXJGUCVJMEίϚϯυ  ύοέʔδΛϏϧυ͢Δ  D DPOpHVSBUJPO ϏϧυઃఆΛࢦఆ͢Δ  DMFBO ੒Ռ෺·ͨ͸ґଘύοέʔδΛ࡟আ͢Δ  CVJMEQBUI ੒Ռ෺ͷग़ྗઌΛࢦఆ͢Δ  9DD 9TXJGUD 9MJOLFS ίϯύΠϥʔϑϥά΍ϦϯΧʔϑϥάΛࢦఆ͢Δ

38.

ύοέʔδͷϏϧυૢ࡞ TXJGUCVJMED ⾣ ϏϧυίϯϑΟάϨʔγϣϯΛࢦఆͰ͖Δ  EFCVHʢ‫ط‬ఆʣ  SFMFBTF

39.

ύοέʔδͷϏϧυૢ࡞  DEFCVH 4XJGUύοέʔδͷ৔߹ ⾣ w 0OPOF   ࠷దԽͳ͠ w H     σόοά৘ใΛੜ੒ w FOBCMFUFTUJOH ςελϏϦςΟͷ༗ޮԽ ⾣ $ϥΠϒϥϦʔͷ৔߹ w  0    ࠷దԽͳ͠ w  H     σόοά৘ใΛੜ੒

40.

ύοέʔδͷϏϧυૢ࡞  DSFMFBTF 4XJGUύοέʔδͷ৔߹ ⾣ w 0         ࠷దԽ͋Γ w XIPMFNPEVMFPQUJNJ[BUJPO Ϟδϡʔϧ͝ͱʹ ⾣ $ϥΠϒϥϦʔͷ৔߹ w 0        ࠷దԽ͋Γ

41.

ύοέʔδͷϏϧυૢ࡞ TXJGUCVJMEDMFBO ⾣ Ϗϧυͷ੒Ռ෺Λফ‫͢ڈ‬Δ  CVJME ੜ੒͞ΕͨϓϩμΫτΛ࡟আ  EJTU μ΢ϯϩʔυ͞ΕͨґଘύοέʔδΛ࡟আ

42.

0QFO4PVSDF

43.

0QFO4PVSDF ιʔείʔυͷೖख ⾣ 4XJGUιʔείʔυͷҰ෦ͱͯ͠ೖखՄೳ ⾣ ୯ମͰ΋ೖखՄೳ 4XJGU1BDLBHF.BOBHFS೸৺ӑӘ୾ᙨᢅᴿ HJUDMPOFIUUQTHJUIVCDPNBQQMFTXJGUQBDLBHFNBOBHFS

44.

0QFO4PVSDF 9DPEFϓϩδΣΫτੜ੒ ⾣ 9DPEFϓϩδΣΫτΛੜ੒Ͱ͖Δ ⾣ ίʔυΛಡΈ΍͘͢͢Δͷʹศར ԹԫԙդԠ஗ӕ4XJGU1.YDPEFQSPKԽԉԌՓӼ⇰ᘻ ԽԑՓԨդ஗ӑᇴ⷗ӃӶӚ$ԒԿԟՏ՛әड⺙ TXJGUQBDLBHFHFOFSBUFYDPEFQSPK$TXJGUQBDLBHFNBOBHFS

45.

&OKPZ4XJGU 5IBOLZPV 4XJGU1BDLBHF.BOBHFS͜ͱ͸͡Ί ‫۽‬୩༑޺ !FT@LVNBHBJ ⾣ ֓ཁ ⾣ ༻‫ ޠ‬1BDLBHF .PEVMF 1SPEVDU %FQFOEFODZ  ⾣ 1BDLBHF࡞Γͷ‫ج‬ຊ ⾣ ύοέʔδͷӡ༻ ⾣ ύοέʔδͷϏϧυૢ࡞ ⾣ 0QFO4PVSDF