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の導入
Search
tinpay
September 20, 2019
Programming
0
460
モバイルアプリでのFeatureFlagの導入
モバイルアプリでFeature_Flagを導入したお話
tinpay
September 20, 2019
Tweet
Share
More Decks by tinpay
See All by tinpay
レガシーなiOSアプリのSwift化 〜5年分の成功と失敗事例〜
shoheifukui
0
120
モバイルアプリ開発チームをプラットフォームチームで分割した話
shoheifukui
0
350
iOSアプリの 大きな技術的負債に立ち向かう
shoheifukui
1
1.1k
ShareExtensionをためす
shoheifukui
2
1.6k
Other Decks in Programming
See All in Programming
GenU導入でCDKに初挑戦し、悪戦苦闘した話
hideg
0
160
LangGraphでのHuman-in-the-Loopの実装
os1ma
3
1.1k
Method Swizzlingを行うライブラリにおけるマルチモジュール設計
yoshikma
0
120
Prompt Cachingは本当に効果的なのか検証してみた.pdf
ttnyt8701
0
530
Scala におけるコンパイラエラーとの付き合い方
chencmd
2
420
AndroidアプリのUIバリエーションをあの手この手で確認する / Check UI variations of Android apps by various means
tkmnzm
1
140
Regular Expressions, REXML, Automata Learning
makenowjust
0
220
Shinjuku.rb#95:心の技術書紹介
free_world21
1
110
Increased Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
330
Android開発以外のAndroid開発経験の活かしどころ
konifar
2
960
The Shape of a Service Object
inem
0
520
From Idea to IDE: Developing Plugins for Android Studio
thisaay
1
170
Featured
See All Featured
Building Applications with DynamoDB
mza
90
6k
Designing with Data
zakiwarfel
98
5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
227
52k
A Philosophy of Restraint
colly
202
16k
BBQ
matthewcrist
83
9.2k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Unsuck your backbone
ammeep
667
57k
It's Worth the Effort
3n
182
27k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
36
1.7k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
230
17k
How to Ace a Technical Interview
jacobian
274
23k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Transcript
ϞόΠϧΞϓϦͰͷ'FBUVSF'MBHಋೖ 4FQ .PCJMF"DU04","
© Chatwork ࣗݾհ !2 $IBUXPSLגࣜձࣾ ΫϥΠΞϯτΞϓϦέʔγϣϯ։ൃ෦ Ҫɹষฏ J04ΞϓϦॻ͍ͨΓͯ͠·͢ UX!UJOQBZ
େࡕΦϑΟε കాʹҾͬӽ͠·ͨ͠
ౡͷ͋ͨΓ ص
ϞόΠϧΞϓϦͰ 'FBUVSF'MBHΛಋೖ͢Δ·Ͱ
© Chatwork 'FBUVSF'MBHʢ'FBUVSF5PHHMFʣͱ !6 ܧଓతϦϦʔεͱܧଓతσϓϩΠɺίʔσΟϯάʹ͍ͭͯͷϑΟʔυόοΫΛ։ൃऀͨͪʹ සൟʹఏڙͯ͘͠ΕΔɻ͜ΕΛ࣮ݱ͢Δʹɺෳͷ։ൃऀͨͪͷίʔυΛՄೳͳݶΓૣظʹ ౷߹͢Δ͜ͱ͕ඞཁʹͳΔɻ ػೳϒϥϯν͜ͷաఔʹൈ͚ಓΛ࡞ͬͯ͠·͏ɻػೳτάϧΛར༻͢Εɺ։ൃऀͨͪϝ ΠϯͷτϥοΫʹසൟʹιʔεΛ౷߹ͭͭ͠ɺ։ൃதͷػೳೖ͍͚ͬͯΔ࣮ߦܦ࿏ͷτά ϧΛʮ0''ʯʹ͓͚ͯ͠ɺͦͷػೳʮࢮΜͩʯঢ়ଶʹͳΔɻ৽͍࣮͠ߦܦ࿏Λ༗ޮʹ͢Δ
ͨΊͷ࿑ྗɺ୯ʹτάϧΛʮ0/ʯʹઃఆ͢Δ͚ͩͳͷͰɺेʹখ͍͞ɻ Ҿ༻ݩ8JLJQFEJB IUUQTKBXJLJQFEJBPSHXJLJϑΟʔνϟʔτάϧ
© Chatwork 'FBUVSF'MBHʢ'FBUVSF5PHHMFʣͱ !7 ݸผͷػೳͷ༗ޮແޮΛϑϥάΛར༻ͯ͠ཧ ͢ΔΈ wػೳΛ0''ʹͨ͠ঢ়ଶͰ͋Ε͍ͭͰϦϦʔεͰ͖ ΔͷͰɺػೳϒϥϯνͷੜଘظ͕ؒ͘ͳΔ
© Chatwork ࣮Πϝʔδ͜Μͳײ͡ !8 struct Feature { var isEnabled: Bool
var name: String } public final class FeatureFlag { static let shared = FeatureFlag() let featureA = Feature(isEnabled: true, name: "ػೳA") let featureB = Feature(isEnabled: true, name: "ػೳB") let featureC = Feature(isEnabled: true, name: "ػೳC") } class DemoViewModel { var message: Message? func delete(){ if FeatureFlag.shared.featureA.isEnabled { // ػೳA͕༗ޮͳ߹ displayAlert { self.message?.delete() } } else { self.message?.delete() } } }
Α͋͘Δέʔε
ෳਓͰ։ൃΛ͓͜ͳ͍ͬͯΔͱ ৽ػೳͷ։ൃ͕ ฒߦͰಈ͘έʔε
େ͖Ίͷػೳ"Ճ ͦͦ͜͜ͷػೳ#Ճ ͦͦ͜͜ͷػೳ$Ճ ਓͰ৽ػೳΛ։ൃ͍ͯ͠Δέʔε
'FBUVSF'MBHΛಋೖ͢Δલ
ػೳ͝ͱʹϒϥϯνΛ࡞Γ ͦͷϒϥϯνʹϚʔδ͍ͯ͘͠։ൃϑϩʔ ػೳ" ػೳ# ػೳ$
© Chatwork ՝ !14 ڊେͳ13ʹͳͬͯ͠·͏ ίϯϑϦΫτ͕େྔʹൃੜͯ͠ɺϚʔδ࡞ۀ͕େมʂ ֤ػೳͷ։ൃऀಉ࢜ͷίϛϡχέʔγϣϯίετ͕૿Ճʂ
ίϯϑϦΫτ͕େྔʹൃੜͯ͠ɺ Ϛʔδ࡞ۀ͕େมʂ ػೳ" ػೳ# ػೳ$ ͜͜ͷϚʔδ͕ ͘͢͝େมʂ
֤ػೳͷ։ൃऀಉ࢜ͷίϛϡχέʔγϣ ϯίετ͕૿Ճʂ ػೳ"ɿλΠϜϥΠϯػೳɺमਖ਼͍ͯͬͯ͠ΔΑɻ ػೳ#ɿͦͷमਖ਼ೖ͔ͬͯΒͷํ͕ػೳ#ରԠ͚͢͠Ͳɺ ػೳ"ͷϦϦʔε͍ͩͿઌͩΑͳ͊ɻͲ͏͠Α͏͔ɻ ػೳ$ɿλΠϜϥΠϯɺ͔ͨ͠͠Βमਖ਼ඞཁ͔ʜ ڞ༗͓͍ͯͨ͠΄͏͕͍͍͔ͳɻ
'FBUVSF'MBHΛಋೖͨ͠ޙ
13͕͙͢ʹϚʔδ͞ΕΔͷͰ ίϯϑϦΫτ͕ൃੜ͠ʹ͘͘ͳΔ ػೳ" ػೳ# ػೳ$ Ϛʔδָ͕ʂ
© Chatwork ࣮ࡍʹͬͯΈͨײ !19 w ৽ػೳͷ࣮͕ͲΜͲΜϚʔδ͞ΕΔΑ͏ʹͳͬͨ w ଞͷػೳ࣮ͷϦϦʔεΛͭඞཁ͕ͳ͘ͳͬͨ w 13͕খ͘͞ͳͬͨ
w ίϯϑϦΫτ͕ൃੜ͠ʹ͘͘ͳͬͨ w ػೳϦϦʔεΛίϯτϩʔϧͰ͖ΔΑ͏ʹͳͬͨ w ࣾϝϯόʔʹ͚ͩػೳΛ༗ޮʹ͢Δͱ͍͏Α͏ͳϑϩʔ͕؆୯ʹ࣮ݱͰ͖Δ w Γ͗͢ΔͱϦδΣΫτରʹͳΔͷͰؾΛ͚ͭΔඞཁ͋Γ
© Chatwork ࣮ࡍʹͬͯΈͨײ !20 w 4UPSZCPBSE্ͰͷذෆՄೳ w 4UPSZCPBSEͰQSPQFSUZΛ৭ʑઃఆ͍ͯ͠Δ߹qBHʹΑΔذ͕͍͠ ͕ɺ7JFX$POUSPMMFSͰͷذՄೳͳͷͰɺ͋Δఔ6*ͷذͰ͖Δ w
"#ςετͷج൫ͮ͘ΓʹͳΔ w ϑϥάʹΑͬͯػೳΛΓସ͑ΔͷͰɺ"#ςετ։ൃͷ࣮ʹࣅ͍ͯΔ
·ͱΊ
© Chatwork ·ͱΊ !22 'FBUVSF'MBHͷϝϦοτ w ͍ͭͰEFWFMPQʹ13ΛϚʔδͰ͖ΔΑ͏ʹͳͬͨ w ϦϦʔε൛ΞϓϦΛར༻ͯ͠ɺ৽ػೳΛૣ͘ఏڙͰ͖Δ 'FBUVSF'MBHΛͬͯࢥͬͨ͜ͱ
w 4UPSZCPBSEͰͷར༻͍͠ɺେ͖͗͢Δमਖ਼ʹ͍ͯͳ͍ w ϑϥάʹΑΔذͷ࣮Ҋ֎γϯϓϧͳͷͰɺ·ͣͬͯ ΈͯΑ͔ͬͨ
https://corp.chatwork.com/ja/recruit/engineer/ ϞόΠϧΞϓϦ ΤϯδχΞ ืूͯ͠·͢ʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠