Slide 1

Slide 1 text

ΏΊΈͷJ04ϓϩδΣΫτ͕ औΓೖΕͯΔࣗಈԽͷࢼΈ f o r : 6 . & . * T X J G U

Slide 2

Slide 2 text

} var employedBy = "YUMEMI Inc." var job = "iOS Tech Lead" var favoriteLanguage = "Swift" var twitter = "@lovee" var qiita = "lovee" var github = "el-hoshino" var additionalInfo = """ ࣗ୐ʹ௕ډ͗ͯ͢͠ମ͕ͩΔ͍… """ final class Me: Developable, Talkable {

Slide 3

Slide 3 text

ࣗಈԽΛܭΔϞνϕʔγϣϯ w ຊମίʔυҎ֎ͷ෦෼ʹແବͳ࿑ྗΛ͔͚ͳͯ͘ࡁΉ w ୯७Ͱॏෳͳ࡞ۀΛػցʹ೚ͤͯετϨεΛԼ͛Δ w ଐਓతͳ࡞ۀΛݮΒͯ͠୭Ͱ΋ࢀՃ͠΍͘͢Ͱ͖Δ w ࠷ऴతʹϓϩδΣΫτ඼্࣭͕͕Δ

Slide 4

Slide 4 text

ΏΊΈͰ͸ࣗಈԽͷͨΊͷ༷ʑͳ؀ڥߏஙܥϑΝΠϧΛڞ௨Խ͍ͯ͠Δ

Slide 5

Slide 5 text

؀ڥߏங ϓϧϦΫ σϓϩΠ

Slide 6

Slide 6 text

؀ڥߏங ϓϧϦΫ σϓϩΠ w CPPUTUSBQTI w 16--@3&26&45@5 &.1-"5&NE w CJUSJTFZNM w %BOHFSpMFTXJGU w CJUSJTFZNM w SFMFBTF@DPEFTJHOTI

Slide 7

Slide 7 text

CPPUTUSBQTIʢʣ install_prebuild_libraries() { # Gem BundleɺHomebrew ͱ Mint ΛඞཁʹԠͯ͡Πϯετʔϧ echo "Install Gems, Brews and Mints" if [ -e Gemfile ]; then bundle install fi if [ -e Brewfile ]; then brew bundle fi if [ -e Mintfile ]; then mint bootstrap fi }

Slide 8

Slide 8 text

CPPUTUSBQTIʢʣ generate_xcode_project() { # XcodeGen Λಋೖͯ͠Δ৔߹͸ɺXcode ϓϩδΣΫτϑΝΠϧΛੜ੒ echo "Generate .xcodeproj file" if [ -e project.yml ]; then mint run xcodegen fi }

Slide 9

Slide 9 text

CPPUTUSBQTIʢʣ install_embeded_libraries() { # ඞཁʹԠͯ͡ CocoaPodsɺCarthage ͱ SwiftPM ͷϥΠϒϥϦʔΛಋೖ echo "Install dependencies via CocoaPods, Carthage and SwiftPM" if [ -e Podfile ]; then bundle exec pod install --repo-update fi if [ -e Cartfile ]; then carthage bootstrap --use-ssh --no-use-binaries --cache- builds --platform ios fi if [ $(find . -maxdepth 4 -name swiftpm | wc -l) -gt 0 ]; then workspace_file="$(ls | grep '.*\.xcworkspace$')" scheme="$(xcodebuild -workspace $workspace_file -list | sed -n -e '/Schemes:/,$p' | sed -n -e 2p | xargs echo)" xcodebuild -resolvePackageDependencies -workspace "$workspace_file" -scheme "$scheme" fi }

Slide 10

Slide 10 text

CPPUTUSBQTIʢಋೖ݁Ռʣ w λʔϛφϧͰ./bootstrap.shίϚϯυͰҰൃͰ ؀ڥߏங͕Ͱ͖Δ w #VOEMFSͷόʔδϣϯ΍ɺ$PDPB1PET$BSUIBHF ౳ͷύοέʔδ؅ཧͷ༗ແΛҙࣝ͠ͳͯ͘ࡁΉ w ٸʹϓϩδΣΫτʹࢀՃͤ͞ΒΕͯ΋ɺ؀ڥߏஙʹ ೰·͞Εͣʹ։ൃʹऔΓֻ͔ΕΔ

Slide 11

Slide 11 text

16--@3&26&45@5&.1-"5&NEʢʣ ## ֓ཁ ## ϨϏϡʔ؍఺ ## ϨϏϡʔϨϕϧ - ~~Lv0: ·ͬͨ͘ݟͳ͍ͰAccept͢Δ~~ - ~~Lv1: ͺͬͱΈͯҧ࿨ײ͕ͳ͍͔νΣοΫͯ͠Accept͢Δ~~ - ~~Lv2: ࢓༷Ϩϕϧ·Ͱཧղͯ͠ɺ࢓༷௨Γʹಈ͔͋͘Δఔ౓ݕূͯ͠Accept͢Δ~~ - ~~Lv3: ࣮ࡍʹ؀ڥͰಈ࡞֬ೝͨ͠͏͑ͰAccept͢Δ~~

Slide 12

Slide 12 text

16--@3&26&45@5&.1-"5&NEʢʣ ## ը໘ઃܭॻ΁ͷϦϯΫ ## σβΠϯΨΠυ΁ͷϦϯΫ ## API࢓༷ॻ΁ͷϦϯΫ

Slide 13

Slide 13 text

16--@3&26&45@5&.1-"5&NEʢʣ ## εΫϦʔϯγϣοτ | before | after | |--------|-------| | XXXXXX | XXXXX | ## උߟ

Slide 14

Slide 14 text

16--@3&26&45@5&.1-"5&NEʢಋೖ݁Ռʣ w 13ग़͢ͱ͖ʹࣗಈతʹઆ໌จ͕࡞੒͞ΕΔͨΊɺ ΤϯδχΞͱͯ͠ରԠ͠΍͍͢ w ඞཁͳ߲໨ͱͦΕʹ͍ͭͯͷ؆୯ͳઆ໌͕ςϯϓϨʹ ͋ΔͨΊɺࣄ߲ͷهೖ࿙Ε͕ൃੜ͠ʹ͍͘ w ૢ࡞ಈըͷ(JGԽͳͲͷΑ͏ͳൺֱతʹෳࡶͳૢ࡞͕ ςϯϓϨͷίϝϯτʹखॱॻ͔Ε͍ͯΔͨΊɺ୭Ͱ΋ ͙͢ʹରԠͰ͖Δ

Slide 15

Slide 15 text

#JUSJTFʢ֓ཁʣ IUUQTRJJUBDPNMPWFFJUFNTFBFGC

Slide 16

Slide 16 text

#JUSJTFʢϓϧϦΫӡ༻ํ਑ʣ w EFWFMPQNBTUFSϒϥϯν΁ͷ13͕͋ͬͨΒɿ w 9DPEFςετΛ࣮ߦ w %BOHFSΛ࣮ߦ w ্ه݁ՌΛݩʹ13ʹϑΟʔυόοΫ

Slide 17

Slide 17 text

#JUSJTFʢϓϧϦΫಋೖ݁Ռʣ w 13τϦΨʔʹΑΓ8PSLqPX͕ࣗಈతʹಈͨ͘Ίɺ 13Λग़͚ͩ͢Ͱे෼Ͱ͋Γແବͳ࡞ۀ͕ൃੜ͠ͳ͍ w ্هʹΑΓɺίʔυͷෆඋʹΑΔϓϩάϥϜͷόάΛ େ෯ʹ࡟ݮͰ͖ɺίʔυ඼࣭޲্ʹܨ͕ͬͨ

Slide 18

Slide 18 text

%BOHFS4XJGUʢ֓ཁʣ IUUQTRJJUBDPNMPWFFJUFNTBEBFC

Slide 19

Slide 19 text

%BOHFS4XJGUʢ֓ཁʣ IUUQTTQFBLFSEFDLDPNMPWFFQBUIUPJNQPSUEBOHFSTXJGU

Slide 20

Slide 20 text

%BOHFS4XJGUʢӡ༻ํ਑ʣ w 13ͷIFBEͱCBTF͕ਖ਼͍͔͠Ͳ͏͔ΛνΣοΫ w มߋྔ΍ඞཁͳमਖ਼͕͋Δ͔Ͳ͏͔ΛνΣοΫ w 4XJGU-JOUͷ࣮ߦ݁ՌΛूܭ w 9DPEFͷ#VJME4VNNBSZΛूܭ w ςετΧόϨοδΛूܭ Ϗϧυϫʔχϯά΋ ڭ͑ͯ͘ΕΔ!

Slide 21

Slide 21 text

%BOHFS4XJGUʢಋೖ݁Ռʣ w ػցతͰݕग़Ͱ͖Δ໰୊఺͕૿͑ɺϨϏϡΞʔͷෛ୲ ͕ݮͬͨ w ϨϏϡΞʔ͕ൺֱతʹΑΓຊ࣭ͷίʔυ΍ઃܭʹઐ೦ Ͱ͖ͨ

Slide 22

Slide 22 text

#JUSJTFʢ֓ཁʣ IUUQTRJJUBDPNMPWFFJUFNTFBFGC

Slide 23

Slide 23 text

#JUSJTFʢσϓϩΠӡ༻ํ਑ʣ w #JUSJTFʹϏϧυ൪߸ͷมߋΛ೚ͤΔ w EFWFMPQϒϥϯν΁ͷ13͕͋ͬͨΒɿ w ։ൃऀ޲͚ʹ%FW؀ڥΛ#JUSJTFʹσϓϩΠ w EFWFMPQϒϥϯν͕.FSHF͞ΕͨΒɿ w ΫϥΠΞϯτ޲͚ʹ4UH؀ڥΛ#JUSJTFʹσϓϩΠ w NBTUFSϒϥϯν͕.FSHF͞ΕͨΒɿ w Ϣʔβ޲͚ʹຊ൪؀ڥΛ"QQ4UPSFʹσϓϩΠ w σϓϩΠ݁ՌΛ4MBDLʹ23ίʔυ෇͖Ͱ௨஌ ɿ13ͷ৔߹͸ɺ13ͷϖʔδʹ΋σϓϩΠ݁ՌΛ23ίʔυ෇͖ͰίϝϯτΛೖΕΔ

Slide 24

Slide 24 text

#JUSJTFʢσϓϩΠಋೖ݁Ռʣ w ඞཁͳλΠϛϯάͰඞཁͳλʔήοτʹϏϧυΛॻ͖ ग़ͤɺಈ࡞֬ೝͷͨΊͷલ४උͷख͕ؒল͚ͨ w 23ίʔυΛεΩϟϯ͢Δ͚ͩͰΠϯετʔϧͰ͖Δ ͨΊɺಈ࡞֬ೝͷͨΊͷखؒ΋ඇৗʹ௿͍ w "QQ4UPSF$POOFDUʹ΋௚઀*1"Λ্͛ΒΕΔͨΊɺ ৹ࠪʹग़͢खؒ΋ଟগվળͰ͖ͨ

Slide 25

Slide 25 text

SFMFBTF@DPEFTJHOTIʢʣ development_release_action="development" development_bundle_id="DEVELOPMENT_BUNDLE_ID" development_team_id="DEVELOPMENT_TEAM_ID" staging_release_action="adhoc" staging_bundle_id="STAGING_BUNDLE_ID" staging_team_id="STAGING_TEAM_ID" production_release_action="appstore" production_bundle_id="PRODUCTION_BUNDLE_ID" production_team_id="PRODUCTION_TEAM_ID"

Slide 26

Slide 26 text

SFMFBTF@DPEFTJHOTIʢʣ bootstrap() { fastlane match $development_release_action -a $development_bundle_id -b $development_team_id --git_branch $development_team_id --readonly fastlane match $staging_release_action -a $staging_bundle_id -b $staging_team_id --git_branch $staging_team_id --readonly fastlane match $production_release_action -a $production_bundle_id -b $production_team_id --git_branch $production_team_id --readonly } update() { echo "Please enter your Apple Developer Account ID to update the certificates:" read developer_id fastlane match $development_release_action -a $development_bundle_id -b $development_team_id -u $developer_id --git_branch $development_team_id fastlane match $staging_release_action -a $staging_bundle_id -b $staging_team_id -u $developer_id --git_branch $staging_team_id fastlane match $production_release_action -a $production_bundle_id -b $production_team_id -u $developer_id --git_branch $production_team_id } ౰વͳ͕ΒɺGBTUMBOFNBUDIΛར༻͍ͯ͠ΔͨΊɺূ໌ॻΛอ؅͢ΔHJUϦϙͷ63-ͳͲͷҰ෦ઃఆʹ.BUDIpMF΋ඞཁ

Slide 27

Slide 27 text

SFMFBTF@DPEFTJHOTIʢʣ while getopts :-: OPT; do case $OPT in "-" ) case $OPTARG in "update" ) SHOULD_UPDATE="TRUE" ;; esac ;; esac done if ! type fastlane &> /dev/null; then echo "Fastlane is not installed. Please install Fastlane first" exit 1 fi if [ "$SHOULD_UPDATE" = "TRUE" ]; then update else bootstrap fi

Slide 28

Slide 28 text

SFMFBTF@DPEFTJHOTIʢಋೖ݁Ռʣ w λʔϛφϧͰ./release_codesign.shίϚϯυͰ ҰൃͰσϓϩΠ༻ϦϦʔεূ໌ॻ͕औಘͰ͖Δ w #JUSJTF͚ͩͰͳ͘ɺΤϯδχΞͰ΋౰વར༻Մೳ w ূ໌ॻͷߋ৽͕ඞཁͳͱ͖ʹɺݖݶ͑͋͞Ε͹୭Ͱ΋ ./release_codesign.sh --updateͰ͙͢ߋ৽ Ͱ͖ΔͨΊɺߋ৽͢Δख͚ؒͩͰͳ͘ɺ৽͍͠ূ໌ॻ Λ#JUSJTFʹ্͛Δखؒ΋ল͚Δ

Slide 29

Slide 29 text

ࠓޙͷ໨ඪɿ ৽نϓϩδΣΫτ࡞੒ͷࣗಈԽ!

Slide 30

Slide 30 text

ࢀߟࢿྉ w IUUQTTIFMMTDSJQUTVOPOFNFUVUPSJBMIUNM w IUUQTRJJUBDPNLBUTVLJJJUFNTCGFFBFF w IUUQTEPDTHJUIVCDPNKBHJUIVCCVJMEJOHBTUSPOHDPNNVOJUZ DPOpHVSJOHJTTVFUFNQMBUFTGPSZPVSSFQPTJUPSZ w IUUQTEFWDFOUFSCJUSJTFJP w IUUQTRJJUBDPNMPWFFJUFNTFBFGC w IUUQTEBOHFSTZTUFNTTXJGU w IUUQTRJJUBDPNMPWFFJUFNTBEBFC w IUUQTTQFBLFSEFDLDPNMPWFFQBUIUPJNQPSUEBOHFSTXJGU