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
ShoheiMitani
July 18, 2019
Programming
1
520
安全なリリースに向けた技術的アプローチ
大規模な新機能のリリース時に利用した段階的リリースの実装パターンの紹介をします。
ShoheiMitani
July 18, 2019
Tweet
Share
More Decks by ShoheiMitani
See All by ShoheiMitani
競馬で学ぶ機械学習の基本と実践 / Machine Learning with Horse Racing
shoheimitani
13
16k
2重リクエスト完全攻略HANDBOOK / Double Request Handbook
shoheimitani
9
11k
AIの全社活用を推進するための安全なレールを敷いた話
shoheimitani
3
1.3k
The Citadel
shoheimitani
0
190
Rails-ishなActiveRecordの操作方法
shoheimitani
0
200
自己実現のためのキャリア選択 / Choosing a Career Path for Self-Realization
shoheimitani
2
460
rails statsで大解剖 🔍 “B/43流” のRailsの育て方を歴史とともに振り返ります
shoheimitani
3
1.5k
法律に準拠した本人確認システムを0から作った話 〜家計簿プリカB/43でのeKYC開発実例〜
shoheimitani
3
1.4k
初めましてが多いチームの形成期にEMが取り組んだ事
shoheimitani
1
250
Other Decks in Programming
See All in Programming
Implementation Patterns
denyspoltorak
0
140
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
6
1.5k
Go コードベースの構成と AI コンテキスト定義
andpad
0
150
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
39
26k
AtCoder Conference 2025
shindannin
0
900
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
150
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
140
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
510
SQL Server 2025 LT
odashinsuke
0
120
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
600
CSC307 Lecture 01
javiergs
PRO
0
650
実は歴史的なアップデートだと思う AWS Interconnect - multicloud
maroon1st
0
300
Featured
See All Featured
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
690
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
Ethics towards AI in product and experience design
skipperchong
1
160
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.3k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
220
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
The untapped power of vector embeddings
frankvandijk
1
1.5k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
200
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Technical Leadership for Architectural Decision Making
baasie
0
200
Code Reviewing Like a Champion
maltzj
527
40k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.4k
Transcript
Re:valua t ion https://fril.jp/ L ead & Delight User F
irst Ownership Fail Smart ҆શͳϦϦʔεʹ͚ٕͨज़తΞϓϩʔν
None
3BLVNB4FSWJDF%FWFMPQNFOU(SPVQ 3BLVUFO JOD ࡾ୩ণฏ !TIPIFJ !4IPIFJ.JUBOJ
"HFOEB w ҆શͳϦϦʔεͬͯʁʁ w ࠷ۙϦϦʔεͨ͠ػೳͷ w ةݥͳϦϦʔεΛ͙ͨΊʹ w
'FBUVSF5PHHMFT w 'FBUVSF5PHHMFT͕ղܾͯ͘͠ΕΔ͜ͱ w 'FBUVSF5PHHMFTΛར༻ͯ͠Α͔ͬͨͱࢥ͏ͱ͜Ζ w 'FBUVSF5PHHMFTͷσϝϦοτ w ·ͱΊ
҆શͳϦϦʔεͬͯʁʁ
҆શͳϦϦʔεͬͯʁʁ ඦߦdઍߦͷมߋΛҰʹNBTUFSʹNFSHF
҆શͳϦϦʔεͬͯʁʁ ಈ࡞֬ೝςετΛਓͷΤϯδχΞ͔ͯ͠͠ͳ͍
҆શͳϦϦʔεͬͯʁʁ ϦϦʔεޙʹ୭ࢹ͠ͳ͍
҆શͳϦϦʔεͬͯʁʁ
࠷ۙϦϦʔεͨ͠ػೳͷ w ܾࡁʹ৽͍͠ࢧ͍ΦϓγϣϯΛՃ w ෆਖ਼ରࡦͷपลػೳՃ w ։ൃظؒɺؒ w
࠷ऴతʹे໊΄ͲͷΤϯδχΞ͕։ൃʹࢀՃ w dճఔϦϦʔε w ʹेສԁͷ͓͕ۚྲྀ௨͢ΔαʔϏε
࠷ۙϦϦʔεͨ͠ػೳͷ
w ػೳΛࡉ͔͍୯ҐͰϦϦʔε͠ w ϦϦʔεޙͷࢹΛଵΒͣ w ͕ൃੜͨ͠Β͙ʹ3PMMCBDL ةݥͳϦϦʔεΛ͙ͨΊʹ
Feature Toggles
'FBUVSF5PHHMFT 'FBUVSF5PHHMJOHJTBTFUPGQBUUFSOTXIJDIDBO IFMQBUFBNUPEFMJWFSOFXGVODUJPOBMJUZUPVTFST SBQJEMZCVUTBGFMZ IUUQTNBSUJOGPXMFSDPNBSUJDMFTGFBUVSFUPHHMFTIUNM0QT5PHHMFT
؆୯ʹݴ͏ͱʜ ৽چͷػೳΛ'MBHͷ0/0''ͰΓସ͑ΕΔΑ͏ʹ͢Δ ࣮ύλʔϯͷҰͭ 'FBUVSF5PHHMFT if Fril::FeatureToggles.v2_variation('sample_key', current_user, false)
# new_function else # existing_function end
ϥΫϚͷ'MBHͷछྨ w Ϣʔβʔ*%ͷඌܻϕʔεͰஈ֊ެ։ d w ϥϯμϜͳ֬Ͱͷެ։ w
ࢦఆͨ͠Ϣʔβʔ*%ϝʔϧΞυϨεͰͷެ։ ্هΛཧը໘͔Βࢦఆ͠ɺҙͷൣғͰػೳͷެ։Մೳ 'FBUVSF5PHHMFT
'FBUVSF5PHHMFT6TFDBTF <% if Fril::FeatureToggles.v2_variation(‘sample_key’, @current_user, false) %> <div
class="setting-box"> <p class=“new_function__text">৽ػೳΛ͝ར༻͍͚ͨͩ·͢ɻ</p> <p class="small-text"> <%= link_to '࣍ਐΉ', hoge_path, class: 'btn btn-primary btn-confirmation' %> </p> </div> <% end %> def pay_something amount_check use_balance use_point use_coupon if Fril::FeatureToggles.v2_variation(‘sample_key’, buyer, false) purchase end ྫ ը໘ʹ৽͍͠จݴɾϘοΫεΛՃ ྫ طଘͷॲཧʹ৽͍͠ॲཧΛՃ
w ։ൃதͷػೳΛNBTUFSʹNFSHFͰ͖Δ w ϦϦʔε࣌ʹେྔͷࠩΛNFSHF͢Δඞཁ͕ͳ͘ͳΔ w ଞͷνʔϜͷΤϯδχΞ͕ػೳΛΓɺཧղ͢Δ͜ͱ͕Մೳ w %&745(Ͱৗʹಈ࡞֬ೝ͕Մೳ
w ຊ൪ڥͰطଘػೳ͕ಈ࡞͢Δ͜ͱ͕୲อ w ։ൃڥͰ৽نػೳ͕ಈ࡞͢Δ͜ͱ͕୲อ w ෆ۩߹ΛૣظʹൃݟՄೳ w ஈ֊తެ։ʹΑͬͯ෦ͷϢʔβʔʹ͔͠Өڹ͕ग़ͳ͍ w ཧը໘͔ΒػೳΛ0''ʹͰ͖Δ w ಈ࡞͕୲อ͞Ε͍ͯΔػೳʹ͙ʹ͢͜ͱ͕Մೳ 'FBUVSF5PHHMFT͕ղܾͯ͘͠ΕΔ͜ͱ
'FBUVSF5PHHMFTΛར༻ͯ͠Α͔ͬͨͱࢥ͏ͱ͜Ζ
'FBUVSF5PHHMFTΛར༻ͯ͠Α͔ͬͨͱࢥ͏ͱ͜Ζ ଞΤϯδχΞ͕࣮࣌ʹҙࣝͰ͖Δ w %&745(ڥͰৗʹ0/ঢ়ଶʹ͓ͯ͘͠ w ଞҊ݅Ͱؔ࿈ػೳʹมߋ͕͋ͬͨ߹ʹɺίʔυϕʔ εͰӨڹൣғΛ֬ೝͰ͖Δ w
ผͷCSBODIͰ։ൃ͍ͯ͠Δͱؾ͚ͮͳ͍
'FBUVSF5PHHMFTΛར༻ͯ͠Α͔ͬͨͱࢥ͏ͱ͜Ζ ػೳͷॏཁʹԠͯ͡LFZͷׂԽͱϦϦʔεॱংΛܾఆ ϦϦʔε͍ͨ͠ػೳ ػೳ$ ʢۄػೳͷՃʣ ػೳ" ʢόοΫάϥϯυʣ ػೳ#
ʢσβΠϯมߋʣ LFZͷ͚ํͰׂͷڥքΛܾΊΒΕΔͷͰɺҊ݅ͷঢ়گʹԠׂͨ͡ൣғͷมߋ͕༰қ
'FBUVSF5PHHMFTΛར༻ͯ͠Α͔ͬͨͱࢥ͏ͱ͜Ζ ػೳͷॏཁʹԠͯ͡LFZͷׂԽͱϦϦʔεॱংΛܾఆ ػೳ$ ʢۄػೳͷՃʣ ػೳ" ʢόοΫάϥϯυʣ ػೳ# ʢσβΠϯͷมߋʣ
ˠˠ ˠˠ ˠˠ ׂͯ͠ϦϦʔε͢Δ͜ͱͰɺτϥϒϧͷӨڹΛ࠷খԽ
'FBUVSF5PHHMFTΛར༻ͯ͠Α͔ͬͨͱࢥ͏ͱ͜Ζ ϦϦʔεલʹνʔϜͰຊ൪Ϧϋʔαϧ w ϦϦʔεͷिؒલ͘Β͍ʹ࣮ࢪ w ڥґଘͷͷνΣοΫ w ৽نʹߏஙͨ͠ωοτϫʔΫ
w ຊ൪༻ͷ"1*,FZͰಈ࡞νΣοΫ w ϦϦʔε࣌ͷखॱΛࣄલʹ࣮ࢪՄೳ
'FBUVSF5PHHMFTͷσϝϦοτ w ίʔυ͕Ԛ͘ͳΓ͕ͪ w దͳϦϑΝΫλϦϯά͕ඞཁ w ΰϛ͕Γଓ͚Δ w
ϦϦʔε͕Λ͑ͨΒίʔυΛফ͢श׳͕ඞཁ w ςετ߲͕૿͑Δ w ϦάϨογϣϯςετ͕࠷ॏཁ
·ͱΊ
·ͱΊ ҆શʹϦϦʔε͢ΔͨΊʹɺ'FBUVSF5PHHMFT༗ޮͳखஈ w ສ͕Ұͷ3PMMCBDLखॱ͕ϑϨʔϜϫʔΫͱ͠ ͯΈࠐ·Ε͍ͯΔ w ेͳಈ࡞֬ೝΛ͢ΔػձΛ࡞ΕΔ w
ϦϦʔεखॱʹϦεΫϔοδ͕Έࠐ·Εͯ ͍Δ͜ͱ͕֎ͷؔऀʹઆ໌Մೳ w ͦΕʹΑΓɺ։ൃνʔϜ͕ਫ਼ਆతʹ҆ఆ͠ɺ ػೳͷ։ൃมߋΛڪΕͳ͘ͳΔ
ੵۃ࠾༻தʂ