Slide 1

Slide 1 text

'FBUVSF'MBHΛ༻͍ͨ ৽ػೳͷ҆શͳϚʔδϦϦʔε !MOJ@5 .FFUVQGPS3BJMTFOHJOFFST

Slide 2

Slide 2 text

ࣗݾ঺հ w 5XJUUFS!MOJ@5
 (JU)VC!MOJU w .FE1FFS&OHJOFFS ʙ  w ޷͖ͳ3BJMTͷϝιου
 QSFTFODF w ݏ͍ͳ3BJMTͷϝιου
 BDDFQUT@OFTUFE@BUUSJCVUFT@GPS

Slide 3

Slide 3 text

ΫϦχοΫ։ۀࢧԉ ϓϥοτϑΥʔϜ

Slide 4

Slide 4 text

ͭͬͨ͘΋ͷ ஍ਤ্Ͱ ෺݅୳͠ ڝ߹ͷఁ࡯ ױऀ਺༧ଌ ͕Ͱ͖Δ͍͢͝΍ͭ

Slide 5

Slide 5 text

ͦΜͳ৽ػೳ։ൃͷࠔΓࣄ ͷղܾࣄྫ

Slide 6

Slide 6 text

ʮ৽αʔϏε࡞Δͧʂʯ

Slide 7

Slide 7 text

ʮͨ͘͞ΜػೳͰ͖ͨʯ ͦͷޙʜ

Slide 8

Slide 8 text

ڊେ'FBUVSF#SBODI

Slide 9

Slide 9 text

ڊେ'FBUVSF#SBODI  ৽ػೳ׬੒·Ͱͷಛେػೳϒϥϯν  ͭΒ͍  ϨϏϡʔ͕Ͱ͖ͳ͍  ຊମϒϥϯνͱͷဃ཭  ଞνʔϜͱͷڝ߹  ϦϑΝΫλϦϯάͯ͠িಥ

Slide 10

Slide 10 text

EFWຊͰ͍͖͍ͨ

Slide 11

Slide 11 text

ϒϥϯνઓུ  ϓϧϦΫΤετΛࡉ͔͘ຊମʹϚʔδ͢Δઓུ  Կ΋ߟ͑ͣʹ࠾༻͢ΔͱϦεΩʔ  ػೳ׬੒·Ͱίʔυ͕ϦϦʔεෆՄঢ়ଶʹ  ࡞Γ͔͚ͷػೳͰϝϯόʔશһͷ؀ڥ͕յΕͨΓ ϒϥϯν؅ཧ͍ͨ΁Μ

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

ʮΑ͠ɺϦϦʔεͩʜʯ Α͏΍͘ʜ

Slide 14

Slide 14 text

ʮ͋ʂຊ൪ʹมͳ ɹσʔλ͕ʂʯ

Slide 15

Slide 15 text

ʮ͋ΕɺઌํͷωοτϫʔΫʹ ͭͳ͕Βͳ͍ʯ

Slide 16

Slide 16 text

ຊ൪؀ڥ͸όάͷๅݿ  ༧ظͤ͵໰୊ͭΒ͍  σʔλىҼ  ωοτϫʔΫىҼ  ઃఆ஋ىҼ  ͦͷଞॾʑ؀ڥࠩ෼

Slide 17

Slide 17 text

ͳΜͱ͔͍ͨ͠ ϒϥϯν͍ͨ΁Μ໰୊ ຊ൪͜Θ͍໰୊

Slide 18

Slide 18 text

ղܾΞϓϩʔν͍Ζ͍Ζ  ϒϥϯν͍ͨ΁Μ໰୊  ૊৫ߏ੒ͷมߋ  ίʔυ҆ఆԽ  ػೳΛࡉ͔͘࡞Δ  ϦϦʔεՄೳ඼࣭Λอͭ  ຊ൪͜Θ͍໰୊  ݕূ؀ڥͷ੔උ  ຊ൪ʹ͍ۙςετσʔλ  ؀ڥࠩ෼ͷআڈ  ຊ൪Ͱಈ࡞ݕূ͢Δ

Slide 19

Slide 19 text

ղܾΞϓϩʔν͍Ζ͍Ζ  ϒϥϯν͍ͨ΁Μ໰୊  ૊৫ߏ੒ͷมߋ  ίʔυ҆ఆԽ  ػೳΛࡉ͔͘࡞Δ  ϦϦʔεՄೳ඼࣭Λอͭ  ຊ൪͜Θ͍໰୊  ݕূ؀ڥͷ੔උ  ຊ൪ʹ͍ۙςετσʔλ  ؀ڥࠩ෼ͷআڈ  ຊ൪Ͱಈ࡞ݕূ͢Δ

Slide 20

Slide 20 text

ૉૣ͘ϦϦʔεՄೳʹ͠ ຊ൪Ͱݕূ͠Α͏

Slide 21

Slide 21 text

'FBUVSF'MBH 5PHHMF

Slide 22

Slide 22 text

'FBUVSF'MBH  ػೳ͕ಈ࡞͢Δಈ࡞͠ͳ͍Λ੾Γସ͑Δػߏ  ιʔείʔυ͸σϓϩΠ͢Δ͕ɺ
 ػೳ͸ʮಈ࡞͠ͳ͍ʯঢ়ଶʹ͓ͯ͘͠  Ϛʔδͯ͠΋ಈ࡞Өڹͳ͠  ϦϦʔεՄೳʂ OFX

Slide 23

Slide 23 text

'FBUVSF'MBH  ػೳ͕ಈ࡞͢Δಈ࡞͠ͳ͍Λ੾Γସ͑Δػߏ  ςετϢʔβʔʹ͚ͩެ։Ͱ͖ΔΑ͏ʹ͢Δ  Ұൠެ։લʹຊ൪؀ڥͰςετ  ຊ൪΋ා͘ͳ͍ʂ OFX 5FTUFS

Slide 24

Slide 24 text

࣮૷ͯ͠Ͳ͏ͳ͔ͬͨ

Slide 25

Slide 25 text

'FBUVSFϒϥϯνͷૣظ߹ྲྀ  όοΫΤϯυଆ͸EFWFMPQຊ 13Ͱ։ൃ  ϑϩϯτΤϯυଆ͸࠷ॳ͸'FBUVSFϒϥϯνʹͳ͕ͬͨʜ  ͦͷޙEFWFMPQʹ߹ྲྀͯ͠13Ͱ։ൃ EFWFMPQ GFBUVSF

Slide 26

Slide 26 text

҆৺Ͱ͖ΔϦϦʔε  σϞ༻ΞΧ΢ϯτͰҰ௨Γಈ͘͜ͱΛࣄલ֬ೝ

Slide 27

Slide 27 text

҆৺Ͱ͖ΔϦϦʔε  Τϥʔ௨஌͕དྷͯ΋མͪண͍ͯ֬ೝͰ͖Δ

Slide 28

Slide 28 text

࣮૷ํ๏ ࣗϓϩμΫτͰͷҰྫ

Slide 29

Slide 29 text

'MJQQFS

Slide 30

Slide 30 text

'MJQQFSHFN  IUUQTHJUIVCDPNKOVOFNBLFSqJQQFS  ϑϥά؅ཧͱ෼ذ੍ޚͷ࢓૊ΈΛఏڙͯ͘͠ΕΔ if Flipper.enabled?(:search) search_hoge else puts 'nothing...' end Flipper.enable(:search)

Slide 31

Slide 31 text

อଘઌ͸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

Slide 32

Slide 32 text

ݸผϢʔβʔରԠ΋؆୯ 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

Slide 33

Slide 33 text

؅ཧ6*༻qJQQFSVJHFN

Slide 34

Slide 34 text

ར༻ྫ  $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

Slide 35

Slide 35 text

৽ن1+ະ࣮૷1+ ಋೖݕ౼ͯ͠Έͯ͸ʂ

Slide 36

Slide 36 text

'FBUVSF'MBH ڧΈɾऑΈ

Slide 37

Slide 37 text

҆ఆͨ͠։ൃͷॿ͚ʹ  ϒϥϯνΛຊମʹ߹ྲྀͤ͞΍͍͢  িಥ͕ى͖ͮΒ͍  ຊ൪؀ڥͰಈ࡞ݕূ͠΍͍͢  ΤϯυϢʔβʔʹެ։͢ΔϦεΫ͕େ෯ݮ  ҆৺ײ

Slide 38

Slide 38 text

੾Γ໭͕͠༰қ  ΞϓϦɾ%#ͷϩʔϧόοΫ͸ෛՙ͕ߴ͍  'FBUVSF'MBHͷ৔߹ϫϯλονͰ੾Γ໭͠׬ྃ

Slide 39

Slide 39 text

҆શ͔͸࣮૷࣍ୈ  ʮຊ౰ʹ'MBHͰ0/0''͢Δ͔ʁʯ͸࣮૷࣍ୈ  ͪΌΜͱ୯ମςετ݁߹ςετ͠Α͏  ʮ$POUSPMMFS͸࠹͍͚ͩͲɺ
 ɹผը໘͔ΒͷϦϯΫ͕࢒Δόά͕ʜʯͱ͔  ʮίʔυ͕σϓϩΠ͞ΕΔʯϦεΫ͸͋Δ  ςετϦϦʔεઓུ͔ͬ͠ΓཱͯΑ͏

Slide 40

Slide 40 text

ཞ༻͸Α͘ͳ͍  ͨͩͷ෼ذॲཧͳͷͰɺར༻Օॴ͕૿͑Δͱ൥ࡶʹͳΔɻ  جຊ͸Ϣʔβʹݟ͑ͳ͍෦෼͔Βී௨ʹ࣮૷ͭͭ͠ɺ
 ΤϯυϙΠϯτΛ࠹͍Ͱ͍͘ɹͱྑͦ͞͏ɻ


Slide 41

Slide 41 text

ର߅Ͱ͖ͳ͍τϥϒϧ΋͋Δ  ྫ%#ϨΠϠʔͷ໰୊  ECNJHSBUF࣮ߦ  ॏ͍ΫΤϦॲཧதʹ৽ػೳ޲͚ͷ"-5&35"#-&ൃߦ  ଧͪͲ͜Ζ͕ѱ͘ॏཁͳςʔϒϧ͕ϩοΫ  ˠαʔϏεஅ  ϦϦʔε࣌ͷ໰୊͸ਚ͖ͳ͍ʜ

Slide 42

Slide 42 text

·ͱΊ  ػೳ0/0''ͷػߏΛ࡞ͬͯ޾ͤʹͳΖ͏ʂ  'FBUVSF'MBH ·ͨ͸'FBUVSF5PHHMF   3VCZͷ৔߹ʮ'MJQQFSʯͱ͍͏HFN͕࢖͑Δ  ଞʹ΋ʮ3PMMPVUʯͱ͔͍Ζ͍Ζ  ΋ͪΖΜࣗલ࣮૷Ͱ΋0,ʂ  ҆શͳϦϦʔεͷʲಛޮༀʳͰ͸ͳ͍Αʂ