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
Feature FlagsのDX/UXの 頂点「 DevCycle 」に 辿り着くまでの道のり
Search
Gunther Brunner
October 26, 2023
Programming
5
1.4k
Feature FlagsのDX/UXの 頂点「 DevCycle 」に 辿り着くまでの道のり
Gunther Brunner
October 26, 2023
Tweet
Share
More Decks by Gunther Brunner
See All by Gunther Brunner
OpenSaaS Studio - 強いSaaSを作り続けるOpenSaaS Studioの挑戦
gunta
3
2.9k
OpenSTF @ Test Engineers' Meetup #3
gunta
1
1.3k
Android Testing Bootcamp #2: OpenSTF
gunta
1
1.3k
Chrome Tech Night 8 - STF
gunta
0
140
CAOS 2015 Summer: Introducing Hayabusa
gunta
0
950
CAOS 2015 Summer: Introducing STF (Smartphone Test Farm)
gunta
1
1.6k
CAOS 2015 Summer: Hayabusa Internals
gunta
0
760
画像変換Night「ImageHayabusa」デザイン作業効率化
gunta
6
12k
Are mobile HTML5 3D apps possible right now?
gunta
0
140
Other Decks in Programming
See All in Programming
クリーンアーキテクチャから見る依存の向きの大切さ
shimabox
2
380
Pythonでもちょっとリッチな見た目のアプリを設計してみる
ueponx
1
570
Conform を推す - Advocating for Conform
mizoguchicoji
3
690
『テスト書いた方が開発が早いじゃん』を解き明かす #phpcon_nagoya
o0h
PRO
2
260
『品質』という言葉が嫌いな理由
korimu
0
160
なぜイベント駆動が必要なのか - CQRS/ESで解く複雑系システムの課題 -
j5ik2o
11
3.8k
Djangoアプリケーション 運用のリアル 〜問題発生から可視化、最適化への道〜 #pyconshizu
kashewnuts
1
250
Honoをフロントエンドで使う 3つのやり方
yusukebe
7
3.3k
Rubyで始める関数型ドメインモデリング
shogo_tksk
0
110
Multi Step Form, Decentralized Autonomous Organization
pumpkiinbell
1
750
GoとPHPのインターフェイスの違い
shimabox
2
190
仕様変更に耐えるための"今の"DRY原則を考える / Rethinking the "Don't repeat yourself" for resilience to specification changes
mkmk884
0
220
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Site-Speed That Sticks
csswizardry
4
380
The Language of Interfaces
destraynor
156
24k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Unsuck your backbone
ammeep
669
57k
The Invisible Side of Design
smashingmag
299
50k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.1k
Become a Pro
speakerdeck
PRO
26
5.1k
Bootstrapping a Software Product
garrettdimon
PRO
306
110k
Speed Design
sergeychernyshev
27
790
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.3k
Transcript
'FBUVSF'MBHTͷ%969ͷ ʮ %FW$ZDMF ʯʹ ḷΓண͘·ͰͷಓͷΓ (ÛOUIFS#SVOOFSʢϒϧϯφʔάϯλʣ
ࣗݾհ r จ෦Պֶলͷࠃඅ֎ࠃਓཹֶੜͱͯ͠དྷཹֶ r 6Q'SPOUJFSʢגʣ ΫϦΤΠςΟϒσΟϨΫλʔɾΤϯδχΞ r ʢגʣ$ZCFS"HFOU ϑϩϯτΤϯυ։ൃ
r 0QFO45'ɿ044Λاըɾશൠ։ൃ r )BZBCVTBɿࣾ4BB4ΛاըɾϚωδϝϯτ r ϦϞͯͳ͠ɿϑϩϯτΤϯυɾ%FW0QT r ʢגʣ"*4IJGU --.Λ׆༂ͨ͠ϓϩμΫτσβΠϯɾΤϯδχΞ @gunta85
0QFO45' 0 Q F O 4 P V S
D F
"OESPJEの実機を リアルタイムに操作 年に企画・開発 テスト自動化用の"1* も用意
ຊͷ 'FBUVSF'MBHT ٕज़બఆͷಓͷΓ %FW$ZDMFͱ %FW$ZDMF $50ͷ ٕज़ઓུ
ٕज़બఆͷಓͷΓ $)"15&3
None
8FCQBDLͷॳຊޠهࣄΛهࡌ
%FW$ZDMFͷॳຊޠهࣄΛهࡌ
3FRVJSF+4 8FCQBDL 7JUF ຊͷٕज़࠾༻ฏۉ̎ʙͷΕ
ӳޠͰపఈతʹௐਚ͘͢ ຊޠͷهࣄͳ͍߹͕ଟ͍ɻ
Stay on the shoulder of the giants •طଘͷٕज़Λར༻͢Δ͜ͱͰ ϝϯςϦεΫΛݮ •৽͍͠ंྠΛ࠶ൃ໌ͤͣʹɺۀքඪ४ͷ
ٕज़ϑϨʔϜϫʔΫΛར༻ Work Smarter, Not Harder ٕज़બఆ ͷ ॏཁੑ •ޮతͳํ๏ͰඪΛୡ͢Δ •ϨόϨοδΛޮ͔ͤͯɺ গͳ͍։ൃͰେ͖ͳՌΛಘΔ
None
None
ιϦϡʔγϣϯ 3FTFBSDI &WFSZXIFSF "MM"U0ODF Ϧαʔν
ཁ݅ఆٛ ϓϩδΣΫτͷχʔζΛ໌֬ʹ͢Δ ࢢௐࠪ طଘͷղܾࡦͱςΫϊϩδʔΛൺֱςʔϒϧ ʹ·ͱΊͯධՁ͢Δ ϢʔβʔϨϏϡʔͱ࣮ࡍʹ৮ͬͯΈΔ ࣮ࡍͷධՁͱϑΟʔυόοΫΛௐࠪ͠ɺ༗ྗީิΛ৮Δ ҰΛ͔͚ͯ
4BB4 ຊͰϝδϟʔͳ4BB4Ҏ֎ɺ ಛʹݟམͱ͕ͪ͠
4BB4ͱ044ͷ ࠷ݶൺֱϙΠϯτ ίετ %9ʢ։ൃऀମݧʣ ΧελϚΠζՄೳੑ αϙʔτ 69ʢϢʔβମݧʣ
ΛҾͬுΒΕͳ͍ͨΊͷ ΞʔΩςΫνϟͷॏཁੑ εέʔϥϏϦςΟ কདྷతʹن͕େ͖͘ͳͬͨ࣌ɺ ͑ΒΕΔ͔ ϨΠςϯγ ج൫ͱͳΔͨΊɺ શମͷϘτϧωοΫʹͳΒͳ͍͔
%9ʢ։ൃମݧʣ ָ͘͠ɾΑΓ͘ΕΔ͜ͱʹΑͬͯ ੜ࢈ੑΛߴΊΒΕΔ͔
'FBUVSF'MBHT
%03"ʢ'PVS,FZTʣ ͱ (PPHMF͕࣮ߦ͍ͯ͠Δ%FW0QT3FTFBSDI BOE"TTFTTNFOU %03" ͱ͍͏࠷େڃϦ αʔνϓϩάϥϜͷݚڀ݁ՌʹΑΔͱɺ։ൃ αΠΫϧͷεϐʔυ্͕͕ΔͱɺࣄۀՁ ্͕Δͱ͍͏͜ͱ͕໌Β͔ʹͳ͍ͬͯ·͢ɻ
τϥϯΫϕʔε։ൃͷඞཁੑ トランクベース ߴͳ։ൃαΠΫϧΛ࣮ݱ͢ΔͨΊͷҰͭ ͷखஈͱͯ͠ɺτϥϯΫϕʔε։ൃ͕ ͞Ε͍ͯ·͢ɻ ͔͠͠ɺτϥϯΫϕʔε։ൃΛಋೖ͢Δʹ ɺϑΟʔνϟʔϑϥάͷٕज़͕ඞཁෆՄ ܽͰ͢ɻ ҆શ͔ͭਝʹ৽ػೳΛϦϦʔε͕Մೳͱ
ͳΓ·͢ɻ リスク削減 τϥϯΫϕʔε։ൃΛਐΊ͍ͯ͘͏ͪʹɺ ϢʔβͷѱӨڹΛ࠷খݶʹ͢ΔͨΊʹɺ ʮ৽ػೳʯΛϑϥάԽ͠ಈతʹཧ͢Δ ඞཁੑ͕ग़͖ͯ·͢ɻ
フィーチャー フラグの
フィーチャー フラグの 比較,1* ଟ͘ͷϑΟʔνϟʔϑϥάγεςϜ͕ ଘࡏɻ ฐࣾͷ044ࣾγεςϜͱͯ͠ ʮ#VDLFUFFSʯɻ ༗໊ͳ4BB4ͱͯ͠ʮ-BVODI%BSLMZʯ ͳͲɺ༷ʑͳબࢶ͕͋Γ·͢ɻ
Ձ֨ ߴֹͳαʔϏε͕ଟ͍ ༻ڥ αʔόʔɺΫϥΠΞϯτɺϞόΠ ϧΞϓϦɺΤοδɺΦϯϓϨͳͲɺ ଟ༷ͳڥͰͷར༻͕Մೳ͔ 4%,ͷ๛͞ νʔϜͰͷಋೖΛ༰қʹ͢Δ4%, ͷఏڙ ύϑΥʔϚϯε
ϨΠςϯγ͔Ͳ͏͔
༻ڥ ఏڙ4%, NT ϨΠςϯγ Ձ֨ɾྉۚମܥɾӡ༻ਓݖඅ
0QFO'FBUVSFඪ४ͱ ϑΟʔνϟʔϑϥάཧͷΦʔϓϯͳελ ϯμʔυͰ͢ɻಛఆͷϕϯμʔґଘͳ͠ʹ "1*Λఆٛͨ͠Γ4%,Λఏڙ͠·͢ɻ ϑΟʔνϟʔϑϥάք۾ͷΤίγεςϜΛ ݎ࿚ʹൃలͤ͞Δ͜ͱΛతͱ͍ͯ͠·͢ɻ ͜ͷඪ४ʹॱक͍ͯ͠ΔϕϯμʔϩοΫ ΠϯΛ͗ɺඞཁͰ͋Ε͍ͭͰଞͷϕ ϯμʔʹΓ͑Δ͜ͱ͕؆୯ʹͳΓ·͢ɻ とは?
ロックインされない
ʢޙʣ 'FBUVSF'MBHTͷ ϕϯμʔΛ ൺֱ͠·ͨ͠ CZ (ÛOUIFS#SVOOFS
ੈͷதͷϕϯμʔൺֱදʢݸʣ ϕϯμʔ αʔόʔ 4%, ΫϥΠΞϯτ 4%, ϦΞϧλΠϜ ߋ৽
&EHFॲཧ 0QFO 'FBUVSF DevCycle LaunchDarkly ConfigCat Split.io Optimizely
ੈͷதͷϕϯμʔൺֱදʢݸʣ ϕϯμʔ αʔόʔ 4%, ΫϥΠΞϯτ 4%, ϦΞϧλΠϜ ߋ৽
&EHFॲཧ 0QFO 'FBUVSF VWO Statsig CloudBees Molasses Harness
ੈͷதͷϕϯμʔൺֱදʢݸʣ ϕϯμʔ αʔόʔ 4%, ΫϥΠΞϯτ 4%, ϦΞϧλΠϜ ߋ৽
&EHFॲཧ 0QFO 'FBUVSF Firebase Remote Config Growthbook AWS Evidently Bugsnag Posthog
ੈͷதͷϕϯμʔൺֱදʢݸʣ ϕϯμʔ αʔόʔ 4%, ΫϥΠΞϯτ 4%, ϦΞϧλΠϜ ߋ৽
&EHFॲཧ 0QFO 'FBUVSF Flagsmith Unleash Flipt Bucketeer Flargd
ൺֱͨ͠ ॴײ
%FW$ZDMF ύϑΥʔϚϯεɺ%9ɺ 69͕࠷༏ल -BVODI%BSLMZ ΠϯςάϨʔγϣϯɺ ख़ߴ͍͕ɺྉۚ 1PTU)PH 044͋Γɺόϥϯε औΕ͍ͯΔ 4UBUTJH
ྉۚମܥ͕ັྗ ࠾༻ͯ͠ྑ͍ ͱఆੑධՁͨ͠ 4BB4
6OMFBTI 044ͷதͰ͍͕࠷ ͋Δ͕ɺ4BB4൛ߴ͍ 'MBH4NJUI 4BB4൛ྑ৺తͳྉۚ #VDLFUUFS ฐ͔ࣾΒެ։͞Ε͔ͨ ΓͰظͷ044 'MJQU γϯϓϧɺ
4BB4൛ͳ͍ ϝϯς͞Ε͍ͯ Δ044
ϝϯς͞Ε ͳ͘ͳͬͨ 044 'MBSH 5XP'MBHT ྆ํ044ͱ$MPVEGMBSF8PSLFSTΛલఏͱͨ͠ &EHFΞʔΩςΫνϟͰ͕͢ɺ ೦ͳ͕Βϝϯς͞Εͳ͘ͳΓ·ͨ͠ɻ
(PPHMF'JSFCBTF 3FNPUF$POGJH Ӭٱແྉັྃతɻ ϨΠςϯγٴͼαʔόʔ 4%,͕ͳ͍ɺૉత "84$MPVE8BUDI &WJEFOUMZ ྉ͚ۚͩັྃతɻ %9ෆࡏ (PPHMFͱ
"NB[PO
69ͱ ϨΠςϯγͷॏཁੑ
69ͱϨΠςϯγɿNTͷน Edgeの時代が到来し、ユーザのUX体験がさらに重要と なった。ドハティの閾値の指標によると、ユーザの生産 性が落ちないためのレスポンスタイムの上限は400msと されてきた。しかし、最近の人気アプリ(Figma、Linear やCron等)の反応速度の動向は、100ms以下になってい ます。一般的なフィーチャーフラグシステムでは、シス テムのアーキテクチャ上この100msを実現するのは難し い。一部のSaaSはUXを考慮して、Edgeにキャッシュを載
せますが、DBや処理自体はEdgeではないです。 そこで注目したいのが、エッジで実装されてるフィー チャーフラグシステム。 &EHF$PNQVUJOHͱ0GGMJOF 'JSTU
%FW$ZDMFͷ
%FW$ZDMFͷొ ΫϥυΤοδͰͷ ߴͳϑΟʔνϟʔϑϥάγες ϜΛݟ͚ͭͨͷ͕ʮ%FW$ZDMFʯ Ͱ͢ɻ ཁ݅Λຬͨͨ͠
%FW$ZDMFͷϝϦοτ NTҎԼͷϨΠςϯγ ߴͳϨεϙϯε 4%,ͷ๛͞ ಋೖ͕༰қ ྉۚମܕ ."6՝ۚͰ͕͢ɺՁ֨໘Ͱྑ৺తͳྉۚɻ
͍͢͞ %9ɾ69͕ײతɻ74$PEFͷ&YUFOTJPO ͋Δɻ
%FW$ZDMFͷϝϦοτ ϦΞϧλΠϜߋ৽ #VTJOFTTNPEFMEFTJHOHFOFSBMMZSFGFST UPUIFBDUJWJUZPGEFTJHOJOHBDPNQBOZT CVTJOFTTNPEFM 0QFO'FBUVSFରԠ 5IFQSPDFTTPGCVTJOFTTNPEFMEFTJHO
JTQBSUPGCVTJOFTTTUSBUFHZ#VTJOFTT NPEFMEFTJHOBOEJOOPWBUJPOSFGFSUP EFGJOFTJUTCVTJOFTTMPHJD ϦΞϧλΠϜߋ৽ 44&ܦ༝Ͱߋ৽͞ΕΔ -PDBM#VDLFUJOH &EHFΑΓߋʹߴͳϩʔΧϧॲཧɻ
ͷ ༏Εٕͨज़ઓུ $)"15&3
ΞʔΩςΫνϟ
&EHF'JSTUͱ8"4. %FW$ZDMFΛ։ൃ͍ͯ͠Δاۀ5BQMZUJDTࣾɻ 5BQMZUJDT͔ࣾΒ5BQMZUJDTͱ͍͏"#ςετͷ4BB4Λ։ൃ͖͕ͯͨ͠ɺ εέʔϥϏϦςΟɺϨΠςϯγٴͼ%9Λվળ͢ΔͨΊʹɺ%FW$ZDMFͱ͍ϓϩμΫτΛ։ൃ͢Δ͜ͱʹͳΓ·ͨ͠ɻ &EHF'JSTU ͯ͢Λ&EHFͰ࣮ߦͱ͍͏ΞʔΩ ςΫνϟʹ͠·ͨ͠ɻॲཧ $MPVEGMBSF8PSLFSTɺ%#
.BDSPNFUBɺ44&ϓογϡ"CMZ ͱɺࢥ͍ͬͨߴ&EHF'JSTU ͳٕज़બఆͷܾஅΛԼ͍ͯ͠·͢ɻ ΫϩεϓϥοτϑΥʔϜͷ4%,ͷύ ϑΥʔϚϯεΛ࠷େݶʹ͢ΔͨΊʹ ຆͲ8"4.ʢ"TTFNCMZ4DSJQUʣ Ͱ࣮͞Ε͍ͯ·͢ɻ(Pͷ4%,ͩ ͚8FC"TTFNCMZͰͳ͘ɺߋʹ ߴͳϚϧνεϨουॲཧͷύ ϑΥʔϚϯεΛൃشͰ͖ΔͨΊʹω ΠςΟϒ(PͰ࣮͞Ε͍ͯ·͢ɻ 8"4.
ͷ αϙʔτ $)"15&3
%FW$ZDMFͷ ·ͩ%FW$ZDMFʹ՝ۚͨ͜͠ͱ͕ͳ͍ʹ͔ ͔ΘΒͣɺ ࣭ɾཁ͕͋ͬͨͷͰɺ%JTDPSEͰ͛ͯ ΈͨΒɺ࣌ؒʹ)FBEPG1SPEVDUʢ 1E.ʣ͔ΒճΛ͖ɺߋʹۙͷެ ։ϩʔυϚοϓʹ͢Ͱʹࡌ͍ͬͯΔͱڭ͑ͯ ͍͍ͨͩͨͷͰɺਆͳରԠͰײΛ࣋ͪ· ͨ͠ɻ
·ͱΊ
։ൃαΠΫϧεϐʔυࣄۀՁʹ݁ 5SVOL#BTF։ൃͱ 'FBUVSF'MBHT͔ܽͤͳ͍ ߴ·Δ69ͷظʹԠ͑ΔͨΊʹ %FW$ZDMFͷΑ͏ͳ ߴγεςϜͷಋೖ͕伴 ։ൃʹखΛग़͢લʹɺ ϦαʔνΛ͔ͬ͠Γ
3FTFBSDI&WFSZUIJOH &WFSZXIFSF"MM"U0ODF *O &OHMJTI (ÛOUIFS#SVOOFS
None
"*4IJGUͰҰॹʹಇ͖͍ͨ ΤϯδχΞͷ࠾༻ʹྗΛೖΕ͍ͯ·͢ʂ ٕज़ྖҬ "*ΤϯδχΞʢ1ZUIPOɺ--.ʣ αʔόʔΤϯδχΞʢ(PMBOHɺ$MPVEGMBSF 8PSLFSTʣ ϑϩϯτΤϯδχΞʢ5ZQF4DSJQUɺ3FBDUʣ オンライン・19時以降の面談も可能です! カジュアル面談フォーム
https://hrmos.co/pages/cyberagent-group/jobs/1826557091831955459 @gunta85