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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
lni_T
October 30, 2019
Programming
1
850
FeatureFlagを用いた新機能の安全なマージ&リリース / FeatureFlag
lni_T
October 30, 2019
Tweet
Share
More Decks by lni_T
See All by lni_T
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
3
890
Rails産でないDBを Railsに引っ越すHACK - Omotesando.rb #110
lnit
1
260
ruby.wasmとWebSocketで遊ぼう!
lnit
0
230
ActiveRecordの力でDBのメタデータを迅速に解析する
lnit
6
3k
ruby.wasm × Service Workerでサーバーのいらないモックサーバーを作る
lnit
0
410
Railsアプリの仕様書を一瞬で作りたい話 - Omotesando.rb #99
lnit
1
400
ruby.wasm 最前線 2024 - wasmでMockServerをつくる #rubykaigi
lnit
2
4.3k
Turbolinksアレルギー患者に捧げるTurbo & Stimulusでの時短実装術 / Kaigi on Rails 2023
lnit
4
6.1k
ruby.wasmでブラウザを酷使してみよう / 2023-MatsueRubyKaigi
lnit
0
1.8k
Other Decks in Programming
See All in Programming
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
3
1.6k
CDIの誤解しがちな仕様とその対処TIPS
futokiyo
0
200
オブザーバビリティ駆動開発って実際どうなの?
yohfee
3
820
DSPy入門 Pythonで実現する自動プロンプト最適化 〜人手によるプロンプト調整からの卒業〜
seaturt1e
1
680
CSC307 Lecture 15
javiergs
PRO
0
240
どんと来い、データベース信頼性エンジニアリング / Introduction to DBRE
nnaka2992
1
280
AI時代のシステム設計:ドメインモデルで変更しやすさを守る設計戦略
masuda220
PRO
5
880
PostgreSQL を使った快適な go test 環境を求めて
otakakot
0
540
クライアントワークでSREをするということ。あるいは事業会社におけるSREと同じこと・違うこと
nnaka2992
1
330
AWS Infrastructure as Code の新機能 2025 総まとめ 〜SA 4人による怒涛のデモ祭り〜
konokenj
10
3.3k
Fundamentals of Software Engineering In the Age of AI
therealdanvega
1
240
株式会社 Sun terras カンパニーデック
sunterras
0
2.1k
Featured
See All Featured
The SEO identity crisis: Don't let AI make you average
varn
0
410
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
Navigating Team Friction
lara
192
16k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
200
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
380
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
140
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Building AI with AI
inesmontani
PRO
1
790
[SF Ruby Conf 2025] Rails X
palkan
2
820
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
140
Marketing to machines
jonoalderson
1
5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
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,ʂ ҆શͳϦϦʔεͷʲಛޮༀʳͰͳ͍Αʂ