Slide 1

Slide 1 text

ϚΠΫϩνʔϜͰͷ ߴ଎ͳ৽ن։ൃΛࢧ͑Δ ։ൃɾ෼ੳج൫ @__timakin__ builderscon 2017

Slide 2

Slide 2 text

ࣗݾ঺հ • timakinʢಡΈ: ͪ·͖Μʣ • https://github.com/timakin • https://twitter.com/__timakin__ • Gunosy৽نࣄۀ։ൃࣨ • Contributor of Golang <- New! • Go/SwiftΛϝΠϯʹॻ͍͍ͯ·͢ɻ

Slide 3

Slide 3 text

Copyright© Gunosy Inc. All Rights Reserved 3 Go / Python ΤϯδχΞืूத ▶https://gunosy.co.jp/recruit/ Gunosy͸ɺ౦ژେֶʹ௨͏3ਓͷֶੜͷ
 ʮ৘ใΛੈքதͷਓʹ࠷దʹಧ͚͍ͨʯͱ͍͏૝͍͔Β࢝·Γ·ͨ͠ɻ ౦ূϚβʔζ্৔ɺ࿡ຊ໦ώϧζ΁ͷΦϑΟεҠసΛܦͯɺ
 େ͖͘੒௕͍ͯ͠ΔձࣾͰ׆༂͍ͨ͠ϝϯόʔΛืू͍ͯ͠·͢ɻ

Slide 4

Slide 4 text

ࠓ೔࿩͢͜ͱ • ʮLUCRAʯॳظϦϦʔε·ͰͷಓͷΓͱ੍໿৚݅ • ୹͍։ൃظؒͰ΍ͬͨ͜ͱɺ΍Βͳ͔ͬͨ͜ͱ • ։ൃج൫ͷ঺հ • ॊೈͳԾઆݕূ͕Մೳͳ؀ڥͮ͘Γ

Slide 5

Slide 5 text

ݶΒΕͨϦιʔεԼͰͷ
 ߴ଎ͳ։ൃख๏ খ͍͞νʔϜͰ΋PDCAΛ
 ճͤΔ෼ੳج൫

Slide 6

Slide 6 text

ݶΒΕͨϦιʔεԼͰͷ
 ߴ଎ͳ։ൃख๏

Slide 7

Slide 7 text

࣮ྫɿʮLUCRAʯ

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

ʮLUCRAʯॳظϦϦʔε·Ͱͷ ಓͷΓͱ੍໿৚݅

Slide 10

Slide 10 text

εέδϡʔϧͱ੍໿৚݅ • εέδϡʔϧ • ໿3ϲ݄ؒ (3݄~5݄຤) • ։ൃνʔϜͷن໛ • ৽نϓϩδΣΫτ͸ۃྗগ਺Ͱʂ • ࢓ࣄͰGoͷAPIɺSwiftͰͷiOSΞϓϦ։ൃܦݧͳ͠

Slide 11

Slide 11 text

εέδϡʔϧͱ੍໿৚݅ • ։ൃཁ݅ • iOSΫϥΠΞϯτ

Slide 12

Slide 12 text

εέδϡʔϧͱ੍໿৚݅ • ։ൃཁ݅ • iOSΫϥΠΞϯτ • هࣄɺάϧʔϐϯά৘ใɺϢʔβʔೝূଞϦιʔεશମʹؔΘ ΔAPI

Slide 13

Slide 13 text

εέδϡʔϧͱ੍໿৚݅ • ։ൃཁ݅ • iOSΫϥΠΞϯτ • هࣄɺάϧʔϐϯά৘ใɺϢʔβʔೝূଞϦιʔεશମʹؔΘ ΔAPI • هࣄੜ੒ɺػցֶशج൫ • Ϋϩʔϥʔ / ίϯςϯπ෼ྨ / هࣄςϯϓϨੜ੒API

Slide 14

Slide 14 text

εέδϡʔϧͱ੍໿৚݅ • ։ൃཁ݅ • iOSΫϥΠΞϯτ • هࣄɺάϧʔϐϯά৘ใɺϢʔβʔೝূଞϦιʔεશମʹؔΘ ΔAPI • هࣄੜ੒ɺػցֶशج൫ • Ϋϩʔϥʔ / ίϯςϯπ෼ྨ / هࣄςϯϓϨੜ੒API • पล؀ڥ • Ωϟογϡػߏ / Τϥʔ, syslog؂ࢹ / ؅ཧπʔϧ • Pushج൫ / ϩά෼ੳج൫ / ABςετج൫

Slide 15

Slide 15 text

εέδϡʔϧͱ੍໿৚݅ • ϙΠϯτ 1. νʔϜͷਓ਺͸ۃྗ཈͑Δɻ 2. ߏங͢Δج൫ʹରͯ͠։ൃظ͕ؒ୹͍ɻ 3. ෼ੳ͕Ͱ͖Δ؀ڥΛ࠷ॳ͔Βߏங͢Δɻ

Slide 16

Slide 16 text

࣮ࡍʹԿΛ΍͔ͬͨʁ

Slide 17

Slide 17 text

࣮ࡍͷεέδϡʔϧ ݄ • API • ϞοΫ੔උʢεϐʔυײʹ߹Θͣ1೔͘Β͍͔͠໾ʹཱͨ ͣʣ • هࣄɺάϧʔϐϯά৘ใAPIͷ࡞੒ + stg؀ڥߏங • ΫϥΠΞϯτ • UtilɺAPIClientɺLoggingɺϧʔςΟϯάपΓͷ੔උ • ػցֶशɺهࣄੜ੒ج൫ • Ϋϩʔϥʔ࡞੒ + stgʹॾʑͷΠϯϑϥߏங ԼճΓͷ੔උͱϓϩτλΠϓ࡞੒

Slide 18

Slide 18 text

࣮ࡍͷεέδϡʔϧ ݄ • API • ϢʔβʔೝূAPIͷ࡞੒ • ΫϥΠΞϯτͭͳ͗͜Έ • push, ABج൫, Ωϟογϡؔ࿈ͷௐ੔, ϩάج൫ͷ࡞੒ • ΫϥΠΞϯτ • هࣄҰཡɺৄࡉը໘σβΠϯ౰ͯࠐΈ • ೝূɺpushɺར༻ن໿ɾFAQ౳֤छઃఆɺڧ੍Ξοϓσʔτ౳ • ػցֶशɺهࣄੜ੒ج൫ • هࣄ෼ྨɺΫϩʔϥʔɺؔ࿈هࣄੜ੒౳ͷ࡞੒ɺstg؀ڥߏங ࣮૷٧Ί + σβΠϯ౰ͯࠐΈ

Slide 19

Slide 19 text

࣮ࡍͷεέδϡʔϧ ݄ • API • ϩάج൫ɺϛυϧ΢ΣΞ(Τϥʔ, syslog؂ࢹɺmemd౳)ͷ setup • ֤छهࣄࣗಈੜ੒ج൫ɺϩάج൫ͱͷͭͳ͗͜Έ • ຊ൪؀ڥߏங • ΫϥΠΞϯτ • σβΠϯϒϥογϡΞοϓɺจݴɾಈ࡞मਖ਼ɺਃ੥࡞ۀ • ػցֶशɺهࣄੜ੒ج൫ • ෼ྨɺείΞ෇͚ϩδοΫͷमਖ਼ɺଞAPIͷमਖ਼ɺ֤छຊ൪؀ ڥߏங ϛυϧ΢ΣΞ௥Ճɺ֤APIͭͳ͗͜Έɺຊ൪؀ڥߏங

Slide 20

Slide 20 text

ॕʂϦϦʔεʂ

Slide 21

Slide 21 text

͜ͷظؒͷ։ൃνʔϜͷঢ়گ

Slide 22

Slide 22 text

աࠅͳεέδϡʔϧ

Slide 23

Slide 23 text

աࠅͳεέδϡʔϧ ࢒ۀଓ͖ͷ೔ʑ

Slide 24

Slide 24 text

աࠅͳεέδϡʔϧ ࢒ۀଓ͖ͷ೔ʑ ߥΕΔਓؒؔ܎

Slide 25

Slide 25 text

ʁ

Slide 26

Slide 26 text

աࠅͳεέδϡʔϧ ࢒ۀଓ͖ͷ೔ʑ ߥΕΔਓؒؔ܎

Slide 27

Slide 27 text

ΪϦΪϦ ͚ͩͲ Φϯεέ

Slide 28

Slide 28 text

ΪϦΪϦ ͚ͩͲ Φϯεέ ఆ࣌Ͱࣦྱ

Slide 29

Slide 29 text

ΪϦΪϦ ͚ͩͲ Φϯεέ ఆ࣌Ͱࣦྱ ࿕Β͔ͳ
 ৬৔

Slide 30

Slide 30 text

ʁ

Slide 31

Slide 31 text

• ΍Δ / ΍Βͳ͍ͷ੾Γ෼͚ • ج൫෦෼ͷ๛෋ͳϊ΢ϋ΢

Slide 32

Slide 32 text

୹͍։ൃظؒͰ ΍ͬͨ͜ͱɺ΍Βͳ͔ͬͨ͜ͱ

Slide 33

Slide 33 text

΍Δ/΍Βͳ͍ͷج४ • ΞϓϦͷίϯηϓτΛ࠷খݶͷൣғͰ
 ݕূ͢Δͷʹඞཁ͔

Slide 34

Slide 34 text

΍Δ/΍Βͳ͍ͷج४ • ΞϓϦͷίϯηϓτΛ࠷খݶͷൣғͰ
 ݕূ͢Δͷʹඞཁ͔ • ਺ඦສDAUʹεέʔϧ͢Δମ੍͕੔͏͔

Slide 35

Slide 35 text

΍Δ/΍Βͳ͍ͷج४ • ΞϓϦͷίϯηϓτΛ࠷খݶͷൣғͰ
 ݕূ͢Δͷʹඞཁ͔ • ਺ඦສDAUʹεέʔϧ͢Δମ੍͕੔͏͔ • ෼ੳɾӡ༻ɾվળͷϑϩʔΛ଺Γͳ͘౿ΉͨΊͷ
 ػೳ͕ἧ͍ͬͯΔ͔

Slide 36

Slide 36 text

• هࣄ෼ྨɾੜ੒ج൫ • ෼ੳج൫ • ೝূɺ
 هࣄͷҰཡɺӾཡɺ
 γΣΞ౳ • ※৹ࠪʹ൐͍+α ΍Δ ΍Βͳ͍ • Android • ݫີͳϦϑΝΫλ • “ߴ଎Ͱແବͷͳ͍”ج൫ • ݕࡧ • ϑΥϩʔɾ͓ؾʹೖΓ • Ӿཡཤྺػೳ

Slide 37

Slide 37 text

ඞཁͳͷ͸هࣄ͕ݟΒΕͯɺ
 ݕূɺӡ༻Մೳͳج൫Λ࡞Δ͜ͱ

Slide 38

Slide 38 text

طଘϓϩμΫτ͔Β
 Ԡ༻Ͱ͖Δ෦෼Λ
 βΫβΫऔͬͯ͜Α͏

Slide 39

Slide 39 text

Πϯϑϥ

Slide 40

Slide 40 text

Πϯϑϥߏஙฤ • جຊతʹAWS OpsworksͰɺࣗࣾͷΧελϜChefϨγ ϐΛϕʔεʹ؀ڥߏங͢Δ • gunosy/gunosy_opsworks_cookbook

Slide 41

Slide 41 text

Πϯϑϥߏஙฤ

Slide 42

Slide 42 text

Πϯϑϥߏஙฤ • middleware • papertrail, td_agent, datadog, nginx, memcached • ଞɺmysql, jq, einhornʢGoͷAPIͷgraceful restart
 ༻్ʣͳͲΛΆͪΆͪೖΕΔ

Slide 43

Slide 43 text

Πϯϑϥߏஙฤ • codenize-tools • miamʢIAM؅ཧʣ • piculetʢSGʣ • roadworkerʢRoute53ʣ • radiosondeʢCloudWatch Logsʣ • monosasiʢCloudWatch Eventsʣ

Slide 44

Slide 44 text

git pushͨ͠ΒCircleCI্Ͱ֤ίϚϯυΛୟ͖ɺ Slackʹapply݁ՌͷJSONϖΠϩʔυΛ௨஌

Slide 45

Slide 45 text

API

Slide 46

Slide 46 text

ͱ͜ΖͰ

Slide 47

Slide 47 text

Gunosy͸Goͷར༻ྺ͕௕͍ʂ

Slide 48

Slide 48 text

ྺ࢙͕ੵΈॏͳΔͱ
 ੜ·ΕΔ΋ͷ

Slide 49

Slide 49 text

ศརͰ झ͕͋ΔUtility܈

Slide 50

Slide 50 text

gunosy/go

Slide 51

Slide 51 text

APIฤ • gunosy/go • mysql, redis, memd, fluent, airbrakeͳͲ
 ϛυϧ΢ΣΞΫϥΠΞϯτ܈͕ೖͬͯΔ • jwt authenticator, fluent-loggerͳͲɺ
 ֤APIͰඞཁʹͳΔutilΛ·ͱΊͯΔ • OpsWorks࠷దͳઃఆಡΈࠐΈ

Slide 52

Slide 52 text

APIฤ • gunosy/goͷϝϦοτ / σϝϦοτ • ϝϦοτ • OpsWorksͰ؀ڥߏஙͯ͠deploy͢Ε͹ɺ
 API͕͍͍͙ͩͨ͢ಈ͘Α͏ʹͳͬͯΔɻ • JWTೝূͳͲ͸΄΅࣮૷ʹࠩҟ͕ͳ͍ͷͰɺ
 ڞ௨ϥΠϒϥϦʹ͢ΔϝϦοτ͕େ͖͍ • ӡ༻ɺ؂ࢹपΓͷઃఆ͕OpsWorksͱͷ๊͖߹ΘͤͰ
 ͔ͳΓγϣʔτΧοτͰ͖Δ

Slide 53

Slide 53 text

APIฤ • gunosy/goͷϝϦοτ / σϝϦοτ • σϝϦοτ • ϛυϧ΢ΣΞ܈ɺͻ͍ͯ͸
 AWS΁ͷґଘ౓͕ߴ͍ʂ • loggerͷܗࣜมߋͳͲ͕ॊೈʹͰ͖ͳ͍

Slide 54

Slide 54 text

APIฤ • पลπʔϧ • SQLεΩʔϚ͸gooseʢGo੡migration toolʣ
 Ͱ؅ཧ • graceful restart༻ʹɺeinhornͰϓϩηε؅ཧ

Slide 55

Slide 55 text

APIฤ • ϑϨʔϜϫʔΫ • guregu/kami

Slide 56

Slide 56 text

APIฤ • guregu/kamiͷ໰୊఺ • ContextʢGoͷrequest-scopedͳ஋ΛೖΕΔശΈ ͍ͨͳ΍ͭʣΛ݁ߏཞ༻͍ͯ͠Δɻ • ΰουΦϒδΣΫτ • panicΛѲΓͭͿͯ͘͠ΕΔ

Slide 57

Slide 57 text

APIฤ • ύοέʔδ؅ཧ • ࠷ۙݫີʹͳΓ࢝Ίͨ • աڈ͸ؾ߹͍ Ͱ࠷৽ʹ௥͍͔͍ͭͤͯͨ

Slide 58

Slide 58 text

APIฤ • ֤໰୊఺ͷղফʹ޲͚ͯ • AWS OpsWorks΁ͷґଘ౓ͷߴ͞ • ϑϨʔϜϫʔΫΛguregu/kami -> net/httpʹҠߦ͠ ͯɺϛυϧ΢ΣΞ܈΍Ϟσϧ૚ͷґଘΛղফɻ • DIύλʔϯͰॻ͘͜ͱͰɺͳΜͰ΋globalʹ٧Ίͯ ͍ͨॻ͖ํ͔Β୤٫

Slide 59

Slide 59 text

APIฤ • ֤໰୊఺ͷղফʹ޲͚ͯ • όʔδϣϯ؅ཧ • ґଘύοέʔδ͸glideʹҠߦͯ͠ɺ
 ద੾ͳόʔδϣϯ؅ཧΛɻ

Slide 60

Slide 60 text

APIฤ • σϓϩΠϑϩʔ • git push • S3ʹGoͷόΠφϦ΍੩తϑΝΠϧΛ٧ΊͨtarΛ
 Ξοϓϩʔυ • OpsWorksͷAPIΛୟ͍ͯS3͔ΒtarΛ͖࣋ͬͯͯ
 ల։ɺrestart͢Δ

Slide 61

Slide 61 text

ref: https://speakerdeck.com/kyokomi/gunosy-apitimugokai-fa-huro

Slide 62

Slide 62 text

APIฤ • CI • ॳظ։ൃͰϏϧυʹ࣌ؒΛऔΒΕΔͷ͸ѹ౗తແବ • => CircleCI2.0ରԠʂ

Slide 63

Slide 63 text

APIฤ • ײಈͷཛྷ • goͷvendor, 
 npm install
 assets:precompileͳͲ
 Ωϟογϡ͢Ε͹
 ͍͍ͩͨ1~2minsͰऴΘΔ

Slide 64

Slide 64 text

APIฤ • Ϋϩʔϥʔɺ෼ྨ • GunosyͰഓͬͨػցֶशج൫ϊ΢ϋ΢Λϑϧ׆༻ • ϑϨʔϜϫʔΫ: Django • δϣϒεέδϡʔϥ: Celery • σʔλߏ଄: GunosyFeed Ver.2 • ref: https://www.slideshare.net/mosa_siru/ss-65205273

Slide 65

Slide 65 text

APIฤ • هࣄ෼ྨɺੜ੒ʹඞཁͳAPI܈ • Crawler • GunosyFeedʹଇͬͨAPIΛୟ͍ͯσʔλΛऔͬͯ͘Δ • HTMLαχλΠζɺϑΟʔϧυ৘ใͷύʔαʔػߏ • CategoryClassifier • هࣄͷΧςΰϦ෼ྨث • URL(υϝΠϯ)ʹΑΔϧʔϧϕʔεͷ෼ྨ + ػցֶशϞσϧʹΑΔ෼ྨ • NG൑ఆ • TabGenerator • ಛఆΧςΰϦ(λϒ)ͷهࣄҰཡΛੜ੒ • ElasticSearchʹ஝ੵͨ͠ӾཡɾΫϦοΫϩά͔ΒείΞϦϯάͯ͠อଘ • खಈϐοΫΞοϓ౳ͷӡ༻޲͚API

Slide 66

Slide 66 text

APIฤ • Ωϟογϡ • ϩʔΧϧͱϦϞʔτͷ̎ஈ֊ • memcached • هࣄɺݕࡧ݁ՌɺϚελʔσʔλ౳ͷΈΩϟογϡ

Slide 67

Slide 67 text

ref: https://www.slideshare.net/mosa_siru/go-memcached-microservices

Slide 68

Slide 68 text

APIฤ • Pushج൫ • mercari/gaurunΛfork(gunosy/gaurun) • gaurunͷόΠφϦΛS3ʹஔ͍ͱ͍ͯɺ
 OpsWorksͰ௚઀deploy • OpsWorksͷCustom JSONͷઃఆΛ
 gaurunͷઃఆϑΝΠϧʹஔ͖׵͑ΔϨγϐ

Slide 69

Slide 69 text

ʂʂ

Slide 70

Slide 70 text

"1/T ($1 '$. AdminͰPush༧໿ Push API Gaurun API Bulk Publish ௨஌ड৴ Ұ࿈ͷ௨஌ϑϩʔ

Slide 71

Slide 71 text

ΞʔΩςΫνϟ

Slide 72

Slide 72 text

ΞʔΩςΫνϟฤ • ϚΠΫϩαʔϏεʹ͗͢͠ͳ͍

Slide 73

Slide 73 text

ref: https://www.slideshare.net/mosa_siru/ss-64839846

Slide 74

Slide 74 text

ΞʔΩςΫνϟฤ • ͳͥϚΠΫϩαʔϏεʹ͠ͳ͍ʁ • APIؒͷΦʔόʔϔου

Slide 75

Slide 75 text

ΞʔΩςΫνϟฤ • ͳͥϚΠΫϩαʔϏεʹ͠ͳ͍ʁ • APIؒͷΦʔόʔϔου • SGઃఆͳͲͷ޻ఔʹΑΔ։ൃ଎౓ͷ௿Լ

Slide 76

Slide 76 text

ΞʔΩςΫνϟฤ • ͳͥϚΠΫϩαʔϏεʹ͠ͳ͍ʁ • APIؒͷΦʔόʔϔου • SGઃఆͳͲͷ޻ఔʹΑΔ։ൃ଎౓ͷ௿Լ • σϓϩΠ͕͠ΜͲ͍

Slide 77

Slide 77 text

ΞʔΩςΫνϟฤ • ͳͥϚΠΫϩαʔϏεʹ͠ͳ͍ʁ • APIؒͷΦʔόʔϔου • SGઃఆͳͲͷ޻ఔʹΑΔ։ൃ଎౓ͷ௿Լ • σϓϩΠ͕͠ΜͲ͍ • ؅ཧը໘ͷͨΊʹര஀͢ΔCRUD API܈

Slide 78

Slide 78 text

ΞʔΩςΫνϟฤ • LUCRAͰ͸ϚΠΫϩαʔϏεʹ͗͢͠ͳ͍ • هࣄऩूपΓ • ෼ྨɺΫϩʔϥʔɺهࣄੜ੒͸ݸผʹɻ • Client޲͚ͷAPI • هࣄɺάϧʔϐϯά৘ใɺϢʔβʔ৘ใ͸ϝΠϯAPI͕શ෦ฦ͢ • PushɺABςετ؅ཧAPI͚ͩ͸ݸผʹɻ

Slide 79

Slide 79 text

iOS

Slide 80

Slide 80 text

iOSΫϥΠΞϯτฤ • MVVM + Reactive • Extension, APIClient, LoggerपΓͷUtil͸࠶ར༻Մೳ

Slide 81

Slide 81 text

iOSΫϥΠΞϯτฤ • ϩάૹ৴पΓͷίʔυ͕ଟ͍ -> σόοάେม • LogDebugger͕͋ΔͷͰϩά͕ૹΒΕ͔ͨΛͦͷ৔ ͰσόοάͰ͖Δ • aikizoku/SKLogDebugger-iOS

Slide 82

Slide 82 text

No content

Slide 83

Slide 83 text

iOSΫϥΠΞϯτฤ • ίϯύΠϧ࣌ؒͷ࡟ݮ • Ϗϧυ଴ͪ͸ແҙࣝͷ͏ͪʹ૿͑΍͍͢ແବͳ࣌ؒ • -Xfrontend -debug-time-function-bodies
 ্هϑϥάͰɺϝιου୯ҐͷίϯύΠϧ࣌ؒΛܭଌ • giginet/xcprofilerͰίϯύΠϧ͕஗͍ॱʹ֬ೝ

Slide 84

Slide 84 text

ms୯ҐͰϝιου͝ͱͷίϯύΠϧ࣌ؒܦաͷ ্ҐΛදࣔͯ͘͠ΕΔɻ

Slide 85

Slide 85 text

iOSΫϥΠΞϯτฤ • ίϯύΠϧ࣌ؒͷ࡟ݮ • 50msҎ্ͷϝιου͕૿͑ͨΒվળ • giginet/danger-xcprofilerͰΞϥʔτ௨஌΋Մೳ

Slide 86

Slide 86 text

iOSΫϥΠΞϯτฤ • ىಈ࣌ؒͷ࡟ݮ • DYLD_PRINT_STATISTICSϑϥάͷઃఆ • ґଘϥΠϒϥϦͷ཈੍ • ܕਪ࿦ͷ࡟ݮ • SDKͷηοτΞοϓͷฒྻԽ

Slide 87

Slide 87 text

։ൃ؀ڥ·ͱΊ • Infrastructure as Code͸పఈ & apply݁ՌͷՄࢹԽ • एׯͷґଘɺటष͍࣮૷͸ڐ༰ͭͭ͠ɺ
 AWS࠷దͳ؀ڥʹ৐͔ͬΔ͜ͱͰ଎౓Λग़ͯ͠Δ • ࠷ॳ͔ΒΞʔΩςΫνϟΛϚΠΫϩʹ͗͢͠ͳ͍ • ίϯύΠϧɺCIͳͲͷ܁Γฦ͠࡞ۀ͸ແବͳ࣌ؒΛ
 ա͝͞ͳ͍Α͏ʹɺࣗಈԽ & ߴ଎Խ

Slide 88

Slide 88 text

খ͍͞νʔϜͰ΋PDCAΛ
 ճͤΔ෼ੳج൫

Slide 89

Slide 89 text

࣮ࡍͲΜͳϩάΛ
 ૹ͍ͬͯΔ͔ʁ

Slide 90

Slide 90 text

͜ͷը໘Ͱ͸ͲΜͳϩά͕
 ൃੜ͠͏Δ͔ʁ

Slide 91

Slide 91 text

• launchΠϕϯτϩά • fore/backgroundϩά • push heartbeatϩά • ೝূ, initAPI callϩά • ॳظදࣔ࣌هࣄimpϩά • ΧςΰϦεϫΠϓભҠϩά • ΧςΰϦΫϦοΫભҠϩά • εΫϩʔϧ࣌impϩά • هࣄΫϦοΫϩά • pull-refreshϩά • refresh࣌impϩά • push௨஌։෧ϩά

Slide 92

Slide 92 text

• launchΠϕϯτϩά • fore/backgroundϩά • push heartbeatϩά • ೝূ, initAPI callϩά • ॳظදࣔ࣌هࣄimpϩά • ΧςΰϦεϫΠϓભҠϩά • ΧςΰϦΫϦοΫભҠϩά • εΫϩʔϧ࣌impϩά • هࣄΫϦοΫϩά • pull-refreshϩά • refresh࣌impϩά • push௨஌։෧ϩά ͍ͬͺ͍

Slide 93

Slide 93 text

Ͳ͏͍͏ϑϩʔͰ
 ૹ͍ͬͯΔ͔ʁ

Slide 94

Slide 94 text

෼ੳσʔλϑϩʔ

Slide 95

Slide 95 text

෼ੳσʔλϑϩʔ ొ࿥ɾӾཡɾ
 ΫϦοΫϩάͷऩू

Slide 96

Slide 96 text

෼ੳσʔλϑϩʔ ొ࿥ɾӾཡɾ
 ΫϦοΫϩάͷऩू td_agentʹΑΔ
 ϩάͷू໿

Slide 97

Slide 97 text

෼ੳσʔλϑϩʔ ొ࿥ɾӾཡɾ
 ΫϦοΫϩάͷऩू td_agentʹΑΔ
 ϩάͷू໿ ϩάछผ͝ͱʹ
 όοΫΞοϓ & 
 ྲྀ͠ࠐΈ

Slide 98

Slide 98 text

෼ੳσʔλϑϩʔ ొ࿥ɾӾཡɾ
 ΫϦοΫϩάͷऩू td_agentʹΑΔ
 ϩάͷू໿ ϩάछผ͝ͱʹ
 όοΫΞοϓ & 
 ྲྀ͠ࠐΈ Redash্Ͱ෼ੳ

Slide 99

Slide 99 text

• ΫϥΠΞϯτ͔Βͷϩά͸cookpad/puree-ios
 Λ௨ͯ͡௚઀redshiftʹૹΔ • td_agent͕ೖͬͨlogू໿αʔόʔΛ஥հͯ͠ɺ
 Ճ޻ࡁΈσʔλΛRedashʹྲྀ͢ • όοΫΞοϓͷͨΊʹkinesisΛڬΉ ෼ੳσʔλϑϩʔ

Slide 100

Slide 100 text

࣮ࡍͷLogఆٛ (iOS)

Slide 101

Slide 101 text

࣮ࡍͷLogఆٛ (iOS)

Slide 102

Slide 102 text

Ͳ͏΍ͬͯσʔλΛݟΔ͔ʁ

Slide 103

Slide 103 text

෼ੳ؀ڥ • RedashΛར༻ • ओཁKPI͸ఆظతʹSlackʹ௨஌ • ӡ༻ɺ։ൃ໰ΘͣνʔϜશһ͕෼ੳ༻SQLΛॻ͘

Slide 104

Slide 104 text

ͲΜͳ਺஋Λ௥͍ͬͯΔ͔ʁ

Slide 105

Slide 105 text

ओཁKPI • DAU • 14೔ޙܧଓ཰ • 7೔ޙܧଓ཰ • 1೔ޙܧଓ཰ • ௚ۙ1࣌ؒهࣄCTR • ొ࿥ܦ࿏ผ֫ಘ਺ • هࣄΫϦοΫճ਺/DAU • εϫΠϓճ਺/DAU • ͓ؾʹೖΓొ࿥/DAU • શମ / ొ࿥ܦ࿏ผίϗʔτ • Pushڐ୚ঢ়گ • ΧςΰϦผهࣄӾཡ਺

Slide 106

Slide 106 text

෼ੳ݁Ռͷར༻ • ʮ͓͠ΌΕͳΞϓϦʯͷϒϥϯυΠϝʔδΛ௥ٻͨ͠ ͍͔Βͱ͍ͬͯɺ
 ࠜڌͳ͘ʮϑΝογϣϯʯ΍ʮίεϝʯΛਪ͢
 ͱ͍͏ҙࢥܾఆ͸ઈରʹ͠ͳ͍ɻ • ΧςΰϦผͷσʔλΛݟͯɺߴ͍CTR΍RR͕
 ༧૝͞ΕΔPush΍ػೳ௥Ճ͔͠ߦΘͳ͍ɻ

Slide 107

Slide 107 text

·ͱΊ • iOSΫϥΠΞϯτ͔Β੔ܗͭͭ͠௚઀ϩάΛૹ৴ • ը໘୯ҐɺΞΫγϣϯ୯ҐͰऔΕΔ͚ͩͷϩάΛऔΔ • ෼ੳπʔϧ͸RedashΛ༻͍͓ͯΓɺνʔϜશମͰ
 SQLͷϝϯςφϯεΛߦ͏ • σʔλͰ֬৴͕࣋ͯͳ͍ࢪࡦ͸ۃྗڐ͞ͳ͍

Slide 108

Slide 108 text

ݶΒΕͨϦιʔεԼͰͷ
 ߴ଎ͳ։ൃख๏ খ͍͞νʔϜͰ΋PDCAΛ
 ճͤΔ෼ੳج൫

Slide 109

Slide 109 text

ݶΒΕͨϦιʔεԼͰͷ
 ߴ଎ͳ։ൃख๏

Slide 110

Slide 110 text

։ൃख๏·ͱΊ • Infrastructure as Code͸పఈ & apply݁ՌͷՄࢹԽ • एׯͷґଘɺటष͍࣮૷͸ڐ༰ͭͭ͠ɺ
 AWS࠷దͳ؀ڥʹ৐͔ͬΔ͜ͱͰ଎౓Λग़ͯ͠Δ • ࠷ॳ͔ΒΞʔΩςΫνϟΛϚΠΫϩʹ͗͢͠ͳ͍ • ίϯύΠϧɺCIͳͲͷ܁Γฦ͠࡞ۀ͸ແବͳ࣌ؒΛ
 ա͝͞ͳ͍Α͏ʹɺࣗಈԽ & ߴ଎Խ

Slide 111

Slide 111 text

খ͍͞νʔϜͰ΋PDCAΛ
 ճͤΔ෼ੳج൫

Slide 112

Slide 112 text

෼ੳج൫·ͱΊ • iOSΫϥΠΞϯτ͔Β੔ܗͭͭ͠௚઀ϩάΛૹ৴ • ը໘୯ҐɺΞΫγϣϯ୯ҐͰऔΕΔ͚ͩͷϩάΛऔΔ • ෼ੳπʔϧ͸RedashΛ༻͍͓ͯΓɺνʔϜશମͰ
 SQLͷϝϯςφϯεΛߦ͏ • σʔλͰ֬৴͕࣋ͯͳ͍ࢪࡦ͸ۃྗڐ͞ͳ͍

Slide 113

Slide 113 text

͝੩ௌ༗೉͏͍͟͝·ͨ͠ʂ