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
FeatureFlagを用いた新機能の安全なマージ&リリース / FeatureFlag
Search
lni_T
October 30, 2019
Programming
1
770
FeatureFlagを用いた新機能の安全なマージ&リリース / FeatureFlag
lni_T
October 30, 2019
Tweet
Share
More Decks by lni_T
See All by lni_T
ActiveRecordの力でDBのメタデータを迅速に解析する
lnit
6
2.7k
ruby.wasm × Service Workerでサーバーのいらないモックサーバーを作る
lnit
0
270
Railsアプリの仕様書を一瞬で作りたい話 - Omotesando.rb #99
lnit
1
270
ruby.wasm 最前線 2024 - wasmでMockServerをつくる #rubykaigi
lnit
2
3.7k
Turbolinksアレルギー患者に捧げるTurbo & Stimulusでの時短実装術 / Kaigi on Rails 2023
lnit
4
5.5k
ruby.wasmでブラウザを酷使してみよう / 2023-MatsueRubyKaigi
lnit
0
1.5k
ブラウザで「今すぐ」gemを読み込む方法 / Load-gem-from-browser-JUST-NOW
lnit
0
1.2k
Ruby Wasmのおさらいと活用方法を探る / After-Rubykaigi-2022-ruby-wasm
lnit
0
480
Rails JSON APIとサービス高速化 / JSON Serializer 2020
lnit
9
5.4k
Other Decks in Programming
See All in Programming
海外のアプリで見かけたかっこいいTransitionを真似てみる
shogotakasaki
1
170
MCP世界への招待: AIエンジニアが創る次世代エージェント連携の世界
gunta
4
900
国漢文混用体からHolloまで
minhee
1
180
PHPで書いたAPIをGoに書き換えてみた 〜パフォーマンス改善の可能性を探る実験レポート〜
koguuum
0
150
AI Agents with JavaScript
slobodan
0
220
Defying Front-End Inertia: Inertia.js on Rails
skryukov
0
470
AWSで雰囲気でつくる! VRChatの写真変換ピタゴラスイッチ
anatofuz
0
150
「影響が少ない」を自分の目でみてみる
o0h
PRO
2
1.1k
リストビュー画面UX改善の振り返り
splcywolf
0
130
API for docs
soutaro
2
1.2k
Vibe Codingをせずに Clineを使っている
watany
17
6.2k
メモリウォールを超えて:キャッシュメモリ技術の進歩
kawayu
0
1.9k
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
For a Future-Friendly Web
brad_frost
176
9.7k
The Pragmatic Product Professional
lauravandoore
33
6.5k
How GitHub (no longer) Works
holman
314
140k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Designing for humans not robots
tammielis
252
25k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
Product Roadmaps are Hard
iamctodd
PRO
52
11k
How to Think Like a Performance Engineer
csswizardry
23
1.5k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Why Our Code Smells
bkeepers
PRO
336
57k
Music & Morning Musume
bryan
47
6.5k
Transcript
'FBUVSF'MBHΛ༻͍ͨ ৽ػೳͷ҆શͳϚʔδϦϦʔε !MOJ@5 .FFUVQGPS3BJMTFOHJOFFST
ࣗݾհ w 5XJUUFS!MOJ@5 (JU)VC!MOJU w .FE1FFS&OHJOFFS ʙ w ͖ͳ3BJMTͷϝιου
QSFTFODF w ݏ͍ͳ3BJMTͷϝιου BDDFQUT@OFTUFE@BUUSJCVUFT@GPS
ΫϦχοΫ։ۀࢧԉ ϓϥοτϑΥʔϜ
ͭͬͨ͘ͷ ਤ্Ͱ ݅୳͠ ڝ߹ͷఁ ױऀ༧ଌ ͕Ͱ͖Δ͍ͭ͢͝
ͦΜͳ৽ػೳ։ൃͷࠔΓࣄ ͷղܾࣄྫ
ʮ৽αʔϏε࡞Δͧʂʯ
ʮͨ͘͞ΜػೳͰ͖ͨʯ ͦͷޙʜ
ڊେ'FBUVSF#SBODI
ڊେ'FBUVSF#SBODI ৽ػೳ·Ͱͷಛେػೳϒϥϯν ͭΒ͍ ϨϏϡʔ͕Ͱ͖ͳ͍ ຊମϒϥϯνͱͷဃ
ଞνʔϜͱͷڝ߹ ϦϑΝΫλϦϯάͯ͠িಥ
EFWຊͰ͍͖͍ͨ
ϒϥϯνઓུ ϓϧϦΫΤετΛࡉ͔͘ຊମʹϚʔδ͢Δઓུ Կߟ͑ͣʹ࠾༻͢ΔͱϦεΩʔ ػೳ·Ͱίʔυ͕ϦϦʔεෆՄঢ়ଶʹ ࡞Γ͔͚ͷػೳͰϝϯόʔશһͷڥ͕յΕͨΓ ϒϥϯνཧ͍ͨΜ
None
ʮΑ͠ɺϦϦʔεͩʜʯ Α͏͘ʜ
ʮ͋ʂຊ൪ʹมͳ ɹσʔλ͕ʂʯ
ʮ͋ΕɺઌํͷωοτϫʔΫʹ ͭͳ͕Βͳ͍ʯ
ຊ൪ڥόάͷๅݿ ༧ظͤ͵ͭΒ͍ σʔλىҼ ωοτϫʔΫىҼ ઃఆىҼ
ͦͷଞॾʑڥࠩ
ͳΜͱ͔͍ͨ͠ ϒϥϯν͍ͨΜ ຊ൪͜Θ͍
ղܾΞϓϩʔν͍Ζ͍Ζ ϒϥϯν͍ͨΜ ৫ߏͷมߋ ίʔυ҆ఆԽ ػೳΛࡉ͔͘࡞Δ
ϦϦʔεՄೳ࣭Λอͭ ຊ൪͜Θ͍ ݕূڥͷඋ ຊ൪ʹ͍ۙςετσʔλ ڥࠩͷআڈ ຊ൪Ͱಈ࡞ݕূ͢Δ
ղܾΞϓϩʔν͍Ζ͍Ζ ϒϥϯν͍ͨΜ ৫ߏͷมߋ ίʔυ҆ఆԽ ػೳΛࡉ͔͘࡞Δ
ϦϦʔεՄೳ࣭Λอͭ ຊ൪͜Θ͍ ݕূڥͷඋ ຊ൪ʹ͍ۙςετσʔλ ڥࠩͷআڈ ຊ൪Ͱಈ࡞ݕূ͢Δ
ૉૣ͘ϦϦʔεՄೳʹ͠ ຊ൪Ͱݕূ͠Α͏
'FBUVSF'MBH 5PHHMF
'FBUVSF'MBH ػೳ͕ಈ࡞͢Δಈ࡞͠ͳ͍ΛΓସ͑Δػߏ ιʔείʔυσϓϩΠ͢Δ͕ɺ ػೳʮಈ࡞͠ͳ͍ʯঢ়ଶʹ͓ͯ͘͠ Ϛʔδͯ͠ಈ࡞Өڹͳ͠ ϦϦʔεՄೳʂ
OFX
'FBUVSF'MBH ػೳ͕ಈ࡞͢Δಈ࡞͠ͳ͍ΛΓସ͑Δػߏ ςετϢʔβʔʹ͚ͩެ։Ͱ͖ΔΑ͏ʹ͢Δ Ұൠެ։લʹຊ൪ڥͰςετ ຊ൪ා͘ͳ͍ʂ OFX
5FTUFS
࣮ͯ͠Ͳ͏ͳ͔ͬͨ
'FBUVSFϒϥϯνͷૣظ߹ྲྀ όοΫΤϯυଆEFWFMPQຊ 13Ͱ։ൃ ϑϩϯτΤϯυଆ࠷ॳ'FBUVSFϒϥϯνʹͳ͕ͬͨʜ ͦͷޙEFWFMPQʹ߹ྲྀͯ͠13Ͱ։ൃ EFWFMPQ GFBUVSF
҆৺Ͱ͖ΔϦϦʔε σϞ༻ΞΧϯτͰҰ௨Γಈ͘͜ͱΛࣄલ֬ೝ
҆৺Ͱ͖ΔϦϦʔε Τϥʔ௨͕དྷͯམͪண͍ͯ֬ೝͰ͖Δ
࣮ํ๏ ࣗϓϩμΫτͰͷҰྫ
'MJQQFS
'MJQQFSHFN IUUQTHJUIVCDPNKOVOFNBLFSqJQQFS ϑϥάཧͱذ੍ޚͷΈΛఏڙͯ͘͠ΕΔ if Flipper.enabled?(:search) search_hoge else puts
'nothing...' end Flipper.enable(:search)
อଘઌHFNͰΓସ͑ ྫ"DUJWF3FDPSEͰ%#ʹอଘ NJHSBUJPOϑΝΠϧ࡞ 'MJQQFSར༻࣌ʹ"EBQUFSΛࢦఆ ଞʹ3FEJT .POHP%#ͳͲͳͲ
adapter = Flipper::Adapters::ActiveRecord.new flipper = Flipper.new(adapter) $ gem install flipper-active_record $ rails g flipper:active_record
ݸผϢʔβʔରԠ؆୯ class User def flipper_id "User;#{id}" end end # ----
Flipper[:stats].enable(user) Flipper[:stats].enabled?(user) # true Flipper[:stats].disable(user) Flipper[:stats].enabled?(user) # false
ཧ6*༻qJQQFSVJHFN
ར༻ྫ $POUSPMMFS7JFXͰ͍͍͢Α͏ϥοϓ CFGPSF@BDUJPOͳͲͰ0/0''֬ೝͯ͠ʹ͢ΔͳͲ module DarkLaunch extend ActiveSupport::Concern included
do helper_method :authorized_feature? end private def authorized_feature?(sym) Flipper[sym].enabled? current_user end end
৽ن1+ະ࣮1+ ಋೖݕ౼ͯ͠Έͯʂ
'FBUVSF'MBH ڧΈɾऑΈ
҆ఆͨ͠։ൃͷॿ͚ʹ ϒϥϯνΛຊମʹ߹ྲྀ͍ͤ͢͞ িಥ͕ى͖ͮΒ͍ ຊ൪ڥͰಈ࡞ݕূ͍͢͠ ΤϯυϢʔβʔʹެ։͢ΔϦεΫ͕େ෯ݮ
҆৺ײ
Γ͕͠༰қ ΞϓϦɾ%#ͷϩʔϧόοΫෛՙ͕ߴ͍ 'FBUVSF'MBHͷ߹ϫϯλονͰΓྃ͠
҆શ͔࣮࣍ୈ ʮຊʹ'MBHͰ0/0''͢Δ͔ʁʯ࣮࣍ୈ ͪΌΜͱ୯ମςετ݁߹ςετ͠Α͏ ʮ$POUSPMMFS࠹͍͚ͩͲɺ ɹผը໘͔ΒͷϦϯΫ͕Δόά͕ʜʯͱ͔ ʮίʔυ͕σϓϩΠ͞ΕΔʯϦεΫ͋Δ
ςετϦϦʔεઓུ͔ͬ͠ΓཱͯΑ͏
ཞ༻Α͘ͳ͍ ͨͩͷذॲཧͳͷͰɺར༻Օॴ͕૿͑ΔͱࡶʹͳΔɻ جຊϢʔβʹݟ͑ͳ͍෦͔Βී௨ʹ࣮ͭͭ͠ɺ ΤϯυϙΠϯτΛ࠹͍Ͱ͍͘ɹͱྑͦ͞͏ɻ
ର߅Ͱ͖ͳ͍τϥϒϧ͋Δ ྫ%#ϨΠϠʔͷ ECNJHSBUF࣮ߦ ॏ͍ΫΤϦॲཧதʹ৽ػೳ͚ͷ"-5&35"#-&ൃߦ ଧͪͲ͜Ζ͕ѱ͘ॏཁͳςʔϒϧ͕ϩοΫ
ˠαʔϏεஅ ϦϦʔε࣌ͷਚ͖ͳ͍ʜ
·ͱΊ ػೳ0/0''ͷػߏΛ࡞ͬͯͤʹͳΖ͏ʂ 'FBUVSF'MBH ·ͨ'FBUVSF5PHHMF 3VCZͷ߹ʮ'MJQQFSʯͱ͍͏HFN͕͑Δ
ଞʹʮ3PMMPVUʯͱ͔͍Ζ͍Ζ ͪΖΜࣗલ࣮Ͱ0,ʂ ҆શͳϦϦʔεͷʲಛޮༀʳͰͳ͍Αʂ