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
Gunosyの地味で高速な 新規事業開発・改善の実際 / How to make your t...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Seiji Takahashi
October 14, 2017
Programming
16k
12
Share
Gunosyの地味で高速な 新規事業開発・改善の実際 / How to make your team productive.
The presentation slides at Forkwell Meetup #5
Seiji Takahashi
October 14, 2017
More Decks by Seiji Takahashi
See All by Seiji Takahashi
権限と承認 〜ユーザー信頼性に繋がる管理画面の根幹について〜
timakin
0
850
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
7.1k
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
210
How Go cache
timakin
1
120
Other Decks in Programming
See All in Programming
🦞OpenClaw works with AWS
licux
1
330
Making the RBS Parser Faster
soutaro
0
660
Back to the roots of date
jinroq
0
720
エラー処理の温故知新 / history of error handling technic
ryotanakaya
7
1.8k
実践ハーネスエンジニアリング:ステアリングループを実例から読み解く / Practical Harness Engineering: Understanding Steering Loops Through Real-World Examples
nrslib
5
3.9k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
190
How We Benchmarked Quarkus: Patterns and anti-patterns
hollycummins
1
180
Spec-Driven Development with AI Agents (Workshop, May 2026)
antonarhipov
2
310
【26新卒研修】OpenAPI/Swagger REST API研修
dip_tech
PRO
0
140
HTML-Aware ERB: The Path to Reactive Rendering @ RubyKaigi 2026, Hakodate, Japan
marcoroth
0
640
決定論 vs 確率論:Gemini 3 FlashとTF-IDFを組み合わせた「法規判定エンジン」の構築
shukob
0
150
いつか誰かが、と思っていた フロントエンド刷新5年間の実践知
kiichisugihara
1
260
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Building an army of robots
kneath
306
46k
Skip the Path - Find Your Career Trail
mkilby
1
110
Exploring anti-patterns in Rails
aemeredith
3
350
A Tale of Four Properties
chriscoyier
163
24k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
210
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Believing is Seeing
oripsolob
1
120
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
160
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
200
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
340
Transcript
GunosyͷຯͰߴͳ ৽نࣄۀ։ൃɾվળͷ࣮ࡍ @__timakin__ / Forkwell Meetup#5
ࣗݾհ • Seiji Takahashi • Github: timakin / Twitter: @__timakin__
• גࣜձࣾGunosy ৽نࣄۀ։ൃࣨ • Go / Swift
ΞδΣϯμ • Gunosy৽نࣄۀ։ൃࣨͱʁ • ੜ࢈ੑΛ্͛ΔͨΊͷऔΓΈ
Gunosy৽نࣄۀ։ൃࣨͱʁ
Gunosyͷ5ʙ10ޙͷΛ࡞Δ͘ɺ VRARɺԻUIͳͲࠓޙීٴ͢ΔՄೳੑͷ͋Δ ৽͍͠σόΠεٕज़Λݚڀ͠ɺ ৽نαʔϏεͷ্ཱͪ͛ͳͲΛߦ͏෦ॺ
Δ͜ͱ • Ϧαʔν • ւ֎ͷઌਐࣄྫͷ·ͱΊ • SDKͷެࣜDocsGithub repoͷίʔυΛړͬͯ࠷৽ٕ ज़ͷνϡʔτϦɾԠ༻ྫΛ୳Δ •
SlackʹRSS௨ɺϨϙʔτڞ༗ • ։ൃ • ͓ன͍ͭͰʹνϡʔτϦϋοΧιϯ • ্ཱ͕ͪΓظۃྗখنνʔϜͰ
࣮ࡍͷ༷ࢠ
None
ੜ࢈ੑΛ্͛ΔͨΊͷऔΓΈ
ͦͦੜ࢈ੑͱʁ
ੜ࢈ੑ = Output / Input
ࢿޮੑͰ͋ͬͯ ੜ࢈(Output)૯ྔͰͳ͍
Output: ࿑ಇʹΑΔՌ • ϢʔβʔͷՃՁ • اۀͷܦࡁతՃՁʢརӹʣ • ଈ࠲ʹརӹʹ݁͠ͳ͍͕ ओཁKPIʹߩݙ͢ΔऔΓΈ
Input: ࢿݯͷೖྔ • ਓతࢿݯͷೖྔ • ্هؚΉࢿݯͷࡒݯͷೖྔ • ࡞ۀ࣌ؒ
ੜ࢈ੑΛ্͛Δํ๏ OutputΛ૿͢ InputΛݮΒ͢
ੜ࢈ੑΛ্͛ΔͨΊͷऔΓΈ • νʔϜنͷ੍ • ։ൃظؒͱ༷ͷ੍ • ֤ΤϯδχΞͷ୲ͷ֦ு • ։ൃϑϩʔͷࣗಈԽ •
ΠϯηϓγϣϯσοΩ • εϓϦϯτ • ੵۃతͳKPIڞ༗
ੜ࢈ੑΛ্͛ΔͨΊͷऔΓΈ • νʔϜنͷ੍ • ։ൃظؒͱ༷ͷ੍ • ֤ΤϯδχΞͷ୲ͷ֦ு • ։ൃϑϩʔͷࣗಈԽ •
ΠϯηϓγϣϯσοΩ • εϓϦϯτ • ੵۃతͳKPIڞ༗
νʔϜنͷ੍ • Ϧαʔν • جຊ։ൃνʔϜ • ࣄۀ෦શମͰɺଞͷνʔϜ͔Βڵຯ͋ΔਓSlackͳ ͲͰίϝϯτ • ։ൃ
• ։ൃɺ༷ࡦఆશମΛΤϯδχΞ2, 3໊Ͱߦ͏
νʔϜ͕গͳ͍ͱɺ ࡞ۀ / ਓ͕ΒΜͰ ਏ͍ݱʹͳΔͷͰʁ
ͦ͏Ͱͳ͍Ͱ͢Αʂ
খنνʔϜͷϝϦσϝ • ҙࢥܾఆ͕୯७ʹ্ ͕Δ • Ϗδϣϯͷޡ͕ࠩগͳ͘ ͯ͢Ή • ਐḿ֬ೝʹཁ͢Δ͕࣌ؒ গͳ͍
• গͰΓΔ੍ => ҙࣝతʹແବͳ։ൃ Λ͠ͳ͘ͳΔ ϝϦοτ σϝϦοτ • ୯७ʹ࣮Մೳͳػೳͷ ͕ݮΔ • ٕज़ελοΫ͕ภΔͱΧ όʔࠔ • ༷ݮͷྗΛ੯͠Ή ͱࣦഊ͍͢͠
খنνʔϜͷϝϦσϝ • ҙࢥܾఆ͕୯७ʹ্ ͕Δ • Ϗδϣϯͷޡ͕ࠩগͳ͘ ͯ͢Ή • ਐḿ֬ೝʹཁ͢Δ͕࣌ؒ গͳ͍
• গͰΓΔ੍ => ҙࣝతʹແବͳ։ൃ Λ͠ͳ͘ͳΔ ϝϦοτ σϝϦοτ • ୯७ʹ࣮Մೳͳػೳͷ ͕ݮΔ • ٕज़ελοΫ͕ภΔͱΧ όʔࠔ • ༷ݮͷྗΛ੯͠Ή ͱࣦഊ͍͢͠
ࠓඞཁͳͷΛݟۃΊͯ ༰ࣻແ͘ྔΛݮΒ͢ ͕ॏཁ
ੜ࢈ੑΛ্͛ΔͨΊͷऔΓΈ • νʔϜنͷ੍ • ։ൃظؒͱ༷ͷ੍ • ֤ΤϯδχΞͷ୲ͷ֦ு • ։ൃϑϩʔͷࣗಈԽ •
ΠϯηϓγϣϯσοΩ • εϓϦϯτ • ੵۃతͳKPIڞ༗
։ൃظؒͱ༷ͷ੍ ෆཁͳػೳΛॳظ༷͔ΒΔج४ 1. ΞϓϦͷίϯηϓτΛ࠷খݶͷൣғͰݕূ͢Δͷʹඞཁ ͔ 2. ඦສDAUʹεέʔϧ͢Δମ੍͕͏͔ 3. ੳɾӡ༻ɾվળͷϑϩʔΛΓͳ͘౿ΉͨΊͷػೳ͕ ἧ͍ͬͯΔ͔
༷ΛΔͱྑ͍͜ͱ • ίϯϙʔωϯτؒͷ࣭͕ۉҰʹͳͬͯɺ ϦϦʔε࣌Ͱͷૈ͕ݮΔ • ͕໌ྎʹͳΔͷͰϞνϕͷԼ͕ গͳ͘ͳΔ • ୯७ʹૣ͘ؼΕΔ
ੜ࢈ੑΛ্͛ΔͨΊͷऔΓΈ • νʔϜنͷ੍ • ։ൃظؒͱ༷ͷ੍ • ֤ΤϯδχΞͷ୲ͷ֦ு • ։ൃϑϩʔͷࣗಈԽ •
ΠϯηϓγϣϯσοΩ • εϓϦϯτ • ੵۃతͳKPIڞ༗
֤ΤϯδχΞͷ୲ͷ֦ு ৽نࣄۀ։ൃࣨͷجຊελϯε ෯͍։ൃՄೳൣғ ࣄۀ࡞ΓʹϑΥʔΧε
෯͍։ൃՄೳൣғ ❌ ઙ͘͘ ઈରʹTܕਓࡐɺΠܕਓࡐͰߏ͢Δɻ ex) iOS͕ಘҙͰɺͦͷͰଞͷਓͷഒͷ ɹ ੜ࢈ੑΛग़ͤΔ͕ɺ͍͟ͱͳͬͨΒ ɹ αʔόʔαΠυରԠՄೳͰڵຯ͋Δɻ
ੜ࢈ੑΛ্͛ΔͨΊͷऔΓΈ • νʔϜنͷ੍ • ։ൃظؒͱ༷ͷ੍ • ֤ΤϯδχΞͷ୲ͷ֦ு • ։ൃϑϩʔͷࣗಈԽ •
ΠϯηϓγϣϯσοΩ • εϓϦϯτ • ੵۃతͳKPIڞ༗
খ͍͞νʔϜͰͷ࣮ελϯε ۪ʹҰ͔Β࣮ͯͨ͠Βؒʹ߹Θͳ͍ => ࣗಈԽͰ͖Δ࡞ۀపఈͯ͠ޮԽ
۩ମతͳվળϙΠϯτ • AWS OpsworksʹΑΔηοτΞοϓ • codenize-toolsʹΑΔInfrastructure as Code • DigdagʹΑΔETL
Workflow • CircleCI 2.0ʹΑΔtest, vet, deploy • Pushج൫ͳͲOSSͷAPIΛར༻
ੜ࢈ੑΛ্͛ΔͨΊͷऔΓΈ • νʔϜنͷ੍ • ։ൃظؒͱ༷ͷ੍ • ֤ΤϯδχΞͷ୲ͷ֦ு • ։ൃϑϩʔͷࣗಈԽ •
ΠϯηϓγϣϯσοΩ • εϓϦϯτ • ੵۃతͳKPIڞ༗
ΠϯηϓγϣϯσοΩͱʁ ϓϩδΣΫτͷશମ૾ (తɺഎܠɺ༏ઌॱҐɺํੑ)Λ తʹ͑ΔͨΊͷυΩϡϝϯτ ֎͚ͷҙٛ: తʹϓϩμΫτΛઆ໌Ͱ͖Δ ͚ͷҙٛ: Ϗδϣϯͷ౷Ұ
ཧ͢Δ߲ • ϓϩμΫτͷҙٛ(ͳͥզʑ͜͜ʹ͍Δͷ͔) • ΤϨϕʔλʔϐον༻ͷจݴ • Δ/Βͳ͍͜ͱϦετ • νʔϜߏ •
ඪKPIͱୡظؒ • είʔϓ, ༧ࢉ, ࣌ؒ, ࣭ͳͲͷΣΠτ • ࣮ࡍʹඞཁͳࢿݯ
ੜ࢈ੑΛ্͛ΔͨΊͷऔΓΈ • νʔϜنͷ੍ • ։ൃظؒͱ༷ͷ੍ • ֤ΤϯδχΞͷ୲ͷ֦ு • ։ൃϑϩʔͷࣗಈԽ •
ΠϯηϓγϣϯσοΩ • εϓϦϯτ • ੵۃతͳKPIڞ༗
KPT Keep: ࠓޙଓ͚͍͖ͯ͘ྑ͔ͬͨ͜ͱ Problem: վળ͖͢ Try: վળࢪࡦ৽ࢪࡦͱͯ͠ࢼ͢͜ͱ Λఆظత(݄Ұఔ)ʹ֬ೝ
εϓϦϯτ͝ͱͷҙࣝ߹Θͤ ࠓͷSprintͰूத͖͢͜ͱ ɹ࠷ॏཁKPIͷݟ͠ɺඪͷઃఆ εέδϡʔϧ ɹϦϦʔε༧ఆͱଧͪख ࠔΓ͝ͱ ɹ͙͢ରॲ͢Δ͔ஔ͍ͱ͍ͯΔ͖͜ͱ
ੜ࢈ੑΛ্͛ΔͨΊͷऔΓΈ • νʔϜنͷ੍ • ։ൃظؒͱ༷ͷ੍ • ֤ΤϯδχΞͷ୲ͷ֦ு • ։ൃϑϩʔͷࣗಈԽ •
ΠϯηϓγϣϯσοΩ • εϓϦϯτ • ੵۃతͳKPIڞ༗
ڞ༗ͯ͠·͔͢ʁ ڞ༗ํ๏ • Slack • ຖͷேձ • Sprint͝ͱͷৼΓฦΓ ͳͲͳͲ
ͳͥڞ༗͖͔͢ʁ ࣈਆΑΓਖ਼͍͠ ϏδϣϯνʔϜΛޑ͢Δͷʹྑ͍͕ɺ ࣈͱ͍͏ࣄ࣮͔ΒΛഎ͚ͯ ݴ͍༁ʹ͍ͬͯͳ͍͔ʁ ࣮ࡍͷϢʔβʔͷಈ͖Λݟͯɺ ҙຯͷ͋ΔվળํΛݟۃΊΔ
ͳͥڞ༗͖͔͢ʁ KPIʹޮ͔ͳ͍ࢪࡦΛଧ͍ͬͯͳ͍͔ʁ ࣮ࡍͷϢʔβʔͷಈ͖Λݟͯɺ ҙຯͷ͋ΔվળํΛݟۃΊΔ
ͳͥৗʹڞ༗͖͔͢ʁ ཧͱݱ࣮༰қʹͣΕΔ ͷͰɺ͍ͭͷ·ʹ͔ζϨ͕ੜ͡ͳ͍Α͏ʹৗʹࣈΛݟͯɺ ɾKPIͱͷࠩ ɾ૿ݮ, पظ ɾظతʹҙຯ͕͋ΔࢪࡦΛଧ͍ͯͯΔ͔ ͷೝࣝ߹ΘͤΛ͢Δɻ
ͲΜͳΛڞ༗͖͔͢ʁ • ظɾظܧଓ • ίϯόʔδϣϯ • ܧଓʹޮ͖͍͢ػೳͷར༻ • PushڐՄ, ։෧
• ABࢪࡦͷޮՌܭଌ݁Ռ • Ϣʔβʔ֫ಘܦ࿏ผ֫ಘɾܧଓ • ࠂޮՌ(CTR, CPI, CPD, etc…)
·ͱΊ • ੜ࢈ੑ = Output / Input • νʔϜߏɺKPIڞ༗ɺ༷ͷμΠΤοτɺ Ϗδϣϯ߹ΘͤɺࣗಈԽͳͲͳͲɺ
ΕΔ͜ͱΛຯʹɺॗʑͱɻ • શͯ৽نνʔϜͰΕͯΔ͜ͱɻ Ϧιʔεͷ͋ΔେنνʔϜͳΒঘߋΔ͖ɻ