$30 off During Our Annual Pro Sale. View Details »

マイクロチームでの高速な新規開発を支える開発・分析基盤

 マイクロチームでの高速な新規開発を支える開発・分析基盤

マイクロチームでの高速な新規開発を支える開発・分析基盤 by @__timakin__
Builderscon2017でのプレゼン内容です。

Seiji Takahashi

August 04, 2017
Tweet

More Decks by Seiji Takahashi

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

  3. Copyright© Gunosy Inc. All Rights Reserved 3
    Go / Python ΤϯδχΞืूத
    ▶https://gunosy.co.jp/recruit/
    Gunosy͸ɺ౦ژେֶʹ௨͏3ਓͷֶੜͷ

    ʮ৘ใΛੈքதͷਓʹ࠷దʹಧ͚͍ͨʯͱ͍͏૝͍͔Β࢝·Γ·ͨ͠ɻ
    ౦ূϚβʔζ্৔ɺ࿡ຊ໦ώϧζ΁ͷΦϑΟεҠసΛܦͯɺ

    େ͖͘੒௕͍ͯ͠ΔձࣾͰ׆༂͍ͨ͠ϝϯόʔΛืू͍ͯ͠·͢ɻ

    View Slide

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

    View Slide

  5. ݶΒΕͨϦιʔεԼͰͷ

    ߴ଎ͳ։ൃख๏
    খ͍͞νʔϜͰ΋PDCAΛ

    ճͤΔ෼ੳج൫

    View Slide

  6. ݶΒΕͨϦιʔεԼͰͷ

    ߴ଎ͳ։ൃख๏

    View Slide

  7. ࣮ྫɿʮLUCRAʯ

    View Slide

  8. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. ࣮ࡍʹԿΛ΍͔ͬͨʁ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  20. ॕʂϦϦʔεʂ

    View Slide

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

    View Slide

  22. աࠅͳεέδϡʔϧ

    View Slide

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

    View Slide

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

    View Slide

  25. ʁ

    View Slide

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

    View Slide

  27. ΪϦΪϦ
    ͚ͩͲ
    Φϯεέ

    View Slide

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

    View Slide

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

    ৬৔

    View Slide

  30. ʁ

    View Slide

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

    View Slide

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

    View Slide

  33. ΍Δ/΍Βͳ͍ͷج४
    • ΞϓϦͷίϯηϓτΛ࠷খݶͷൣғͰ

    ݕূ͢Δͷʹඞཁ͔

    View Slide

  34. ΍Δ/΍Βͳ͍ͷج४
    • ΞϓϦͷίϯηϓτΛ࠷খݶͷൣғͰ

    ݕূ͢Δͷʹඞཁ͔
    • ਺ඦສDAUʹεέʔϧ͢Δମ੍͕੔͏͔

    View Slide

  35. ΍Δ/΍Βͳ͍ͷج४
    • ΞϓϦͷίϯηϓτΛ࠷খݶͷൣғͰ

    ݕূ͢Δͷʹඞཁ͔
    • ਺ඦສDAUʹεέʔϧ͢Δମ੍͕੔͏͔
    • ෼ੳɾӡ༻ɾվળͷϑϩʔΛ଺Γͳ͘౿ΉͨΊͷ

    ػೳ͕ἧ͍ͬͯΔ͔

    View Slide

  36. • هࣄ෼ྨɾੜ੒ج൫
    • ෼ੳج൫
    • ೝূɺ

    هࣄͷҰཡɺӾཡɺ

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

    View Slide

  37. ඞཁͳͷ͸هࣄ͕ݟΒΕͯɺ

    ݕূɺӡ༻Մೳͳج൫Λ࡞Δ͜ͱ

    View Slide

  38. طଘϓϩμΫτ͔Β

    Ԡ༻Ͱ͖Δ෦෼Λ

    βΫβΫऔͬͯ͜Α͏

    View Slide

  39. Πϯϑϥ

    View Slide

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

    View Slide

  41. Πϯϑϥߏஙฤ

    View Slide

  42. Πϯϑϥߏஙฤ
    • middleware
    • papertrail, td_agent, datadog, nginx, memcached
    • ଞɺmysql, jq, einhornʢGoͷAPIͷgraceful restart

    ༻్ʣͳͲΛΆͪΆͪೖΕΔ

    View Slide

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

    View Slide

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

    View Slide

  45. API

    View Slide

  46. ͱ͜ΖͰ

    View Slide

  47. Gunosy͸Goͷར༻ྺ͕௕͍ʂ

    View Slide

  48. ྺ࢙͕ੵΈॏͳΔͱ

    ੜ·ΕΔ΋ͷ

    View Slide

  49. ศརͰ
    झ͕͋ΔUtility܈

    View Slide

  50. gunosy/go

    View Slide

  51. APIฤ
    • gunosy/go
    • mysql, redis, memd, fluent, airbrakeͳͲ

    ϛυϧ΢ΣΞΫϥΠΞϯτ܈͕ೖͬͯΔ
    • jwt authenticator, fluent-loggerͳͲɺ

    ֤APIͰඞཁʹͳΔutilΛ·ͱΊͯΔ
    • OpsWorks࠷దͳઃఆಡΈࠐΈ

    View Slide

  52. APIฤ
    • gunosy/goͷϝϦοτ / σϝϦοτ
    • ϝϦοτ
    • OpsWorksͰ؀ڥߏஙͯ͠deploy͢Ε͹ɺ

    API͕͍͍͙ͩͨ͢ಈ͘Α͏ʹͳͬͯΔɻ
    • JWTೝূͳͲ͸΄΅࣮૷ʹࠩҟ͕ͳ͍ͷͰɺ

    ڞ௨ϥΠϒϥϦʹ͢ΔϝϦοτ͕େ͖͍
    • ӡ༻ɺ؂ࢹपΓͷઃఆ͕OpsWorksͱͷ๊͖߹ΘͤͰ

    ͔ͳΓγϣʔτΧοτͰ͖Δ

    View Slide

  53. APIฤ
    • gunosy/goͷϝϦοτ / σϝϦοτ
    • σϝϦοτ
    • ϛυϧ΢ΣΞ܈ɺͻ͍ͯ͸

    AWS΁ͷґଘ౓͕ߴ͍ʂ
    • loggerͷܗࣜมߋͳͲ͕ॊೈʹͰ͖ͳ͍

    View Slide

  54. APIฤ
    • पลπʔϧ
    • SQLεΩʔϚ͸gooseʢGo੡migration toolʣ

    Ͱ؅ཧ
    • graceful restart༻ʹɺeinhornͰϓϩηε؅ཧ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    ద੾ͳόʔδϣϯ؅ཧΛɻ

    View Slide

  60. APIฤ
    • σϓϩΠϑϩʔ
    • git push
    • S3ʹGoͷόΠφϦ΍੩తϑΝΠϧΛ٧ΊͨtarΛ

    Ξοϓϩʔυ
    • OpsWorksͷAPIΛୟ͍ͯS3͔ΒtarΛ͖࣋ͬͯͯ

    ల։ɺrestart͢Δ

    View Slide

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

    View Slide

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

    View Slide

  63. APIฤ
    • ײಈͷཛྷ
    • goͷvendor, 

    npm install

    assets:precompileͳͲ

    Ωϟογϡ͢Ε͹

    ͍͍ͩͨ1~2minsͰऴΘΔ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  68. APIฤ
    • Pushج൫
    • mercari/gaurunΛfork(gunosy/gaurun)
    • gaurunͷόΠφϦΛS3ʹஔ͍ͱ͍ͯɺ

    OpsWorksͰ௚઀deploy
    • OpsWorksͷCustom JSONͷઃఆΛ

    gaurunͷઃఆϑΝΠϧʹஔ͖׵͑ΔϨγϐ

    View Slide

  69. ʂʂ

    View Slide

  70. "1/T
    ($1 '$.

    AdminͰPush༧໿
    Push API
    Gaurun API
    Bulk Publish
    ௨஌ड৴
    Ұ࿈ͷ௨஌ϑϩʔ

    View Slide

  71. ΞʔΩςΫνϟ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  79. iOS

    View Slide

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

    View Slide

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

    View Slide

  82. View Slide

  83. iOSΫϥΠΞϯτฤ
    • ίϯύΠϧ࣌ؒͷ࡟ݮ
    • Ϗϧυ଴ͪ͸ແҙࣝͷ͏ͪʹ૿͑΍͍͢ແବͳ࣌ؒ
    • -Xfrontend -debug-time-function-bodies

    ্هϑϥάͰɺϝιου୯ҐͷίϯύΠϧ࣌ؒΛܭଌ
    • giginet/xcprofilerͰίϯύΠϧ͕஗͍ॱʹ֬ೝ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  87. ։ൃ؀ڥ·ͱΊ
    • Infrastructure as Code͸పఈ & apply݁ՌͷՄࢹԽ
    • एׯͷґଘɺటष͍࣮૷͸ڐ༰ͭͭ͠ɺ

    AWS࠷దͳ؀ڥʹ৐͔ͬΔ͜ͱͰ଎౓Λग़ͯ͠Δ
    • ࠷ॳ͔ΒΞʔΩςΫνϟΛϚΠΫϩʹ͗͢͠ͳ͍
    • ίϯύΠϧɺCIͳͲͷ܁Γฦ͠࡞ۀ͸ແବͳ࣌ؒΛ

    ա͝͞ͳ͍Α͏ʹɺࣗಈԽ & ߴ଎Խ

    View Slide

  88. খ͍͞νʔϜͰ΋PDCAΛ

    ճͤΔ෼ੳج൫

    View Slide

  89. ࣮ࡍͲΜͳϩάΛ

    ૹ͍ͬͯΔ͔ʁ

    View Slide

  90. ͜ͷը໘Ͱ͸ͲΜͳϩά͕

    ൃੜ͠͏Δ͔ʁ

    View Slide

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

    View Slide

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

    View Slide

  93. Ͳ͏͍͏ϑϩʔͰ

    ૹ͍ͬͯΔ͔ʁ

    View Slide

  94. ෼ੳσʔλϑϩʔ

    View Slide

  95. ෼ੳσʔλϑϩʔ
    ొ࿥ɾӾཡɾ

    ΫϦοΫϩάͷऩू

    View Slide

  96. ෼ੳσʔλϑϩʔ
    ొ࿥ɾӾཡɾ

    ΫϦοΫϩάͷऩू
    td_agentʹΑΔ

    ϩάͷू໿

    View Slide

  97. ෼ੳσʔλϑϩʔ
    ొ࿥ɾӾཡɾ

    ΫϦοΫϩάͷऩू
    td_agentʹΑΔ

    ϩάͷू໿
    ϩάछผ͝ͱʹ

    όοΫΞοϓ & 

    ྲྀ͠ࠐΈ

    View Slide

  98. ෼ੳσʔλϑϩʔ
    ొ࿥ɾӾཡɾ

    ΫϦοΫϩάͷऩू
    td_agentʹΑΔ

    ϩάͷू໿
    ϩάछผ͝ͱʹ

    όοΫΞοϓ & 

    ྲྀ͠ࠐΈ Redash্Ͱ෼ੳ

    View Slide

  99. • ΫϥΠΞϯτ͔Βͷϩά͸cookpad/puree-ios

    Λ௨ͯ͡௚઀redshiftʹૹΔ
    • td_agent͕ೖͬͨlogू໿αʔόʔΛ஥հͯ͠ɺ

    Ճ޻ࡁΈσʔλΛRedashʹྲྀ͢
    • όοΫΞοϓͷͨΊʹkinesisΛڬΉ
    ෼ੳσʔλϑϩʔ

    View Slide

  100. ࣮ࡍͷLogఆٛ (iOS)

    View Slide

  101. ࣮ࡍͷLogఆٛ (iOS)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  106. ෼ੳ݁Ռͷར༻
    • ʮ͓͠ΌΕͳΞϓϦʯͷϒϥϯυΠϝʔδΛ௥ٻͨ͠
    ͍͔Βͱ͍ͬͯɺ

    ࠜڌͳ͘ʮϑΝογϣϯʯ΍ʮίεϝʯΛਪ͢

    ͱ͍͏ҙࢥܾఆ͸ઈରʹ͠ͳ͍ɻ
    • ΧςΰϦผͷσʔλΛݟͯɺߴ͍CTR΍RR͕

    ༧૝͞ΕΔPush΍ػೳ௥Ճ͔͠ߦΘͳ͍ɻ

    View Slide

  107. ·ͱΊ
    • iOSΫϥΠΞϯτ͔Β੔ܗͭͭ͠௚઀ϩάΛૹ৴
    • ը໘୯ҐɺΞΫγϣϯ୯ҐͰऔΕΔ͚ͩͷϩάΛऔΔ
    • ෼ੳπʔϧ͸RedashΛ༻͍͓ͯΓɺνʔϜશମͰ

    SQLͷϝϯςφϯεΛߦ͏
    • σʔλͰ֬৴͕࣋ͯͳ͍ࢪࡦ͸ۃྗڐ͞ͳ͍

    View Slide

  108. ݶΒΕͨϦιʔεԼͰͷ

    ߴ଎ͳ։ൃख๏
    খ͍͞νʔϜͰ΋PDCAΛ

    ճͤΔ෼ੳج൫

    View Slide

  109. ݶΒΕͨϦιʔεԼͰͷ

    ߴ଎ͳ։ൃख๏

    View Slide

  110. ։ൃख๏·ͱΊ
    • Infrastructure as Code͸పఈ & apply݁ՌͷՄࢹԽ
    • एׯͷґଘɺటष͍࣮૷͸ڐ༰ͭͭ͠ɺ

    AWS࠷దͳ؀ڥʹ৐͔ͬΔ͜ͱͰ଎౓Λग़ͯ͠Δ
    • ࠷ॳ͔ΒΞʔΩςΫνϟΛϚΠΫϩʹ͗͢͠ͳ͍
    • ίϯύΠϧɺCIͳͲͷ܁Γฦ͠࡞ۀ͸ແବͳ࣌ؒΛ

    ա͝͞ͳ͍Α͏ʹɺࣗಈԽ & ߴ଎Խ

    View Slide

  111. খ͍͞νʔϜͰ΋PDCAΛ

    ճͤΔ෼ੳج൫

    View Slide

  112. ෼ੳج൫·ͱΊ
    • iOSΫϥΠΞϯτ͔Β੔ܗͭͭ͠௚઀ϩάΛૹ৴
    • ը໘୯ҐɺΞΫγϣϯ୯ҐͰऔΕΔ͚ͩͷϩάΛऔΔ
    • ෼ੳπʔϧ͸RedashΛ༻͍͓ͯΓɺνʔϜશମͰ

    SQLͷϝϯςφϯεΛߦ͏
    • σʔλͰ֬৴͕࣋ͯͳ͍ࢪࡦ͸ۃྗڐ͞ͳ͍

    View Slide

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

    View Slide