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
490
安全なリリースに向けた技術的アプローチ
大規模な新機能のリリース時に利用した段階的リリースの実装パターンの紹介をします。
ShoheiMitani
July 18, 2019
Tweet
Share
More Decks by ShoheiMitani
See All by ShoheiMitani
AIの全社活用を推進するための安全なレールを敷いた話
shoheimitani
2
660
The Citadel
shoheimitani
0
110
Rails-ishなActiveRecordの操作方法
shoheimitani
0
130
自己実現のためのキャリア選択 / Choosing a Career Path for Self-Realization
shoheimitani
1
260
rails statsで大解剖 🔍 “B/43流” のRailsの育て方を歴史とともに振り返ります
shoheimitani
3
1.4k
法律に準拠した本人確認システムを0から作った話 〜家計簿プリカB/43でのeKYC開発実例〜
shoheimitani
3
1.2k
初めましてが多いチームの形成期にEMが取り組んだ事
shoheimitani
1
220
ユーザーフレンドリーな取引明細のアーキテクチャ 〜VISAカードの複雑性に向き合う実践例〜
shoheimitani
5
3k
孤独のCTOグルメという やや奇抜な企画をやった目的と効果
shoheimitani
3
1.5k
Other Decks in Programming
See All in Programming
PipeCDのプラグイン化で目指すところ
warashi
1
290
CDK引数設計道場100本ノック
badmintoncryer
2
430
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
330
技術同人誌をMCP Serverにしてみた
74th
1
680
AIエージェントはこう育てる - GitHub Copilot Agentとチームの共進化サイクル
koboriakira
0
710
『自分のデータだけ見せたい!』を叶える──Laravel × Casbin で複雑権限をスッキリ解きほぐす 25 分
akitotsukahara
2
650
20250708_JAWS_opscdk
takuyay0ne
2
120
“いい感じ“な定量評価を求めて - Four Keysとアウトカムの間の探求 -
nealle
2
11k
フロントエンドのパフォーマンスチューニング
koukimiura
5
1.9k
PicoRuby on Rails
makicamel
2
140
Goで作る、開発・CI環境
sin392
0
260
Advanced Micro Frontends: Multi Version/ Framework Scenarios @WAD 2025, Berlin
manfredsteyer
PRO
0
380
Featured
See All Featured
Designing Experiences People Love
moore
142
24k
Being A Developer After 40
akosma
90
590k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
4 Signs Your Business is Dying
shpigford
184
22k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
The Cult of Friendly URLs
andyhume
79
6.5k
Documentation Writing (for coders)
carmenintech
72
4.9k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Balancing Empowerment & Direction
lara
1
450
Embracing the Ebb and Flow
colly
86
4.8k
Git: the NoSQL Database
bkeepers
PRO
430
65k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
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 ͦΕʹΑΓɺ։ൃνʔϜ͕ਫ਼ਆతʹ҆ఆ͠ɺ ػೳͷ։ൃมߋΛڪΕͳ͘ͳΔ
ੵۃ࠾༻தʂ