Slide 1

Slide 1 text

J04ͷ$*؀ڥΛθϩ͔Βߏங GBTUMBOF#JUSJTFͰ ౖᔶͷ৽ن։ൃطଘվमΛ৐Γӽ͑Ζ

Slide 2

Slide 2 text

ࣗݾ঺հ w ࡾౡଠฏ w גࣜձࣾ7PJDZ ۀ຿ҕୗ w J04ΤϯδχΞ ೥ऑ w MJLFΞχϝήʔϜαοΧʔ w EJTMJLF஬Նੜ͝Έ !UJIJNTN

Slide 3

Slide 3 text

גࣜձࣾ7PJDZ w ઃཱ w αʔϏεϦϦʔε w ϘΠεϝσΟΞʮ7PJDZʯ w Ի੠ίϯςϯπ഑৴ϝσΟΞ
 w Ի੠Πϯϑϥࣄۀ ʙʮԻ੠ºςΫϊϩδʔʯͰΘ͘Θ͘͢ΔࣾձΛ࡞Δʙ

Slide 4

Slide 4 text

໨࣍ w$*؀ڥΛ੔උͨ͠ܦҢ w΍ͬͨ͜ͱ w·ͣ͸͔͜͜Β੔͑Α͏ w·ͱΊ

Slide 5

Slide 5 text

$*؀ڥΛ੔උͨ͠ܦҢ $*؀ڥͳΜͯͳ͔ͬͨ ʘ ?P? ʗ

Slide 6

Slide 6 text

Ҏલͷ7PJDZͷσϓϩΠ؀ڥ w ϦϦʔε༻ΞΧ΢ϯτ͕ೖͬͨ.BDͰ͔͠ετΞϦϦʔεͰ͖ͳ͍ w 9DPEFͰͷ"SDIJWF ετΞϓογϡ "QQ4UPSF$POOFDUͰͷϙνϙνͳͲͷ ໘౗ͳखॱΛ஌ͬͯΔਓҎ֎Ͱ͖ͳ͍ w ઀ଓઌͷ"1*ͳͲ $POpHVSBUJPOͰ੾Γସ͑Δ΂͖ͱ͜ΖΛखಈͰ੾Γସ͑ ͍ͯͨ w ϒϥϯνʹΑͬͯίʔυ΍ϑΝΠϧͷத਎͕ҧ͏ w 5FTU഑৴ΛผΞϓϦ WPJDZEFWΈ͍ͨͳ ͱͯ͠࡞ͬͯ"QQ4UPSF$POOFDUʹ Ξοϓϩʔυͯͨ͠

Slide 7

Slide 7 text

ϦχϡʔΞϧ͕ഭͬͯ͘Δ΍͹͍ ࿥ԻΞϓϦͷϑϧϦχϡʔΞϧΛߦ͏Ϧιʔε֬อͷͨΊ ϕτφϜʹڌ఺Λ࣋ͬͯΦϑγϣΞ։ൃΛߦ͏͜ͱ͕ܾఆ

Slide 8

Slide 8 text

৽ن։ൃ͕ഭͬͯ͘Δ΍͹͍ ݱঢ়ͷ։ൃ؀ڥͰେྔͷ13ࡹ͖ͭͭ ςετ഑৴ͭͭ͠ ίʔυॻ͖ͭͭͱ͔࣮֬ʹແཧ

Slide 9

Slide 9 text

$*؀ڥΛ੔උͨ͠ܦҢ $*؀ڥ࡞Δͧʂ

Slide 10

Slide 10 text

΍ͬͨ͜ͱશ෦ w #JUSJTFGBTUMBOFʹΑΔ %FWFMPQNFOU 4UBHJOH "QQ4UPSF ΁ͷ഑෍ w #VJME$POpHVSBUJPOʹΑΔ؀ڥม ਺ͳͲͷ੾Γସ͑ w "1* ΞϓϦΞΠίϯ (PPHMF4FSWJDF*OGPQMJTUFUD w E4:.ϑΝΠϧΛ$SBTIMZUJDT΁ Ξοϓϩʔυ w QPEVQEBUF13 w CVOEMFVQEBUF13 w NBUDIʹΑΔূ໌ॻͷ؅ཧ w %BOHFS4XJGU-JOUʹΑΔϨϏϡʔ ࣗಈԽ w ࣗಈςετ 6OJUΛগ͚ͩ͠ w ୺຤ొ࿥ূ໌ॻߋ৽

Slide 11

Slide 11 text

΍ͬͨ͜ͱશ෦ w #JUSJTFGBTUMBOFʹΑΔ %FWFMPQNFOU 4UBHJOH "QQ4UPSF ΁ͷ഑෍ w #VJME$POpHVSBUJPOʹΑΔ؀ڥม ਺ͳͲͷ੾Γସ͑ w "1* ΞϓϦΞΠίϯ (PPHMF4FSWJDF*OGPQMJTUFUD w E4:.ϑΝΠϧΛ$SBTIMZUJDT΁ Ξοϓϩʔυ w QPEVQEBUF13 w CVOEMFVQEBUF13 w NBUDIʹΑΔূ໌ॻͷ؅ཧ w %BOHFS4XJGU-JOUʹΑΔϨϏϡʔ ࣗಈԽ w ࣗಈςετ 6OJUΛগ͚ͩ͠ w ୺຤ొ࿥ূ໌ॻߋ৽ ໿ϲ݄

Slide 12

Slide 12 text

·ͣ͸͔͜͜Β੔͑Α͏ w #JUSJTFGBTUMBOFʹΑΔ %FWFMPQNFOU 4UBHJOH "QQ4UPSF ΁ͷ഑෍ w #VJME$POpHVSBUJPOʹΑΔ؀ڥม ਺ͳͲͷ੾Γସ͑ w "1* ΞϓϦΞΠίϯ (PPHMF4FSWJDF*OGPQMJTUFUD w E4:.ϑΝΠϧΛ$SBTIMZUJDT΁ Ξοϓϩʔυ w QPEVQEBUF13 w CVOEMFVQEBUF13 w NBUDIʹΑΔূ໌ॻͷ؅ཧ w %BOHFS4XJGU-JOUʹΑΔϨϏϡʔ ࣗಈԽ w ࣗಈςετ 6OJUΛগ͚ͩ͠ w ୺຤ొ࿥ূ໌ॻߋ৽

Slide 13

Slide 13 text

#JUSJTFGBTUMBOFͰ഑෍ࣗಈԽ

Slide 14

Slide 14 text

#JUSJTFGBTUMBOFͰ഑෍ࣗಈԽ %FWFMPQNFOU EFWFMPQʹ13 4UBHJOH SFMFBTFʹQVTI

Slide 15

Slide 15 text

#JUSJTFGBTUMBOFͰ഑෍ࣗಈԽ 1SPEVDUJPO NBTUFSϒϥϯνʹQVTI

Slide 16

Slide 16 text

#JUSJTFGBTUMBOFͰ഑෍ࣗಈԽ

Slide 17

Slide 17 text

#JUSJTFGBTUMBOFͰ഑෍ࣗಈԽ $SBTIMZUJDTͱ͍͏ΫϥογϡϨϙʔτΛݟΒΕΔ ػೳͳͲ͕͋ΔαʔϏεͰ͢ ͦͷதͷCFUBͱ͍͏ػೳΛ࢖ͬͯςετΞϓϦͷ ഑৴Λߦͬͯ·͢ 'JSFCBTFʹങऩ͞Εͯঃʑʹ౷߹த ଞͷબ୒ࢶͩͱ%FQMPZ(BUF͕ଟ͍Α͏Ͱ͢

Slide 18

Slide 18 text

#JUSJTFGBTUMBOFͰ഑෍ࣗಈԽ J04͓Αͼ"OESPJEΞϓϦͷϏϧυ ςετ σϓϩΠͷࣗಈԽΛॿ͚ΔλεΫϥϯφʔͰ͢ ωΠςΟϒΞϓϦͷ$*؀ڥ࡞ΔͳΒઈର͜ΕೖΕ ͯΔͷͰ͸ͳ͔Ζ͏͔

Slide 19

Slide 19 text

#JUSJTFGBTUMBOFͰ഑෍ࣗಈԽ ͍ΘΏΔ$*πʔϧͰ͢ $JSDMF$*΍+FOLJOTͰࣗલͰ΍ΔͳͲͷબ୒ࢶ΋ ͋Γ·͕ͨ͠ खܰʹ࢝ΊΔͳΒ#JUSJTF͕ྑ͍ͱ ͍͏ᷚΛฉ͍ͯ#JUSJTFʹ

Slide 20

Slide 20 text

#VJME$POpHVSBUJPOܥ gym( workspace: “YourApp.xcworkspace”, scheme: “YourApp”, clean: true, configuration: “Release” )

Slide 21

Slide 21 text

#VJME$POpHVSBUJPOܥ gym( workspace: “YourApp.xcworkspace”, scheme: “YourApp”, clean: true, configuration: “Release” )

Slide 22

Slide 22 text

#VJME$POpHVSBUJPOܥ gym( workspace: “YourApp.xcworkspace”, scheme: “YourApp”, clean: true, configuration: “Release” ) ɾ"1* ɾ(PPHMF4FSWJDF*OGPQMJTU ɾ3&7&34&%@$-*&/5@*% ɾΞϓϦΞΠίϯ

Slide 23

Slide 23 text

#VJME$POpHVSBUJPOܥ 4DIFNFΛ؀ڥ͝ͱʹ༻ҙ͠ͱ͘ͱศརͰ͢

Slide 24

Slide 24 text

ূ໌ॻपΓ J04ͷূ໌ॻ ͲΕ͘Β͍ཧղͯ͠·͔͢

Slide 25

Slide 25 text

ূ໌ॻपΓ

Slide 26

Slide 26 text

ূ໌ॻपΓ w$43ϑΝΠϧ wূ໌ॻϑΝΠϧ wQϑΝΠϧ w1SPWJTJPOJOH1SPpMF ࢀߟ: https://qiita.com/bl-lia/items/c6ec88020d526cdb454c

Slide 27

Slide 27 text

ূ໌ॻपΓ ূ໌ॻ΍1SPWJTJPOJOH1SPpMFͷ࡞੒ ͦΕΒͷ҉߸ԽΛͯ͠(JUIVCϦϙδτϦʹอଘ ෳ߹Խͯ͠औಘΛ୲ͬͯ͘ΕΔ௒༏लͳࢠ

Slide 28

Slide 28 text

ূ໌ॻपΓ JPTDFSUJpDBUFTͷΑ͏ͳ໊લͷQSJWBUFϦϙ δτϦΛ࡞Δ ূ໌ॻΛ؅ཧ͍ͨ͠ΞϓϦέʔγϣϯͷϦ ϙδτϦͰGBTUMBOFNBUDIJOJU͢Δ (JUIVCϦϙδτϦͷ63-ΛٻΊΒΕΔͷ Ͱ JPTDFSUJpDBUFTϦϙδτϦͷ63-Λࢦఆ ͢Δ GBTUMBOFNBUDIEFWFMPQNFOUͯ͠ Ϧϙ δτϦʹূ໌ॻΛ҉߸Խͯ͠อଘ GBTUMBOFNBUDIEFWFMPQNFOUŠSFBEPOMZ Ͱূ໌ॻΛऔಘ

Slide 29

Slide 29 text

ূ໌ॻपΓ

Slide 30

Slide 30 text

ূ໌ॻपΓ ͑ ͦΕ͡Ό͋ŠSFBEPOMZ͚ͭ๨ΕͨΒ উखʹূ໌ॻߋ৽͞ΕΔͷͰ͸

Slide 31

Slide 31 text

ূ໌ॻपΓ ʮઈରʹŠSFBEPOMZ͚ͭͯͶʯ ͬͯݴ͍ฉ͔ͤΔ͜ͱ͕ॏཁ

Slide 32

Slide 32 text

ূ໌ॻपΓ (JUIVC5FBN

Slide 33

Slide 33 text

ূ໌ॻपΓ

Slide 34

Slide 34 text

ূ໌ॻपΓ match( type: “appstore”, app_identifier: “jp.your.app”, readonly: true )

Slide 35

Slide 35 text

ূ໌ॻपΓ

Slide 36

Slide 36 text

4XJGU-JOU%BOHFS

Slide 37

Slide 37 text

4XJGU༻ͷ੩తղੳπʔϧͰ͢ ߦ͋ͨΓͷจࣈ਺ ωετͷਂ͞ͳͲΛ ࣗಈͰνΣοΫͯ͘͠Ε·͢ 4XJGU-JOU%BOHFS

Slide 38

Slide 38 text

%BOHFS4XJGU-JOU 1VMM3FRVFTUͷࢦఠΛࣗಈԽͯ͘͠ΕΔ 4XJGUҎ֎ͷݴޠͰ΋࢖༻Մೳ

Slide 39

Slide 39 text

4XJGU-JOU%BOHFS github.dismiss_out_of_range_messages swiftlint.config_file = ‘.swiftlint.yml' swiftlint.lint_files inline_mode: true %BOHFSpMF

Slide 40

Slide 40 text

4XJGU-JOU%BOHFS danger 'BTUpMF

Slide 41

Slide 41 text

4XJGU-JOU%BOHFS

Slide 42

Slide 42 text

4XJGU-JOU%BOHFS

Slide 43

Slide 43 text

·ͱΊ w ϛεΛͪ͠Όμϝͳͱ͜Ζ ετΞϦϦʔεূ໌ॻ w ස౓º࣌ؒ޻਺͕େ͖͍ͱ͜Ζ ςετ഑৴ w ίϛϡχέʔγϣϯίετ͕େ͖͍ͱ͜Ζ ূ໌ॻ w Πϥͬͱͯ͠͠·͍͕ͪͳͱ͜Ζ 4XJGU-JOU%BOHFS

Slide 44

Slide 44 text

7PJDZʹ͍ͭͯ w J04ΤϯδχΞืूIUUQTXXXXBOUFEMZDPNQSPKFDUT RMHB+Q;."CJ5 w 7PJDZ&OHJOFFSJOH#MPHIUUQTNFEJVNDPNWPJDZFOHJOFFSJOH

Slide 45

Slide 45 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠