iOS Auto Provisionで
証明書更新の苦悩からの解放 #cloudmobiletest/ios_auto_provision_bitrise

249b3122eee454c0a818bfe7851418e4?s=47 fromkk
February 07, 2020

iOS Auto Provisionで
証明書更新の苦悩からの解放 #cloudmobiletest/ios_auto_provision_bitrise

iOSアプリにおける証明書の管理に関する問題がいくつかあります。
• 基本的には開発用、リリース用など複数の証明書が必要
• 更に、アプリにExtension(拡張機能)毎にも証明書が必要
ということで必要な証明書の数は、アプリ本体に加えて、Extensionの数を環境の種類の数でかけたものになります。
登録端末を増やすなどして変更する度にDevelopmentやAd-hocの証明書を更新する必要があるということです。

これってとても大変では?😵

この大変さを解決するための案としてパッと思いつくのは2あります。

• fastlane match
• Bitrise iOS Auto Provision Step
ですね。ただ、fastlane matchは証明書の管理を解決してくれる優れた機能ではありますが、証明書をアップロードするために新たにGitHubにリポジトリを作成する必要があります。
これは作業者の権限によっては難しい場合もあるので多少面倒かもしれないです。 Bitrise iOS Auto Provision StepはBitrise上でApple Developer Accountにログインしておけば利用できるので個人的にはこちらの方が手軽に利用できるなと感じたのでこちらを利用しています。

ここではiOS Auto Provisionのセットアップの方法を紹介しています。

249b3122eee454c0a818bfe7851418e4?s=128

fromkk

February 07, 2020
Tweet

Transcript

  1. J04"VUP1SPWJTJPOͰ ূ໌ॻߋ৽ͷۤ೰͔Βͷղ์ Ϋϥ΢υϞόΠϧϏϧυςετ.FFUVQ 1

  2. 1SPpMF struct Profile { let name = "Kazuya Ueoka" let

    twitter = "@fromkk" let github = "fromkk" let qiita = "fromkk" let company = "Timers Inc." } • 2
  3. 3

  4. 4

  5. w (6*Ͱϙνϙν͢Δ͚ͩͰ؆୯ʹ$*؀ڥ͕ߏஙՄೳ w ෳ਺ͷ8PSLqPXΛͦͷ࣌ʑʹ࢖͍෼͚Δ͜ͱ͕Ͱ͖Δ w 4UFQʢެࣜ΍ඇެࣜʣ͕๛෋ʹ͋Γࣗ༝ʹྲྀΕΛΧελϚΠ ζͰ͖Δ w 9DPEF4UBDLͷΞοϓσʔτ͕ૣ͍ ϦϦʔε͞Εͯʙ೔Ҏ

    ಺ʹར༻Մೳ 5
  6. 8PSLqPX w ෳ਺ͷ4UFQΛ૊Έ߹Θͤͯ࡞ΔॲཧͷྲྀΕ w ͲͷτϦΨʔͰ࣮ߦ͞ΕΔ࣌ʹͲͷ8PSLqPXΛ࣮ߦ͢Δͷ͔બ୒Ͱ͖Δ w (JU)VCʹ1VTI͞Εͨ࣌ w 1VMM3FRVFTUΛ࡞ͬͨ࣌ w

    UBH͕࡞ΒΕͨ࣌ w ఆظతʹ࣮ߦ w 8FCIPPL΍"1*͔ΒىಈͳͲ 6
  7. 4UFQ w ػೳ୯Ґͷࡉ͔͍ίϯϙʔωϯτ w ެ͕ࣜग़͍ͯ͠Δ΋ͷ΍༗ࢤʹΑͬͯ࡞ΒΕ͍ͯΔඇެࣜͷ΋ ͷ͕͋Δ w ࣗ࡞΋Մೳͩ͠؆୯ͳ΋ͷͳΒ4DSJQU4UFQͰTIFMMTDSJQU 7

  8. 4UBDL 8 w #JUSJTF͕༻ҙͯ͘͠Ε͍ͯΔ؀ڥͷςϯϓ ϨʔτͷΑ͏ͳ΋ͷ w ˣͷΑ͏ʹࣗ෼Ͱ؀ڥΛࢦఆ͢Δ͜ͱ΋Մೳ

  9. <13>"OESPJE%PDLFS4UBDLΛར༻ͨ͠ྫ 9

  10. <13>ʲిࢠॻ੶ʳNBD04$BUBMZTU%FFQ%JWF 10 IUUQTGSPNLLCPPUIQNJUFNT

  11. 'BNNʹ͓͚Δ#JUSJTFͷར༻ঢ়گ 11

  12. 'BNNͷར༻มભ w ʙ1SP .POUIMZ  w ʙ&MJUF .POUIMZ  w

    ʙ&MJUF .POUIMZ  12
  13. 'BNNʹ͓͚Δ#JUSJTFͷར༻ঢ়گ w 1VTIτϦΨʔ w ϥΠϒϥϦ४උ $BSUIBHF$PDPB1PETͷΠϯετʔϧ  w ΞϓϦόʔδϣϯͷߋ৽ w

    ϏϧυΞʔΧΠϒ w όΠφϦʔͷΞοϓϩʔυ #JUSJTF %FQMPZ(BUF 'JSFCBTF "QQ%JTUSJCVUJPO  w 4MBDL௨஌ 13
  14. 'BNNʹ͓͚Δ#JUSJTFͷར༻ঢ়گ w 1VMM3FRVFTUτϦΨʔ w ϥΠϒϥϦ४උ $BSUIBHF$PDPB1PET  w Ϣχοτςετͷ࣮ߦ w

    %BOHFSͷ࣮ߦ 14
  15. 15 w $*্Ͱ1VMM3FRVFTUͷ಺༰΍ίʔυʹରͯ͠νΣοΫΛ࣮ߦͯ͠(JU)VCͷ ίϝϯτͳͲʹ௨஌ͯ͘͠ΕΔπʔϧ w ฐࣾͰ͸ w ίʔυྔνΣοΫ w λΠϙνΣοΫ

    w 9DPEF4VNNBSZ΍4XJGU-JOUͷ݁Ռ w ͳͲ IUUQTHJTUHJUIVCDPNUJNFSTJPTFDFBEC
  16. 16 # λΠϙνΣοΫ # cspell # npm install -g cspell

    added_and_modified_files = git.added_files + git.modified_files added_and_modified_files.each do |file_path| next unless file_path =~ /.swift$/ stdout, status = Open3.capture2("npx", "cspell", file_path, "-c", "cspell.json") next if status.success? stdout.split("\n").each do |line| next unless matches = /\w.swift:(\d+).*-\sUnknown\sword\s\((\w+)\)/.match(line) line_number = matches[1].to_i word = matches[2] warning = "typo? #{word}" warn(warning, file: file_path, line: line_number) end end ࢀߟIUUQTTQFBLFSEFDLDPNZILBQMBOBVUPNBUFBMMUIFUIJOHT TMJEF
  17. 17

  18. 'BNNʹ͓͚Δ#JUSJTFͷར༻ঢ়گ w ߋʹৄ͍͠৘ใ͸ฐࣾϒϩάʹͯެ։த w 'BNNJ04ʹ͓͚Δ#JUSJTFͷϫʔΫϑϩʔΛେެ։CJUSJTF IUUQTUFDICMPHUJNFSTJODDPNFOUSZGBNN@MPWFT@CJUSJTF 18

  19. J04ΞϓϦͷূ໌ॻ؅ཧͰ ർฐͯ͠Δਓʁ 19

  20. J04ΞϓϦͷূ໌ॻͷ؅ཧ໰୊ w جຊతʹ։ൃ༻ɺϦϦʔε༻ͳͲෳ਺ͷূ໌ॻ͕ඞཁ w ߋʹ&YUFOTJPO ֦ுػೳ ຖʹ΋ূ໌ॻ͕ඞཁ w ඞཁͳূ໌ॻͷ਺ ΞϓϦຊମ

    &YUFOTJPOͷ਺ º؀ڥͷछྨͷ਺ w ొ࿥୺຤Λมߋ͢Δ౓ʹ%FWFMPQNFOU"EIPDͷূ໌ॻΛߋ৽ ͢Δඞཁ͕͋Δ 20
  21. େมա͗Ͱ͸ʁ 21

  22. ରԠҊ w GBTUMBOFNBUDIͷར༻ w ৽ͨʹϦϙδτϦΛ࡞੒͢Δඞཁ͕͋Δ w ࡞ۀऀͷݖݶʹΑͬͯ͸೉͍͠΋৔߹΋͋ΔͷͰଟগ໘౗͔΋ 22

  23. ରԠҊ w GBTUMBOFNBUDIͷར༻ w ৽ͨʹϦϙδτϦΛ࡞੒͢Δඞཁ͕͋Δ w ࡞ۀऀͷݖݶʹΑͬͯ͸೉͍͠΋৔߹΋͋ΔͷͰଟগ໘౗͔΋ 23 w #JUSJTFJ04"VUP1SPWJTJPO4UFQ

    w #JUSJTF্Ͱ"QQMF%FWFMPQFS"DDPVOUʹϩάΠϯ͓͚ͯ͠͹Α͍
  24. ରԠҊ w GBTUMBOFNBUDIͷར༻ w ৽ͨʹϦϙδτϦΛ࡞੒͢Δඞཁ͕͋Δ w ࡞ۀऀͷݖݶʹΑͬͯ͸೉͍͠΋৔߹΋͋ΔͷͰଟগ໘౗͔΋ 24 w #JUSJTFJ04"VUP1SPWJTJPO4UFQ

    w #JUSJTF্Ͱ"QQMF%FWFMPQFS"DDPVOUʹϩάΠϯ͓͚ͯ͠͹Α͍
  25. લఏ४උ "DDPVOUTFUUJOHT͔Β"QQMF%FWFMPQFS"DDPVUʹϩάΠϯ 25

  26. લఏ४උ "DDPVOUTFUUJOHT͔Β"QQMF%FWFMPQFS"DDPVUʹϩάΠϯ 26

  27. લఏ४උ "DDPVOUTFUUJOHT͔Β"QQMF%FWFMPQFS"DDPVUʹϩάΠϯ 27

  28. લఏ४උ $POOFDUFE"QQMF%FWFMPQFS 1PSUBM"DDPVOUͰઌ΄Ͳ ϩάΠϯͨ͠ΞΧ΢ϯτΛબ୒ 28

  29. લఏ४උ 1SPWJTJPOJOH1SPpMF͸શͯ࡟আ 29

  30. 4UFQͷ௥Ճ 30

  31. 4UFQͷฤू w %JTUSJCVUJPOUZQFEFWFMPQNFOU BQQTUPSFBEIPDFOUFSQSJDF w 5IF%FWFMPQFS1PSUBMUFBN*% w 9DPEF1SPKFDU PS8PSLTQBDF 

    QBUI w 4DIFNFOBNF w $POpHVSBUJPOOBNF 31
  32. ࣮ߦͯ͠ΈΔ 32

  33. 33

  34. ࢓૊Έ w "QQMF%FWFMPQFS"DDPVUʹ#JUSJTF͕ϓϩϏδϣχϯάϑΝΠ ϧΛੜ੒ w #JUSJTF͸໊લ͕Ұகͨ͠ূ໌ॻ͕͋Ε͹μ΢ϯϩʔυͯ͠ར༻ ͢Δ 34

  35. ஫ҙ఺ w YDPEFCVJMEίϚϯυͰ&YQPSU0QUJPOTQMJTUΛखಈͰઃఆͯ͠ ͍Δͱ1SPWJTJPOJOH'JMF͕Ϛονࣦͤͣഊ͢ΔՄೳੑ͕ߴ͍ͷ Ͱ஫ҙ⚠ 35

  36. ·ͱΊ w $*্ͷূ໌ॻͷ؅ཧ͔Βղ์͞Εɺ༨ͬͨ࣌ؒΛΞϓϦͷվળ ʹׂ͕͚࣌ؒΔ w ଐਓੑ΋ഉআͰ͖ΔͷͰਓ͕ೖΕସΘͬͯ΋ࠞཚগͳ͍ w Մೳͳॴ͸ͳΔ΂ࣗ͘ಈԽͯ͠ຊ౰ʹඞཁͳ։ൃ࡞ۀʹ஫ྗ 36

  37. :PV5VCF https://youtu.be/yXmetYXSmTI 37

  38. 13 38

  39. • αʔόʔαΠυΤϯδχΞ (PHP, Golang, AWS) • AndroidΤϯδχΞ (Kotlin) • iOSΤϯδχΞ

    (Swift) TimersͰ͸ݱࡏΤϯδχΞશ৬छ࠾༻தʂ ৄ͘͠͸”Timers”Ͱݕࡧ 39
  40. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 40