Slide 1

Slide 1 text

υοάϑʔσΟϯά༻ػ ೳ։ൃͷεεϝ shinagawa.swift #1 (C) fromkk. 2016 1

Slide 2

Slide 2 text

ࣗݾ঺հ ২Ԭɹ࿨࠸ Timers inc.ͷiOSΤϯδχΞ Twitter: @fromkk Github: fromkk (C) fromkk. 2016 2

Slide 3

Slide 3 text

એ఻ Χοϓϧ޲͚ΞϓϦͷPairy ͱ Ո଒޲͚ࣸਅڞ༗ΞϓϦͷ Famm ΛӡӦ͍ͯ͠Δ Ͱ͸ ΤϯδχΞΛืू ͍ͯ͠·͢ʂ ڵຯͷ͋Δํ͸͓੠ֻ͚ɺ΋͘͠͸ http://timers-inc.com/ ΑΓ͓໰͍߹ΘͤԼ͍͞ʂ (C) fromkk. 2016 3

Slide 4

Slide 4 text

ૣ଎Ͱ͕͢ (C) fromkk. 2016 4

Slide 5

Slide 5 text

νʔϜͰ։ൃͯ͠Δͱ ͜Μͳࣄ͋Γ·ͤΜ͔ʁ (C) fromkk. 2016 5

Slide 6

Slide 6 text

͜Μͳࣄ͋Γ·ͤΜ͔ʁ • ࣾһʮ͜͜όάͬͯΔΜ͚ͩͲʯ • ʢϏϧυ൪߸͔Β௥͏ͷେม...ʣ • ๻ʮ...֬ೝ͢Δ͔Βͪΐͬͱ଴ͬͯʯ • ʢΘ͔ΜͶʔΑɺ͜Ε୭ͷϏϧυͩΑ...!ʣ (C) fromkk. 2016 6

Slide 7

Slide 7 text

ϒϥϯν໊͕෼͔Ε͹ ୭͕ॻ͍ͨ΋ͷͳͷ͔෼͔Δͷʹʂ (C) fromkk. 2016 7

Slide 8

Slide 8 text

ʢ։ൃதͷʣ ΞϓϦͷதʹϒϥϯν໊ Λग़ͯ͠͠·͓͏ʂ (C) fromkk. 2016 8

Slide 9

Slide 9 text

खॱ • Xcode಺ʹ Branch.plist ͱ͍͏ϑΝΠϧΛ࡞੒ • Edit Scheme ʹҠಈ • εΩʔϜΛ Shared ʹมߋ • Build -> Pre Actions ΛΫϦοΫ • ϏϧυλʔήοτΛ Provide build setting from *** ʹมߋ • Scheme/Build/Pre-actions/Run Script ʹ࣍ͷίʔυΛ௥Ճ ※ https://github.com/fromkk/GitBranchName ʹαϯϓϧΛΞοϓ͍ͯ͠·͢ʂ (C) fromkk. 2016 9

Slide 10

Slide 10 text

खॱ branch="master" if [ ! -z "${CIRCLE_BRANCH+x}" ]; then branch=$CIRCLE_BRANCH elif [ ! -z "${TRAVIS_BRANCH+x}" ]; then branch=$TRAVIS_BRANCH elif [ ! -z "${BITRISE_GIT_BRANCH+x}" ]; then branch=$BITRISE_GIT_BRANCH else git_path=$(which git) if [ -e $git_path ]; then branch=$($git_path --git-dir=$PROJECT_DIR/.git rev-parse --abbrev-ref HEAD) fi fi plistName=$PROJECT_DIR/Branch plistPath=$plistName.plist if [ ! -e $plistPath ]; then touch $plistPath fi chmod u+wr,g+wr,o+r $plistPath defaults write $plistName "branch" $branch (C) fromkk. 2016 10

Slide 11

Slide 11 text

खॱ • Ϗϧυͯ͠ΈΔ • Branch.plist ʹݱࡏͷϒϥϯν໊͕൓ө͞Ε͍ͯΔࣄΛ֬ ೝ • ࣍ͷ༷ͳίʔυͰϒϥϯν໊Λऔಘͯ͠ը໘ʹදࣔ (C) fromkk. 2016 11

Slide 12

Slide 12 text

खॱ struct Branch { private enum Constants { static let defaultBranch: String = "master" static let plistFileName: String = "Branch" static let branchNameKey: String = "branch" } static var current: String { guard let path: String = Bundle.main.path(forResource: Constants.plistFileName, ofType: "plist") else { return Constants.defaultBranch } guard let plist: [String: String] = NSDictionary(contentsOfFile: path) as? [String: String] else { return Constants.defaultBranch } return plist[Constants.branchNameKey] ?? Constants.defaultBranch } } let branch: String = Branch.current (C) fromkk. 2016 12

Slide 13

Slide 13 text

Demo (C) fromkk. 2016 13

Slide 14

Slide 14 text

·ͱΊ • ࢪࡦ͕ଟ͍ͱݪҼ͕ࢄΒ͹ΔͷͰࠞཚͷݩ • ݪҼΛ௥ٻͯ͠ରԠ͢Δҝʹ͸൜ਓ୳͕͠ඞཁͳࣄ΋͋Δ • ։ൃதͷෆ۩߹͸ϒϥϯν໊͕෼͔Δͱ৭ʑḿΔʂ • ෆໟͳݪҼ୳͠͸͜ΕͰΦαϥόʂ (C) fromkk. 2016 14

Slide 15

Slide 15 text

͍ͬͯ͏಺༰ͰiOS Advent Calendar 2016ʹهࣄΛॻ͘ͷͰ ετοΫ ͍͍Ͷ Լ͍͞ʂ (C) fromkk. 2016 15

Slide 16

Slide 16 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ (C) fromkk. 2016 16