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
Honoをフロントエンドで使う 3つのやり方
yusukebe
7
3.3k
dbt Pythonモデルで実現するSnowflake活用術
trsnium
0
150
『GO』アプリ バックエンドサーバのコスト削減
mot_techtalk
0
140
WebDriver BiDiとは何なのか
yotahada3
1
140
Conform を推す - Advocating for Conform
mizoguchicoji
3
690
責務と認知負荷を整える! 抽象レベルを意識した関心の分離
yahiru
2
400
SwiftUIで単方向アーキテクチャを導入して得られた成果
takuyaosawa
0
270
2024年のWebフロントエンドのふりかえりと2025年
sakito
2
250
2,500万ユーザーを支えるSREチームの6年間のスクラムのカイゼン
honmarkhunt
6
5.3k
Grafana Cloudとソラカメ
devoc
0
170
『テスト書いた方が開発が早いじゃん』を解き明かす #phpcon_nagoya
o0h
PRO
2
210
Writing documentation can be fun with plugin system
okuramasafumi
0
120
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
630
Navigating Team Friction
lara
183
15k
Producing Creativity
orderedlist
PRO
344
39k
BBQ
matthewcrist
87
9.5k
Code Review Best Practice
trishagee
67
18k
How to train your dragon (web standard)
notwaldorf
91
5.8k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
Six Lessons from altMBA
skipperchong
27
3.6k
Thoughts on Productivity
jonyablonski
69
4.5k
What's in a price? How to price your products and services
michaelherold
244
12k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1k
How GitHub (no longer) Works
holman
314
140k
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