>100 Views
February 19, 17
スライド概要
Swift 3.0.2 に付属の Swift Package Manager の基本的なところを簡単にまとめたスライドです。第13回 カジュアル Swift 勉強会 @ 青葉台で話しました。
※ Docswell での公開に移行する直前の Slideshare での閲覧数は 2,133 でした。
正統派趣味人プログラマー。プログラミングとは幼馴染です。
4XJGU1BDLBHF.BOBHFS ͜ͱ͡Ί !ΧδϡΞϧ4XJGUษڧձ ۽୩༑ IUUQF[OFUKQ 4XJGU TXJGUQN
4XJGU1BDLBHF.BOBHFS
4XJGU1BDLBHF.BOBHFS ֓ཁ ⾣ 4XJGUඪ४ͷύοέʔδཧγεςϜ ⾣ 4XJGU͔Βར༻Մೳ ⾣ μϯϩʔυɺίϯύΠϧɺϦϯΫΛࣗಈԽ ⾣ Φʔϓϯιʔε IUUQTHJUIVCDPNBQQMFTXJGUQBDLBHFNBOBHFS
4XJGU1BDLBHF.BOBHFS ఆڥ ⾣ NBD04 -JOVY w Ͱ࣌ݱJ04 XBUDI04 UW04ʹඇରԠ ⾣ 'PVOEBUJPO "QQ,JU (MJCͳͲͷϞδϡʔϧ దʹଘࡏ͍ͯ͠Ε͑Δ
4XJGU1BDLBHF.BOBHFS όʔδϣϯͷ֬ೝ ⾣ TXJGUQBDLBHFίϚϯυͰ֬ೝՄೳ ⾣ WFSTJPOΦϓγϣϯΛࢦఆ swift package --version Apple Swift Package Manager - Swift 3.0.2 (swiftpm-11750)
༻ޠ 1BDLBHF .PEVMF 1SPEVDU %FQFOEFODZ
༻ޠ 1BDLBHF ⾣ ൦ͷ୯Ґ ⾣ ϚχϑΣετϑΝΠϧ1BDLBHFTXJGUͰߏ ⾣ ͻͱͭͷύοέʔδʹෳͷλʔήοτΛ࣋ͭ ⾣ λʔήοτΛߏ͢ΔιʔεϑΝΠϧΛ࣋ͭ ⾣ λʔήοτຖͷґଘใΛ࣋ͭ ⾣ ֎෦ϞδϡʔϧͱͷґଘใΛ࣋ͭ
༻ޠ .PEVMF ⾣ 4XJGUίʔυΛཧ͢Δ୯Ґ w త୯ҐͰ࡞Εɺ࠶ར༻͕Մೳ ⾣ Ϟδϡʔϧ୯ҐͰ໊લۭؒΛ࣋ͭ ⾣ ΞΫηείϯτϩʔϧͷཧ୯Ґ ⾣ μϯϩʔυͯ͠Ϗϧυ͢Δඞཁ͕͋Δ w (MJCD%BSXJOɺ͙͢ʹ͑Δ
༻ޠ 1SPEVDU ⾣ λʔήοτ͕ੜ͢Δͷ w ࣮ߦՄೳϑΝΠϧ w 4XJGUϞδϡʔϧ w $ϥΠϒϥϦ
༻ޠ %FQFOEFODZ ⾣ ύοέʔδͰඞཁͳ֎෦Ϟδϡʔϧ ⾣ (JUϦϙδτϦͷ63-Ͱࢦఆ͢Δ ⾣ (JUͷλάใͰόʔδϣϯཧ͞Ε͍ͯΔ ⾣ ґଘؔύοέʔδϚωʔδϟʔ͕ཧ ⾣ ґଘੑ࠶ؼతʹղܾ͞ΕΔ
1BDLBHF࡞Γͷجຊ
1BDLBHF࡞Γͷجຊ ֓ཁ ύοέʔδΛऩΊΔॴΛ࡞Δ ϚχϑΣετΛ࡞Δ ׳शʹैͬͯϑΝΠϧΛἧ͑Δ Ϗϧυ͢Δ
1BDLBHF࡞Γͷجຊ ύοέʔδΛऩΊΔॴΛ࡞Δ ⾣ σΟϨΫτϦʔΛ࡞Δ ⾣ ύοέʔδ໊ͱಉ͡ʹ͢Δͱѻ͍͍͢ mkdir MyPackage
1BDLBHF࡞Γͷجຊ ϚχϑΣετΛ࡞Δ ⾣ ϧʔτʹ1BDLBHFTXJGUΛ࡞͢Δ ⾣ 1BDLBHFͰܕύοέʔδใΛએ͢ݴΔ JNQPSU1BDLBHF%FTDSJQUJPO MFUQBDLBHF1BDLBHF OBNF.Z1BDLBHF UBSHFUT< 5BSHFU OBNF.BJO.PEVMF EFQFOEFODJFT<4VC.PEVMF> > EFQFOEFODJFT< 1BDLBHF VSM&YUFSOBM1BDLBHF NBKPS7FSTJPO >
1BDLBHF࡞Γͷجຊ ׳शʹैͬͯϑΝΠϧΛἧ͑Δ ⾣ ϑΥϧμʔʹϑΝΠϧΛἧ͑Δ ⾣ ἧ͑ํʹΑͬͯ1SPEVDU͕มΘΔ ⾣ ࣮ߦՄೳϓϩμΫτ 4XJGUϞδϡʔϧ $$ γεςϜϞδϡʔϧ 0CKFDUJWF$ϥΠϒϥϦ ϚχϑΣετϑΝΠϧͷ༰ڞ௨
1BDLBHF࡞Γͷجຊ ࣮ߦՄೳϓϩμΫτ༻ͷἧ͑ํ ⾣ ࠷ݶɺNBJOTXJGUΛ༻ҙ͢Δ ⾣ ඞཁͳΒ4XJGUϑΝΠϧΛ4PVSDFTԼʹஔ
1BDLBHF࡞Γͷجຊ 4XJGUϞδϡʔϧ༻ͷἧ͑ํ ⾣ NBJOTXJGUΛஔ͠ͳ͍ ⾣ ඞཁͳ4XJGUϑΝΠϧΛ4PVSDFTԼʹஔ
1BDLBHF࡞Γͷجຊ $ϥΠϒϥϦ༻ͷἧ͑ํ ⾣ NBJODΛஔ͠ͳ͍ ⾣ ඞཁͳ$ϑΝΠϧΛ4PVSDFTԼʹஔ
1BDLBHF࡞Γͷجຊ γεςϜϞδϡʔϧ༻ͷἧ͑ํ ⾣ ϞδϡʔϧϚοϓΛஔ͢Δ ⾣ ϞδϡʔϧϚοϓͰ͏ϔομʔϑΝΠϧΛஔ͢Δ
1BDLBHF࡞Γͷجຊ Ϗϧυ͢Δ ⾣ TXJGUCVJMEίϚϯυΛ࣮ߦ͢Δ ⾣ طఆͰCVJMEEFCVHʹ1SPEVDU͕࡞ΒΕΔ swift build
ύοέʔδͷӡ༻
ύοέʔδͷӡ༻ TXJGUQBDLBHFίϚϯυ JOJU ύοέʔδͷܗΛ࡞Δ GFUDI VQEBUF ґଘύοέʔδΛߋ৽͢Δ HFOFSBUFYDPEFQSPK 9DPEFϓϩδΣΫτΛੜ͢Δ TIPXEFQFOEFODJFT ֎෦ґଘؔΛදࣔ͢Δ EVNQQBDLBHF ϚχϑΣετใΛग़ྗ͢Δ
ύοέʔδͷӡ༻ TXJGUQBDLBHFJOJU ⾣ ύοέʔδͷܗΛࣗಈੜ ⾣ UZQFͰܗͷछྨΛࢦఆՄೳ FNQUZ ۭͷύοέʔδ MJCSBSZ 4XJGUϞδϡʔϧʢطఆʣ FYFDVUBCMF ࣮ߦՄೳϓϩμΫτ TZTUFNNPEVMF γεςϜϞδϡʔϧ
TXJGUQBDLBHFJOJU ۭͷύοέʔδ swift package init --type empty
TXJGUQBDLBHFJOJU 4XJGUϞδϡʔϧ swift package init
TXJGUQBDLBHFJOJU ࣮ߦՄೳϓϩμΫτ swift package init --type executable
TXJGUQBDLBHFJOJU γεςϜϞδϡʔϧ swift package init --type system-module
ύοέʔδͷӡ༻ TXJGUQBDLBHFGFUDI ⾣ 1BDLBHFͷґଘใΛϑΣον͢Δ ⾣ ʜΒ͍͠ɻ۩ମతʹԿΛ͍ͯ͠Δͷʁ swift package fetch
ύοέʔδͷӡ༻ TXJGUQBDLBHFVQEBUF ⾣ 1BDLBHFͷґଘใΛߋ৽͢Δ ⾣ ϦϞʔτϦϙδτϦ͔Β࠷৽൛ΛDMPOF͢Δ swift package update
ύοέʔδͷӡ༻ TXJGUQBDLBHFHFOFSBUFYDPEFQSPK ⾣ ϚχϑΣετใ͔Β9DPEFϓϩδΣΫτΛੜ ⾣ ϚχϑΣετΛߋ৽ͨ͠Β࠶ੜ͕ඞཁ ⾣ ΦϓγϣϯΛࢦఆՄೳ w PVUQVU1"5) 9DPEFϓϩδΣΫτΛੜ͢ΔύεΛࢦఆ w FOBCMFDPEFDPWFSBHF 5FTUΞΫγϣϯͰ$PEF$PWFSBHFΛ༗ޮԽ w 9MJOLFS'-"(4 #VJME4FUUJOHTͷ0UIFS-JOLFS'MBHTΛࢦఆ w 9DD'-"(4 9TXJGUD'-"(4 #VJME4FUUJOHTͷίϯύΠϥʔϑϥάΛࢦఆ
ύοέʔδͷӡ༻ TXJGUQBDLBHFTIPXEFQFOEFODJFT ⾣ ֎෦ϞδϡʔϧͷґଘใΛग़ྗ ⾣ GPSNBUͰग़ྗϑΥʔϚοτΛࢦఆՄೳ UFYU ςΩετͰπϦʔग़ྗʢطఆʣ EPU EPUࣜܗʁ KTPO +40/Ͱࣜܗग़ྗ
TXJGUQBDLBHFTIPXEFQFOEFODJFT ςΩετࣜܗ swift package show-dependencies . └── MyPackage2</private/tmp/[email protected]>
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" }
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"}
ύοέʔδͷӡ༻ TXJGUQBDLBHFEVNQQBDLBHF ⾣ ϚχϑΣετใΛ+40/Ͱࣜܗग़ྗ ⾣ JOQVUͰϚχϑΣετϑΝΠϧΛࢦఆՄೳ {"dependencies": [{"url": "/private/tmp/MyPackage2", "version": {"lowerBound": "0.0.0", "upperBound": "0.9223372036854775807.9223372036854775807"}}], "exclude": [], "name": "MyPackage", "targets": []}
ύοέʔδͷϏϧυૢ࡞
ύοέʔδͷϏϧυૢ࡞ TXJGUCVJMEίϚϯυ ύοέʔδΛϏϧυ͢Δ D DPOpHVSBUJPO ϏϧυઃఆΛࢦఆ͢Δ DMFBO Ռ·ͨґଘύοέʔδΛআ͢Δ CVJMEQBUI Ռͷग़ྗઌΛࢦఆ͢Δ 9DD 9TXJGUD 9MJOLFS ίϯύΠϥʔϑϥάϦϯΧʔϑϥάΛࢦఆ͢Δ
ύοέʔδͷϏϧυૢ࡞ TXJGUCVJMED ⾣ ϏϧυίϯϑΟάϨʔγϣϯΛࢦఆͰ͖Δ EFCVHʢطఆʣ SFMFBTF
ύοέʔδͷϏϧυૢ࡞ DEFCVH 4XJGUύοέʔδͷ߹ ⾣ w 0OPOF ࠷దԽͳ͠ w H σόοάใΛੜ w FOBCMFUFTUJOH ςελϏϦςΟͷ༗ޮԽ ⾣ $ϥΠϒϥϦʔͷ߹ w 0 ࠷దԽͳ͠ w H σόοάใΛੜ
ύοέʔδͷϏϧυૢ࡞ DSFMFBTF 4XJGUύοέʔδͷ߹ ⾣ w 0 ࠷దԽ͋Γ w XIPMFNPEVMFPQUJNJ[BUJPO Ϟδϡʔϧ͝ͱʹ ⾣ $ϥΠϒϥϦʔͷ߹ w 0 ࠷దԽ͋Γ
ύοέʔδͷϏϧυૢ࡞ TXJGUCVJMEDMFBO ⾣ ϏϧυͷՌΛফ͢ڈΔ CVJME ੜ͞ΕͨϓϩμΫτΛআ EJTU μϯϩʔυ͞ΕͨґଘύοέʔδΛআ
0QFO4PVSDF
0QFO4PVSDF ιʔείʔυͷೖख ⾣ 4XJGUιʔείʔυͷҰ෦ͱͯ͠ೖखՄೳ ⾣ ୯ମͰೖखՄೳ 4XJGU1BDLBHF.BOBHFS৺ӑӘᙨᢅᴿ HJUDMPOFIUUQTHJUIVCDPNBQQMFTXJGUQBDLBHFNBOBHFS
0QFO4PVSDF 9DPEFϓϩδΣΫτੜ ⾣ 9DPEFϓϩδΣΫτΛੜͰ͖Δ ⾣ ίʔυΛಡΈ͘͢͢Δͷʹศར ԹԫԙդԠӕ4XJGU1.YDPEFQSPKԽԉԌՓӼ⇰ᘻ ԽԑՓԨդӑᇴӃӶӚ$ԒԿԟՏ՛әड⺙ TXJGUQBDLBHFHFOFSBUFYDPEFQSPK$TXJGUQBDLBHFNBOBHFS
&OKPZ4XJGU 5IBOLZPV 4XJGU1BDLBHF.BOBHFS͜ͱ͡Ί ۽୩༑ !FT@LVNBHBJ ⾣ ֓ཁ ⾣ ༻ ޠ1BDLBHF .PEVMF 1SPEVDU %FQFOEFODZ ⾣ 1BDLBHF࡞Γͷجຊ ⾣ ύοέʔδͷӡ༻ ⾣ ύοέʔδͷϏϧυૢ࡞ ⾣ 0QFO4PVSDF