Slide 1

Slide 1 text

'JSFCBTF"QQ%JTUSJCVUJPOXJUI#JUSJTF !GSPNLL5JNFST*OD

Slide 2

Slide 2 text

1SPpMF struct Profile { let name = "Kazuya Ueoka" let twitter = "@fromkk" let github = "fromkk" let qiita = "fromkk" let company = "Timers Inc." } •

Slide 3

Slide 3 text

ࡶཱྀߦه 4QBJO w εϖΠϯϚυϦʔυʹग़ൃࡶཱྀߦ هpSFCBTFTVNNJU w εϖΠϯೋ೔໨ࡶཱྀߦه w εϖΠϯ೔໨ࡶཱྀߦه w 'JSFCBTF4VNNJUʹࢀՃ͖ͯ͠·ͨ͠ 'JSFCBTF4VNNJU#FUUFS5PHFUIFSࡶཱྀߦه w εϖΠϯ೔໨ τϨυಆڇ ࡶཱྀߦه w ஄ؙόϧηϩφ೔ؼΓཱྀߦࡶཱྀߦه

Slide 4

Slide 4 text

εϖΠϯ w ே൩ྋ͘͠னؒ͸ॵ͔ͬͨ Χϥοͱ͍ͯͯ͠ա͝͠΍͍͢ w αϚʔλΠϜͰே͸໌Δ͘ͳΔͷ͕஗͘ɺ༦ํ͸஗͘·Ͱ໌Δ͍ w ৯ࣄ͸ඒຯ͍͠ w ΄ͱΜͲͷ৔߹ӳޠͰͳΜͱ͔ͳΔ w كʹεϖΠϯޠͰԡ͠੾ΒΕΔࣄ΋ w ӳ୯ޠ͕௨͡ͳ͍͜ͱ΋ w ৽ͨʹ֮͑ͨ୯ޠ4BMJEBT w ೔ຊͱͷڞ௨఺ ৴߸Թ౓දه 4

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

IUUQTZPVUVCFD+-@&1L*"

Slide 7

Slide 7 text

ൃද͞Εͨ৽ػೳ w 'JSFCBTF"QQ%JTUSJCVUJPO J04"OESPJE w 8FC4VQQPSU w (PPHMF"OBMZUJDT$MPVE.FTTBHJOH3FNPUF$POpH w *EFOUJUZ"DDFTT.BOBHFNFOU w 'JSFCBTF&YUFOTJPOT 7

Slide 8

Slide 8 text

ൃද͞Εͨ৽ػೳ w 'JSFCBTF"QQ%JTUSJCVUJPO J04"OESPJE w 8FC4VQQPSU w (PPHMF"OBMZUJDT$MPVE.FTTBHJOH3FNPUF$POpH w *EFOUJUZ"DDFTT.BOBHFNFOU w 'JSFCBTF&YUFOTJPOT 8

Slide 9

Slide 9 text

4FTTJPOT IUUQTXXXZPVUVCFDPNXBUDI W(;0*&)9* 4IJQBQQTXJUIFBTF IUUQTXXXZPVUVCFDPNXBUDI WX01OWZFP 0QFOJOH,FZOPUF

Slide 10

Slide 10 text

'JSFCBTF"QQ%JTUSJCVUJPOͱ͸ w 'JSFCBTFܦ༝Ͱࣾ಺֎ͷਓʹΞϓϦέʔγϣϯΛ഑෍ग़དྷΔ࢓ ૊Έ ݱࡏύϒϦοΫϕʔλ w J04"OESPJEରԠ w 8FCը໘$-*͔ΒͷΞοϓϩʔυʹରԠ w ഑෍͢Δਓ΍άϧʔϓΛࢦఆՄೳ 10

Slide 11

Slide 11 text

ςελʔͱάϧʔϓ w ςετΞϓϦΛ഑৴͢ΔਓΛొ࿥͠άϧʔϐϯά͕Մೳ w ΞϓϦͷϑΣʔζʹΑͬͯάϧʔϓΛग़͠Θ͚Λͨ͠Γɺಛ ఆͷόʔδϣϯ͚ͩಛఆͷਓʹૹΔͳͲ w $47ʹΑΔΠϯϙʔτ΍ΤΫεϙʔτ΋Մೳ 11

Slide 12

Slide 12 text

ট଴ϦϯΫ w ϦϯΫΛ࡞੒͢ΔࣄͰΞϓϦΛΠϯετʔϧ͍ͨ͠ਓ Λট଴ͯ͠ςελʔ΍άϧʔϓʹ௥Ճ͢Δࣄ͕ग़དྷΔ w ొ࿥͢ΔάϧʔϓΛࢦఆ ೚ҙ w ϝʔϧΞυϨεͷυϝΠϯΛࢦఆ͢ΔࣄͰࣾ಺ͷਓʹ ੍ݶ͢Δ͜ͱ΋Մೳ ೚ҙ w ଞࣾͷਓ΋ಉ༷ w J04ͷ৔߹ɺඇ&OUFSQSJTFͰ͸%FWFMPQFS1PSUBMʹ୺ ຤*%Λొ࿥ͯ͠1SPWJTJPOJOH'JMFΛੜ੒ͯ͠9DPEFͰ ࢦఆ͓ͯ͘͠ඞཁ͸͋Δ 12

Slide 13

Slide 13 text

ରԠ͍ͯ͠Δ$-*πʔϧ

Slide 14

Slide 14 text

Ұ൪γϯϓϧͳσϞ ಈը

Slide 15

Slide 15 text

%&.0 IUUQTZPVUVCF7C,J*+V(ZHH

Slide 16

Slide 16 text

σόΠεະొ࿥ͷ৔߹

Slide 17

Slide 17 text

ิ଍ w ෳ਺ΞΧ΢ϯτΛར༻͍ͯ͠Δ৔߹͸ΞΠί ϯΛΫϦοΫ͢Ε͹੾Γସ͑Մೳ 17

Slide 18

Slide 18 text

$-*ͰͷΞοϓϩʔυ

Slide 19

Slide 19 text

ࣄલ४උ ΞϓϦ*%ΛϝϞ

Slide 20

Slide 20 text

ࣄલ४උ pSFCBTFUPPMTͷΠϯετʔϧ npm i -g firebase-tools ˞ະΠϯετʔϧͷ৔߹΍ݹ͍όʔδϣϯͷ$-*πʔϧΛར༻͍ͯ͠Δ৔߹

Slide 21

Slide 21 text

'JSFCBTF5PPMTΛར༻͢Δ৔߹ firebase login ϩάΠϯΛ͓ͯ͘͠ firebase appdistribution:distribute /path/to/Type/Type.ipa --app 1:22hoobarhoobarcd2 --release-notes "ςετ഑৴" --groups "։ൃऀ" i getting app details... i uploading distribution... ✔ uploaded distribution successfully i adding release notes... ✔ added release notes successfully i adding testers/groups... ✔ added testers/groups successfully ΞϓϦΛ഑෍͢Δ

Slide 22

Slide 22 text

υΩϡϝϯτ firebase appdistribution:distribute --help Usage: appdistribution:distribute [options] upload a distribution Options: --app the app id of your Firebase app --release-notes release notes to include with this distribution --release-notes-file path to file with release notes to include with this distribution --testers a comma separated list of tester emails to distribute to --testers-file path to file with a comma separated list of tester emails to distribute to --groups a comma separated list of group aliases to distribute to --groups-file path to file with a comma separated list of group aliases to distribute to -h, --help output usage information

Slide 23

Slide 23 text

GBTUMBOFΛར༻͢Δ৔߹

Slide 24

Slide 24 text

BQQ@EJTUSJCVUJPOϓϥάΠϯͷΠϯετʔϧ fastlane add_plugin firebase_app_distribution ˞࣌఺Ͱ$BUBMJOBʹΠϯετʔϧग़དྷͳ͍ෆ۩߹Λ؍ଌ IUUQTHJUIVCDPNGBTUMBOFGBTUMBOFJTTVFT IUUQTHJUIVCDPNGBTUMBOFGBTUMBOFQVMM

Slide 25

Slide 25 text

'BTUpMFʹ௥ه lane :deploy do |options| commit_message = `git log --format=%B -n 1 HEAD`.strip ipa_path = options[:ipa_path] app_id = options[:app_id] || “1:228 ~ϝϞͨ͠ΞϓϦID~ cd2" groups = options[:groups] || "։ൃऀ" firebase_cli_path = options[:firebase_cli_path] || "/usr/ local/lib/node_modules/firebase-tools/lib/bin/firebase.js" firebase_app_distribution( app: app_id, groups: groups, release_notes: commit_message, ipa_path: ipa_path, firebase_cli_path: firebase_cli_path ) end IUUQTpSFCBTFHPPHMFDPNEPDTBQQEJTUSJCVUJPOJPTEJTUSJCVUFGBTUMBOF

Slide 26

Slide 26 text

GBTUMBOF %FNP

Slide 27

Slide 27 text

#JUSJTF͔ΒΞοϓϩʔυ

Slide 28

Slide 28 text

ࣄલ४උ '*3"4&@50,&/ 'JSFCBTFʹϩάΠϯ '*3"4&@50,&/ΛϝϞ firebase login:ci 4FDSFUTʹ'*3"4&@50,&/ɺ'*3"4&@"11@*%Λ௥Ճ

Slide 29

Slide 29 text

<#&5">'JSFCBTF"QQ%JTUSJCVUJPOεςοϓͷ௥Ճ

Slide 30

Slide 30 text

εςοϓͷઃఆ w 'JSFCBTF5PLFOɺ"QQ1BUIɺ 'JSFCBTF"QQ*%͕ඞਢ߲໨ w 3FMFBTF/PUFTɺςελʔɺάϧʔ ϓ͸೚ҙ߲໨ w ίϚϯυΦϓγϣϯͷઃఆ΋Մೳ

Slide 31

Slide 31 text

#JUSJTFͰͷ࣮ߦϩά

Slide 32

Slide 32 text

·ͱΊ w εϖΠϯຊ౰ʹྑ͔ͬͨʢ࠷ۙΧλϧʔχϟ஍ํͰσϞ͕ى͖͍ͯ ΔͷͰߦ͘ͳΒฏ࿨ͳ࣌ظʹʣ w ൟ՚֗ʹ͸࠮ٗάϧʔϓ͕͍ΔͷͰؾΛ͚ͭ·͠ΐ͏ w "QQ%JTUSJCVUJPO͸طʹ'JSFCBTFΛར༻͍ͯ͠ΔͳΒखܰʹར༻Ͱ͖Δ w $-*ͷૢ࡞΍$*͔Βͷ࣮ߦ΋؆୯ w ·ͩύϒϦοΫϕʔλͳͷͰࠓޙ΋มߋͳͲ͋Γͦ͏ 32

Slide 33

Slide 33 text

13

Slide 34

Slide 34 text

• αʔόʔαΠυΤϯδχΞ (PHP, Golang, AWS) • AndroidΤϯδχΞ (Kotlin) • iOSΤϯδχΞ (Swift) TimersͰ͸ݱࡏΤϯδχΞશ৬छ࠾༻தʂ ৄ͘͠͸”Timers”Ͱݕࡧ

Slide 35

Slide 35 text

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