Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
マイクロチームでの高速な新規開発を支える開発・分析基盤
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Seiji Takahashi
August 04, 2017
Programming
16k
17
Share
マイクロチームでの高速な新規開発を支える開発・分析基盤
マイクロチームでの高速な新規開発を支える開発・分析基盤 by @__timakin__
Builderscon2017でのプレゼン内容です。
Seiji Takahashi
August 04, 2017
More Decks by Seiji Takahashi
See All by Seiji Takahashi
権限と承認 〜ユーザー信頼性に繋がる管理画面の根幹について〜
timakin
0
810
Go Backends for frontends with GraphQL and gRPC
timakin
6
4.2k
Design Pattern for Image and Text Composition in Go
timakin
5
6.8k
Golang API Testing the HARD way
timakin
13
7k
Head First Golang Image Package
timakin
2
10k
React Native Beyond Prototype
timakin
2
1.7k
Performance Optimization on Google AppEngine
timakin
5
6.6k
testcache.pdf
timakin
1
200
How Go cache
timakin
1
120
Other Decks in Programming
See All in Programming
Vibe하게 만드는 Flutter GenUI App With ADK , 박제창, BWAI Incheon 2026
itsmedreamwalker
0
540
Swift Concurrency Type System
inamiy
0
340
テレメトリーシグナルが導くパフォーマンス最適化 / Performance Optimization Driven by Telemetry Signals
seike460
PRO
2
220
10年分の技術的負債、完済へ ― Claude Code主導のAI駆動開発でスポーツブルを丸ごとリプレイスした話
takuya_houshima
0
1.8k
今からFlash開発できるわけないじゃん、ムリムリ! (※ムリじゃなかった!?)
arkw
0
190
事業会社でのセキュリティ長期インターンについて
masachikaura
0
230
YJITとZJITにはイカなる違いがあるのか?
nakiym
0
110
RSAが破られる前に知っておきたい 耐量子計算機暗号(PQC)入門 / Intro to PQC: Preparing for the Post-RSA Era
mackey0225
3
120
ふりがな Deep Dive try! Swift Tokyo 2026
watura
0
130
「効かない!」依存性注入(DI)を活用したAPI Platformのエラーハンドリング奮闘記
mkmk884
0
310
飯MCP
yusukebe
0
490
Feature Toggle は捨てやすく使おう
gennei
0
440
Featured
See All Featured
Prompt Engineering for Job Search
mfonobong
0
250
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
510
Music & Morning Musume
bryan
47
7.1k
Accessibility Awareness
sabderemane
0
94
Measuring & Analyzing Core Web Vitals
bluesmoon
9
800
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
Agile that works and the tools we love
rasmusluckow
331
21k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
160
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
510
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2k
New Earth Scene 8
popppiees
3
2k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
340
Transcript
ϚΠΫϩνʔϜͰͷ ߴͳ৽ن։ൃΛࢧ͑Δ ։ൃɾੳج൫ @__timakin__ builderscon 2017
ࣗݾհ • timakinʢಡΈ: ͪ·͖Μʣ • https://github.com/timakin • https://twitter.com/__timakin__ • Gunosy৽نࣄۀ։ൃࣨ
• Contributor of Golang <- New! • Go/SwiftΛϝΠϯʹॻ͍͍ͯ·͢ɻ
Copyright© Gunosy Inc. All Rights Reserved 3 Go / Python
ΤϯδχΞืूத ▶https://gunosy.co.jp/recruit/ Gunosyɺ౦ژେֶʹ௨͏3ਓͷֶੜͷ ʮใΛੈքதͷਓʹ࠷దʹಧ͚͍ͨʯͱ͍͏͍͔Β࢝·Γ·ͨ͠ɻ ౦ূϚβʔζ্ɺຊώϧζͷΦϑΟεҠసΛܦͯɺ େ͖͍ͯ͘͠ΔձࣾͰ׆༂͍ͨ͠ϝϯόʔΛืू͍ͯ͠·͢ɻ
ࠓ͢͜ͱ • ʮLUCRAʯॳظϦϦʔε·ͰͷಓͷΓͱ੍݅ • ͍։ൃظؒͰͬͨ͜ͱɺΒͳ͔ͬͨ͜ͱ • ։ൃج൫ͷհ • ॊೈͳԾઆݕূ͕Մೳͳڥͮ͘Γ
ݶΒΕͨϦιʔεԼͰͷ ߴͳ։ൃख๏ খ͍͞νʔϜͰPDCAΛ ճͤΔੳج൫
ݶΒΕͨϦιʔεԼͰͷ ߴͳ։ൃख๏
࣮ྫɿʮLUCRAʯ
None
ʮLUCRAʯॳظϦϦʔε·Ͱͷ ಓͷΓͱ੍݅
εέδϡʔϧͱ੍݅ • εέδϡʔϧ • 3ϲ݄ؒ (3݄~5݄) • ։ൃνʔϜͷن • ৽نϓϩδΣΫτۃྗগͰʂ
• ࣄͰGoͷAPIɺSwiftͰͷiOSΞϓϦ։ൃܦݧͳ͠
εέδϡʔϧͱ੍݅ • ։ൃཁ݅ • iOSΫϥΠΞϯτ
εέδϡʔϧͱ੍݅ • ։ൃཁ݅ • iOSΫϥΠΞϯτ • هࣄɺάϧʔϐϯάใɺϢʔβʔೝূଞϦιʔεશମʹؔΘ ΔAPI
εέδϡʔϧͱ੍݅ • ։ൃཁ݅ • iOSΫϥΠΞϯτ • هࣄɺάϧʔϐϯάใɺϢʔβʔೝূଞϦιʔεશମʹؔΘ ΔAPI • هࣄੜɺػցֶशج൫
• Ϋϩʔϥʔ / ίϯςϯπྨ / هࣄςϯϓϨੜAPI
εέδϡʔϧͱ੍݅ • ։ൃཁ݅ • iOSΫϥΠΞϯτ • هࣄɺάϧʔϐϯάใɺϢʔβʔೝূଞϦιʔεશମʹؔΘ ΔAPI • هࣄੜɺػցֶशج൫
• Ϋϩʔϥʔ / ίϯςϯπྨ / هࣄςϯϓϨੜAPI • पลڥ • Ωϟογϡػߏ / Τϥʔ, syslogࢹ / ཧπʔϧ • Pushج൫ / ϩάੳج൫ / ABςετج൫
εέδϡʔϧͱ੍݅ • ϙΠϯτ 1. νʔϜͷਓۃྗ͑Δɻ 2. ߏங͢Δج൫ʹରͯ͠։ൃظ͕͍ؒɻ 3. ੳ͕Ͱ͖ΔڥΛ࠷ॳ͔Βߏங͢Δɻ
࣮ࡍʹԿΛ͔ͬͨʁ
࣮ࡍͷεέδϡʔϧ ݄ • API • ϞοΫඋʢεϐʔυײʹ߹Θͣ1͘Β͍͔͠ʹཱͨ ͣʣ • هࣄɺάϧʔϐϯάใAPIͷ࡞ +
stgڥߏங • ΫϥΠΞϯτ • UtilɺAPIClientɺLoggingɺϧʔςΟϯάपΓͷඋ • ػցֶशɺهࣄੜج൫ • Ϋϩʔϥʔ࡞ + stgʹॾʑͷΠϯϑϥߏங ԼճΓͷඋͱϓϩτλΠϓ࡞
࣮ࡍͷεέδϡʔϧ ݄ • API • ϢʔβʔೝূAPIͷ࡞ • ΫϥΠΞϯτͭͳ͗͜Έ • push,
ABج൫, Ωϟογϡؔ࿈ͷௐ, ϩάج൫ͷ࡞ • ΫϥΠΞϯτ • هࣄҰཡɺৄࡉը໘σβΠϯͯࠐΈ • ೝূɺpushɺར༻نɾFAQ֤छઃఆɺڧ੍Ξοϓσʔτ • ػցֶशɺهࣄੜج൫ • هࣄྨɺΫϩʔϥʔɺؔ࿈هࣄੜͷ࡞ɺstgڥߏங ࣮٧Ί + σβΠϯͯࠐΈ
࣮ࡍͷεέδϡʔϧ ݄ • API • ϩάج൫ɺϛυϧΣΞ(Τϥʔ, syslogࢹɺmemd)ͷ setup • ֤छهࣄࣗಈੜج൫ɺϩάج൫ͱͷͭͳ͗͜Έ
• ຊ൪ڥߏங • ΫϥΠΞϯτ • σβΠϯϒϥογϡΞοϓɺจݴɾಈ࡞मਖ਼ɺਃ࡞ۀ • ػցֶशɺهࣄੜج൫ • ྨɺείΞ͚ϩδοΫͷमਖ਼ɺଞAPIͷमਖ਼ɺ֤छຊ൪ ڥߏங ϛυϧΣΞՃɺ֤APIͭͳ͗͜Έɺຊ൪ڥߏங
ॕʂϦϦʔεʂ
͜ͷظؒͷ։ൃνʔϜͷঢ়گ
աࠅͳεέδϡʔϧ
աࠅͳεέδϡʔϧ ۀଓ͖ͷʑ
աࠅͳεέδϡʔϧ ۀଓ͖ͷʑ ߥΕΔਓؒؔ
ʁ
աࠅͳεέδϡʔϧ ۀଓ͖ͷʑ ߥΕΔਓؒؔ
ΪϦΪϦ ͚ͩͲ Φϯεέ
ΪϦΪϦ ͚ͩͲ Φϯεέ ఆ࣌Ͱࣦྱ
ΪϦΪϦ ͚ͩͲ Φϯεέ ఆ࣌Ͱࣦྱ ࿕Β͔ͳ ৬
ʁ
• Δ / Βͳ͍ͷΓ͚ • ج൫෦ͷ๛ͳϊϋ
͍։ൃظؒͰ ͬͨ͜ͱɺΒͳ͔ͬͨ͜ͱ
Δ/Βͳ͍ͷج४ • ΞϓϦͷίϯηϓτΛ࠷খݶͷൣғͰ ݕূ͢Δͷʹඞཁ͔
Δ/Βͳ͍ͷج४ • ΞϓϦͷίϯηϓτΛ࠷খݶͷൣғͰ ݕূ͢Δͷʹඞཁ͔ • ඦສDAUʹεέʔϧ͢Δମ੍͕͏͔
Δ/Βͳ͍ͷج४ • ΞϓϦͷίϯηϓτΛ࠷খݶͷൣғͰ ݕূ͢Δͷʹඞཁ͔ • ඦສDAUʹεέʔϧ͢Δମ੍͕͏͔ • ੳɾӡ༻ɾվળͷϑϩʔΛΓͳ͘౿ΉͨΊͷ ػೳ͕ἧ͍ͬͯΔ͔
• هࣄྨɾੜج൫ • ੳج൫ • ೝূɺ هࣄͷҰཡɺӾཡɺ γΣΞ • ※৹ࠪʹ͍+α
Δ Βͳ͍ • Android • ݫີͳϦϑΝΫλ • “ߴͰແବͷͳ͍”ج൫ • ݕࡧ • ϑΥϩʔɾ͓ؾʹೖΓ • Ӿཡཤྺػೳ
ඞཁͳͷهࣄ͕ݟΒΕͯɺ ݕূɺӡ༻Մೳͳج൫Λ࡞Δ͜ͱ
طଘϓϩμΫτ͔Β Ԡ༻Ͱ͖Δ෦Λ βΫβΫऔͬͯ͜Α͏
Πϯϑϥ
Πϯϑϥߏஙฤ • جຊతʹAWS OpsworksͰɺࣗࣾͷΧελϜChefϨγ ϐΛϕʔεʹڥߏங͢Δ • gunosy/gunosy_opsworks_cookbook
Πϯϑϥߏஙฤ
Πϯϑϥߏஙฤ • middleware • papertrail, td_agent, datadog, nginx, memcached •
ଞɺmysql, jq, einhornʢGoͷAPIͷgraceful restart ༻్ʣͳͲΛΆͪΆͪೖΕΔ
Πϯϑϥߏஙฤ • codenize-tools • miamʢIAMཧʣ • piculetʢSGʣ • roadworkerʢRoute53ʣ •
radiosondeʢCloudWatch Logsʣ • monosasiʢCloudWatch Eventsʣ
git pushͨ͠ΒCircleCI্Ͱ֤ίϚϯυΛୟ͖ɺ Slackʹapply݁ՌͷJSONϖΠϩʔυΛ௨
API
ͱ͜ΖͰ
GunosyGoͷར༻ྺ͕͍ʂ
ྺ࢙͕ੵΈॏͳΔͱ ੜ·ΕΔͷ
ศརͰ झ͕͋ΔUtility܈
gunosy/go
APIฤ • gunosy/go • mysql, redis, memd, fluent, airbrakeͳͲ ϛυϧΣΞΫϥΠΞϯτ܈͕ೖͬͯΔ
• jwt authenticator, fluent-loggerͳͲɺ ֤APIͰඞཁʹͳΔutilΛ·ͱΊͯΔ • OpsWorks࠷దͳઃఆಡΈࠐΈ
APIฤ • gunosy/goͷϝϦοτ / σϝϦοτ • ϝϦοτ • OpsWorksͰڥߏஙͯ͠deploy͢Εɺ API͕͍͍͙ͩͨ͢ಈ͘Α͏ʹͳͬͯΔɻ
• JWTೝূͳͲ΄΅࣮ʹࠩҟ͕ͳ͍ͷͰɺ ڞ௨ϥΠϒϥϦʹ͢ΔϝϦοτ͕େ͖͍ • ӡ༻ɺࢹपΓͷઃఆ͕OpsWorksͱͷ๊͖߹ΘͤͰ ͔ͳΓγϣʔτΧοτͰ͖Δ
APIฤ • gunosy/goͷϝϦοτ / σϝϦοτ • σϝϦοτ • ϛυϧΣΞ܈ɺͻ͍ͯ AWSͷґଘ͕ߴ͍ʂ
• loggerͷܗࣜมߋͳͲ͕ॊೈʹͰ͖ͳ͍
APIฤ • पลπʔϧ • SQLεΩʔϚgooseʢGomigration toolʣ Ͱཧ • graceful restart༻ʹɺeinhornͰϓϩηεཧ
APIฤ • ϑϨʔϜϫʔΫ • guregu/kami
APIฤ • guregu/kamiͷ • ContextʢGoͷrequest-scopedͳΛೖΕΔശΈ ͍ͨͳͭʣΛ݁ߏཞ༻͍ͯ͠Δɻ • ΰουΦϒδΣΫτ • panicΛѲΓͭͿͯ͘͠ΕΔ
APIฤ • ύοέʔδཧ • ࠷ۙݫີʹͳΓ࢝Ίͨ • աڈؾ߹͍ Ͱ࠷৽ʹ͍͔͍ͭͤͯͨ
APIฤ • ֤ͷղফʹ͚ͯ • AWS OpsWorksͷґଘͷߴ͞ • ϑϨʔϜϫʔΫΛguregu/kami -> net/httpʹҠߦ͠
ͯɺϛυϧΣΞ܈ϞσϧͷґଘΛղফɻ • DIύλʔϯͰॻ͘͜ͱͰɺͳΜͰglobalʹ٧Ίͯ ͍ͨॻ͖ํ͔Β٫
APIฤ • ֤ͷղফʹ͚ͯ • όʔδϣϯཧ • ґଘύοέʔδglideʹҠߦͯ͠ɺ దͳόʔδϣϯཧΛɻ
APIฤ • σϓϩΠϑϩʔ • git push • S3ʹGoͷόΠφϦ੩తϑΝΠϧΛ٧ΊͨtarΛ Ξοϓϩʔυ •
OpsWorksͷAPIΛୟ͍ͯS3͔ΒtarΛ͖࣋ͬͯͯ ల։ɺrestart͢Δ
ref: https://speakerdeck.com/kyokomi/gunosy-apitimugokai-fa-huro
APIฤ • CI • ॳظ։ൃͰϏϧυʹ࣌ؒΛऔΒΕΔͷѹతແବ • => CircleCI2.0ରԠʂ
APIฤ • ײಈͷཛྷ • goͷvendor, npm install assets:precompileͳͲ Ωϟογϡ͢Ε
͍͍ͩͨ1~2minsͰऴΘΔ
APIฤ • Ϋϩʔϥʔɺྨ • GunosyͰഓͬͨػցֶशج൫ϊϋΛϑϧ׆༻ • ϑϨʔϜϫʔΫ: Django • δϣϒεέδϡʔϥ:
Celery • σʔλߏ: GunosyFeed Ver.2 • ref: https://www.slideshare.net/mosa_siru/ss-65205273
APIฤ • هࣄྨɺੜʹඞཁͳAPI܈ • Crawler • GunosyFeedʹଇͬͨAPIΛୟ͍ͯσʔλΛऔͬͯ͘Δ • HTMLαχλΠζɺϑΟʔϧυใͷύʔαʔػߏ •
CategoryClassifier • هࣄͷΧςΰϦྨث • URL(υϝΠϯ)ʹΑΔϧʔϧϕʔεͷྨ + ػցֶशϞσϧʹΑΔྨ • NGఆ • TabGenerator • ಛఆΧςΰϦ(λϒ)ͷهࣄҰཡΛੜ • ElasticSearchʹੵͨ͠ӾཡɾΫϦοΫϩά͔ΒείΞϦϯάͯ͠อଘ • खಈϐοΫΞοϓͷӡ༻͚API
APIฤ • Ωϟογϡ • ϩʔΧϧͱϦϞʔτͷ̎ஈ֊ • memcached • هࣄɺݕࡧ݁ՌɺϚελʔσʔλͷΈΩϟογϡ
ref: https://www.slideshare.net/mosa_siru/go-memcached-microservices
APIฤ • Pushج൫ • mercari/gaurunΛfork(gunosy/gaurun) • gaurunͷόΠφϦΛS3ʹஔ͍ͱ͍ͯɺ OpsWorksͰdeploy • OpsWorksͷCustom
JSONͷઃఆΛ gaurunͷઃఆϑΝΠϧʹஔ͖͑ΔϨγϐ
ʂʂ
"1/T ($1 '$. AdminͰPush༧ Push API Gaurun API Bulk Publish
௨ड৴ Ұ࿈ͷ௨ϑϩʔ
ΞʔΩςΫνϟ
ΞʔΩςΫνϟฤ • ϚΠΫϩαʔϏεʹ͗͢͠ͳ͍
ref: https://www.slideshare.net/mosa_siru/ss-64839846
ΞʔΩςΫνϟฤ • ͳͥϚΠΫϩαʔϏεʹ͠ͳ͍ʁ • APIؒͷΦʔόʔϔου
ΞʔΩςΫνϟฤ • ͳͥϚΠΫϩαʔϏεʹ͠ͳ͍ʁ • APIؒͷΦʔόʔϔου • SGઃఆͳͲͷఔʹΑΔ։ൃͷԼ
ΞʔΩςΫνϟฤ • ͳͥϚΠΫϩαʔϏεʹ͠ͳ͍ʁ • APIؒͷΦʔόʔϔου • SGઃఆͳͲͷఔʹΑΔ։ൃͷԼ • σϓϩΠ͕͠ΜͲ͍
ΞʔΩςΫνϟฤ • ͳͥϚΠΫϩαʔϏεʹ͠ͳ͍ʁ • APIؒͷΦʔόʔϔου • SGઃఆͳͲͷఔʹΑΔ։ൃͷԼ • σϓϩΠ͕͠ΜͲ͍ •
ཧը໘ͷͨΊʹര͢ΔCRUD API܈
ΞʔΩςΫνϟฤ • LUCRAͰϚΠΫϩαʔϏεʹ͗͢͠ͳ͍ • هࣄऩूपΓ • ྨɺΫϩʔϥʔɺهࣄੜݸผʹɻ • Client͚ͷAPI •
هࣄɺάϧʔϐϯάใɺϢʔβʔใϝΠϯAPI͕શ෦ฦ͢ • PushɺABςετཧAPI͚ͩݸผʹɻ
iOS
iOSΫϥΠΞϯτฤ • MVVM + Reactive • Extension, APIClient, LoggerपΓͷUtil࠶ར༻Մೳ
iOSΫϥΠΞϯτฤ • ϩάૹ৴पΓͷίʔυ͕ଟ͍ -> σόοάେม • LogDebugger͕͋ΔͷͰϩά͕ૹΒΕ͔ͨΛͦͷ ͰσόοάͰ͖Δ • aikizoku/SKLogDebugger-iOS
None
iOSΫϥΠΞϯτฤ • ίϯύΠϧ࣌ؒͷݮ • Ϗϧυͪແҙࣝͷ͏ͪʹ૿͍͑͢ແବͳ࣌ؒ • -Xfrontend -debug-time-function-bodies ্هϑϥάͰɺϝιου୯ҐͷίϯύΠϧ࣌ؒΛܭଌ •
giginet/xcprofilerͰίϯύΠϧ͕͍ॱʹ֬ೝ
ms୯ҐͰϝιου͝ͱͷίϯύΠϧ࣌ؒܦաͷ ্ҐΛදࣔͯ͘͠ΕΔɻ
iOSΫϥΠΞϯτฤ • ίϯύΠϧ࣌ؒͷݮ • 50msҎ্ͷϝιου͕૿͑ͨΒվળ • giginet/danger-xcprofilerͰΞϥʔτ௨Մೳ
iOSΫϥΠΞϯτฤ • ىಈ࣌ؒͷݮ • DYLD_PRINT_STATISTICSϑϥάͷઃఆ • ґଘϥΠϒϥϦͷ੍ • ܕਪͷݮ •
SDKͷηοτΞοϓͷฒྻԽ
։ൃڥ·ͱΊ • Infrastructure as Codeపఈ & apply݁ՌͷՄࢹԽ • एׯͷґଘɺటष͍࣮ڐ༰ͭͭ͠ɺ AWS࠷దͳڥʹ͔ͬΔ͜ͱͰΛग़ͯ͠Δ
• ࠷ॳ͔ΒΞʔΩςΫνϟΛϚΠΫϩʹ͗͢͠ͳ͍ • ίϯύΠϧɺCIͳͲͷ܁Γฦ͠࡞ۀແବͳ࣌ؒΛ ա͝͞ͳ͍Α͏ʹɺࣗಈԽ & ߴԽ
খ͍͞νʔϜͰPDCAΛ ճͤΔੳج൫
࣮ࡍͲΜͳϩάΛ ૹ͍ͬͯΔ͔ʁ
͜ͷը໘ͰͲΜͳϩά͕ ൃੜ͠͏Δ͔ʁ
• launchΠϕϯτϩά • fore/backgroundϩά • push heartbeatϩά • ೝূ, initAPI
callϩά • ॳظදࣔ࣌هࣄimpϩά • ΧςΰϦεϫΠϓભҠϩά • ΧςΰϦΫϦοΫભҠϩά • εΫϩʔϧ࣌impϩά • هࣄΫϦοΫϩά • pull-refreshϩά • refresh࣌impϩά • push௨։෧ϩά
• launchΠϕϯτϩά • fore/backgroundϩά • push heartbeatϩά • ೝূ, initAPI
callϩά • ॳظදࣔ࣌هࣄimpϩά • ΧςΰϦεϫΠϓભҠϩά • ΧςΰϦΫϦοΫભҠϩά • εΫϩʔϧ࣌impϩά • هࣄΫϦοΫϩά • pull-refreshϩά • refresh࣌impϩά • push௨։෧ϩά ͍ͬͺ͍
Ͳ͏͍͏ϑϩʔͰ ૹ͍ͬͯΔ͔ʁ
ੳσʔλϑϩʔ
ੳσʔλϑϩʔ ొɾӾཡɾ ΫϦοΫϩάͷऩू
ੳσʔλϑϩʔ ొɾӾཡɾ ΫϦοΫϩάͷऩू td_agentʹΑΔ ϩάͷू
ੳσʔλϑϩʔ ొɾӾཡɾ ΫϦοΫϩάͷऩू td_agentʹΑΔ ϩάͷू ϩάछผ͝ͱʹ όοΫΞοϓ & ྲྀ͠ࠐΈ
ੳσʔλϑϩʔ ొɾӾཡɾ ΫϦοΫϩάͷऩू td_agentʹΑΔ ϩάͷू ϩάछผ͝ͱʹ όοΫΞοϓ & ྲྀ͠ࠐΈ
Redash্Ͱੳ
• ΫϥΠΞϯτ͔Βͷϩάcookpad/puree-ios Λ௨ͯ͡redshiftʹૹΔ • td_agent͕ೖͬͨlogूαʔόʔΛհͯ͠ɺ ՃࡁΈσʔλΛRedashʹྲྀ͢ • όοΫΞοϓͷͨΊʹkinesisΛڬΉ ੳσʔλϑϩʔ
࣮ࡍͷLogఆٛ (iOS)
࣮ࡍͷLogఆٛ (iOS)
Ͳ͏ͬͯσʔλΛݟΔ͔ʁ
ੳڥ • RedashΛར༻ • ओཁKPIఆظతʹSlackʹ௨ • ӡ༻ɺ։ൃΘͣνʔϜશһ͕ੳ༻SQLΛॻ͘
ͲΜͳΛ͍ͬͯΔ͔ʁ
ओཁKPI • DAU • 14ޙܧଓ • 7ޙܧଓ • 1ޙܧଓ •
ۙ1࣌ؒهࣄCTR • ొܦ࿏ผ֫ಘ • هࣄΫϦοΫճ/DAU • εϫΠϓճ/DAU • ͓ؾʹೖΓొ/DAU • શମ / ొܦ࿏ผίϗʔτ • Pushڐঢ়گ • ΧςΰϦผهࣄӾཡ
ੳ݁Ռͷར༻ • ʮ͓͠ΌΕͳΞϓϦʯͷϒϥϯυΠϝʔδΛٻͨ͠ ͍͔Βͱ͍ͬͯɺ ࠜڌͳ͘ʮϑΝογϣϯʯʮίεϝʯΛਪ͢ ͱ͍͏ҙࢥܾఆઈରʹ͠ͳ͍ɻ • ΧςΰϦผͷσʔλΛݟͯɺߴ͍CTRRR͕ ༧͞ΕΔPushػೳՃ͔͠ߦΘͳ͍ɻ
·ͱΊ • iOSΫϥΠΞϯτ͔Βܗͭͭ͠ϩάΛૹ৴ • ը໘୯ҐɺΞΫγϣϯ୯ҐͰऔΕΔ͚ͩͷϩάΛऔΔ • ੳπʔϧRedashΛ༻͍͓ͯΓɺνʔϜશମͰ SQLͷϝϯςφϯεΛߦ͏ • σʔλͰ֬৴͕࣋ͯͳ͍ࢪࡦۃྗڐ͞ͳ͍
ݶΒΕͨϦιʔεԼͰͷ ߴͳ։ൃख๏ খ͍͞νʔϜͰPDCAΛ ճͤΔੳج൫
ݶΒΕͨϦιʔεԼͰͷ ߴͳ։ൃख๏
։ൃख๏·ͱΊ • Infrastructure as Codeపఈ & apply݁ՌͷՄࢹԽ • एׯͷґଘɺటष͍࣮ڐ༰ͭͭ͠ɺ AWS࠷దͳڥʹ͔ͬΔ͜ͱͰΛग़ͯ͠Δ
• ࠷ॳ͔ΒΞʔΩςΫνϟΛϚΠΫϩʹ͗͢͠ͳ͍ • ίϯύΠϧɺCIͳͲͷ܁Γฦ͠࡞ۀແବͳ࣌ؒΛ ա͝͞ͳ͍Α͏ʹɺࣗಈԽ & ߴԽ
খ͍͞νʔϜͰPDCAΛ ճͤΔੳج൫
ੳج൫·ͱΊ • iOSΫϥΠΞϯτ͔Βܗͭͭ͠ϩάΛૹ৴ • ը໘୯ҐɺΞΫγϣϯ୯ҐͰऔΕΔ͚ͩͷϩάΛऔΔ • ੳπʔϧRedashΛ༻͍͓ͯΓɺνʔϜશମͰ SQLͷϝϯςφϯεΛߦ͏ • σʔλͰ֬৴͕࣋ͯͳ͍ࢪࡦۃྗڐ͞ͳ͍
͝੩ௌ༗͏͍͟͝·ͨ͠ʂ