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
SUZURIのAndroidアプリをFlutterで作っている話 / SUZURI-meets...
Search
Osamtimizer
May 14, 2020
Programming
23k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SUZURIのAndroidアプリをFlutterで作っている話 / SUZURI-meets-Flutter
Osamtimizer
May 14, 2020
More Decks by Osamtimizer
See All by Osamtimizer
SUZURIにおけるSREの取り組み/SRE-and-SUZURI
osamtimizer
0
1.4k
suzuri-data-driven-2020
osamtimizer
1
1.7k
pepabo-with-flutter-2020
osamtimizer
1
2.4k
Flutter+Providerでウィジェットのテストを書く/widget-test-with-provider
osamtimizer
0
1.9k
RubyのOSSコードリーディング / ruby-oss-code-reading
osamtimizer
4
3.3k
Other Decks in Programming
See All in Programming
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
180
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
450
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
160
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
560
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
130
その節約、円になってますか?
isamumumu
1
640
Android CLI
fornewid
0
200
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
190
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
140
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
160
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
110
What's New in Android 2026
veronikapj
0
240
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Practical Orchestrator
shlominoach
191
11k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
270
Designing for Performance
lara
611
70k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Building an army of robots
kneath
306
46k
A designer walks into a library…
pauljervisheath
211
24k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
4 Signs Your Business is Dying
shpigford
187
22k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Transcript
࣌ాཧ(.01FQBCP *OD ϖύϘɾͯͳٕज़େձʙ!ΦϯϥΠϯ 46;63*ͷ "OESPJEΞϓϦΛ 'MVUUFSͰ࡞͍ͬͯΔ
ϞόΠϧ8FCΞϓϦέʔγϣϯΤϯδχΞ ࣌ాཧ!PTBNUJNJ[FS 46;63*ࣄۀ෦ϓϩμΫτνʔϜ IUUQTPTBNUJNJ[FSIBUFOBCMPHDPN
None
ΦϦδφϧάοζ͕࡞ΕΔɺചΕΔɺങ͑Δɻ ը૾Λ1ຕΞοϓ ͢Δ͚ͩ ࣗಈతʹ͕ Ͱ͖·͢ ࣗͰങ͑Δ͠ ചΔ͜ͱͰ͖·͢
͡Ίʹ wࢿྉޙ΄ͲΠϯλʔωοτ্Ͱެ։͠·͢ wIUUQTTQFBLFSEFDLDPNPTBNUJNJ[FS
ࠓ͢͜ͱ wͳͥ46;63*ͷ"OESPJEΞϓϦ։ൃʹ'MVUUFSΛ࠾༻ͨ͠ͷ͔ w'MVUUFSͱԿ͔ w'MVUUFSΛ࠾༻ͯ͠Α͔ͬͨ͜ͱ w'MVUUFSͰ։ൃ͢Δ্Ͱͭ·͍ͮͨ͜ͱ w'MVUUFSΛ࠾༻͢Δʹ͋ͨͬͯߟ͑Δ͜ͱ
46;63*"OESPJE ։ൃத
None
ۙதʹϦϦʔεʂ
࣮։ൃ͕͍ͬͯͨ
"OESPJE൛ͷ։ൃఀ w"OESPJEઐͷϞόΠϧΞϓϦΤϯδχΞ͕͍ͳ͔ͬͨ w։ൃ్தͰ"OESPJEҎ֎ͷλεΫ༏ઌ্͕͕ͬͯ͠·ͬͨ wϑΝʔετϦϦʔεͷ͍͕ࣦΘΕɺ์ஔ͞Ε͕ͪʹ
'MVUUFSͱͷग़ձ͍
'MVUUFSͱͷग़ձ͍ wࣾͰ'MVUUFSʹڵຯ͕͋Δਓ͕૿͍͑ͯͨ w'MVUUFSͷษڧ͕ͯΒɺ46;63*ͷΞϓϦΛࣗ༝ݚڀͰ࡞͍ͬͯͨ wࢥ͍ͬͯͨΑΓΞϓϦ͕ૉૣ͘࡞ΕΔ͜ͱ͕Θ͔ͬͨ wˠ"OESPJE൛Λ'MVUUFSͰ࡞Γ͢ʁ
'MVUUFS࠾༻Λݕ౼ w"OESPJEઐ͍ͳ͍͕ɺαϙʔτड͚ΒΕΔ wJ04൛Λ͢ͰʹϦϦʔε͍ͯͨ͠ wϑΝʔετϦϦʔεͰରԠ͢Δൣғ͕ܾ·͍ͬͯͨ w3FBDU/BUJWFߟ͕͑ͨɺ3FBDUʹ͚ͨਓ͕νʔϜʹ͍ͳ͍ w'MVUUFSͷؔ৺͕ࣾͰߴ·͍ͬͯͨ wJ04Λ4XJGU6*ʹΓ͑ΔͨΊͷݟಘΒΕΔ
'MVUUFS࠾༻ΛܾΊͨͱ͖ͷྲྀΕ
͡Ό͋'MVUUFSͰ͍͖·͠ΐ͏
ͱ͜ΖͰ
'MVUUFSͱ
'MVUUFS w(PPHMFͷ6*πʔϧΩοτ w"OESPJEJ04ΞϓϦΛ୯ҰͷίʔυϕʔεͰ࡞ΕΔ w 8FC σεΫτοϓΞϓϦ࡞ΕΔ͕ɺΫϩεϓϥοτϑΥʔϜϞόΠϧΞϓϦ։ൃͷจ຺ͰޠΒΕΔ͜ͱ͕ଟ͍ wશͯΟδΣοτ wએݴత6*ϓϩάϥϛϯά
શͯΟδΣοτ
શͯΟδΣοτ wը໘ʹදࣔ͞ΕΔͷશͯΟδΣοτͱࢥͬͯྑ͍ w4DB⒎PME 5FYU $POUBJOFS 3PX $PMVNO *NBHF *DPO FUDʜ
wΟδΣοτΛΈ߹Θͤͯɺ֊ߏΛ࡞Δ w)5.-ͷΑ͏ͳ֊ߏ
એݴత6*ϓϩάϥϛϯά
એݴత6*ϓϩάϥϛϯά w͋Δ͖ঢ়ଶΛهड़͢Δ͜ͱͰɺ6*ΛΈཱ͍ͯͯ͘ w໋ྩతʢखଓ͖తʣϓϩάϥϛϯάͱൺֱ͞ΕΔ͜ͱ͕ଟ͍
໋ྩతͱએݴతͷൺֱ
໋ྩతͱએݴతͷൺֱ w໋ྩత6*ϓϩάϥϛϯά w"ͷ͕#ͱ͍͏ঢ়ଶʹͳͬͨΒɺ͜ͷΑ͏ʹදࣔΛม͑Δ wએݴత6*ϓϩάϥϛϯά w"ͷʹ#ͱ͍͏ঢ়ଶ͕༩͑ΒΕͨΒɺ͜ͷΑ͏ʹදࣔ͢Δ
໋ྩత customButton.onTap((event) { currentStatus = !currentStatus; customButton.enabled = currentStatus; if
(currentStatus == true) { customButton.color = Colors.blue; } else { customButton.color = Colors.red; } }); w෦Ͱঢ়ଶΛཧ wঢ়ଶ͕มΘ͔ͬͨΛఆ͠ɺඞཁͩͬͨΒߋ৽͢Δ
એݴత Widget _button(BuildContext context, bool enabled, Color color) { return
CustomButton( enabled: enabled, color: color, ); } wঢ়ଶ6*Ͱ࣋ͨͳ͍ wঢ়ଶΛߋ৽ͨ͘͠ͳͬͨΒɺ৽͍͠Λ༩͑ͯ࡞Δ wݹ͍ͷࣺͯΔ
એݴతʹ6*Λهड़Ͱ͖Δ͜ͱͷϝϦοτ wݟͨͱঢ়ଶʹؔ͢ΔίʔυΛ͍͢͠ wʮલͷঢ়ଶʯΛ6*Ͱҙࣝ͢Δඞཁ͕ͳ͘ͳΔ wˠίʔυ͕ॻ͖͍͢ʂ w'MVUUFSҎ֎ʹɺ3FBDU4XJGU6*Ͱ࠾༻͞Ε͍ͯΔ
'MVUUFSΛ࠾༻ͯ͠Α͔ͬͨ͜ͱ
։ൃମݧ͕ྑ͍
։ൃମݧ͕ྑ͍ w)PU3FMPBEศར wΞϓϦ։ൃʹඞཁͳΟδΣοτ͕େମἧ͍ͬͯΔ wϓϥάΠϯπʔϧ͕͍ͬͯΔ
)PU3FMPBE wϏϧυͪ࣌ؒͷݮ wʮ͜͜ม͑ͨΒͲ͏ͳΔΜ͚ͩͬʁʯ͕ҰॠͰΘ͔Δ w J04ͱൺֱͯ͠ 4UPSZ#PBSEͱ࣮ଶͷဃʹΉ͜ͱ͕ͳ͘ͳΔ
๛ͳΟδΣοτ w5FYU $FOUFS -JTU7JFX (SJE7JFX 4DB⒎PME FUDʜ wJ04"OESPJEωΠςΟϒͱൺͯɺγϯϓϧͳઃܭ wಛʹ(SJE7JFX -JTU7JFXͱ͍͍ͯ͢
wঢ়ଶཧ͕Ͱ͖Δ1SPWJEFS͔ܽͤͳ͍ଘࡏ
ϓϥάΠϯπʔϧ wಛʹ"OESPJE4UVEJP74DPEFͷϓϥάΠϯศར w'MVUUFSωετ͕ਂ͘ͳΓ͕͕ͪͩɺด͡ΔҐஔΛදࣔͯ͘͠ΕΔ
'MVUUFSͰ։ൃ͢Δ͏͑Ͱ ͭ·͍ͮͨ͜ͱ
8FC7JFX
8FC7JFX wಛʹ"OESPJE൛ wύϑΥʔϚϯε͕ྑ͘ͳ͍ wιϑτΣΞΩʔϘʔυ͕བྷΉͱ͞Βʹհ w$PPLJFΛηοτ͢Δͷʹ&WBMVBUF+BWBTDSJQUΛ͏ wFUDʜ
8FC7JFX
8FC7JFX wจࣈΛೖྗ͠Α͏ͱ͢Δͱɺจࣈ͝ͱʹڧ੍֬ఆ wຊޠͷม͕Ͱ͖ͳ͘ͳΔ wೖྗ͠Α͏ͱ͢ΔͱΞϓϦ͕ॏ͘ͳΔ wจࣈೖྗ࣌ʹΟδΣοτ͕ϦαΠζ͞ΕΔͷ͕ݪҼ wϦαΠζ͞Εͳ͍Α͏ͳઃఆʹมߋͯ͠ରԠ w͜Ε8FC7JFX୯ҐͰͳ͘ɺΞϓϦ୯Ґͷઃఆ
4UBUFGVM8JEHFU
4UBUFGVM8JEHFU w໊લͷ௨Γɺঢ়ଶΛ࣋ͬͨΟδΣοτ wΞχϝʔγϣϯͳͲҰ෦ͷΟδΣοτ4UBUFGVMͰ͋Δඞཁ͕͋Δ wࢥΘ͵όά͕ೖΓࠐΉ͜ͱ͕ଟ͍
'MVUUFSΛ࠾༻͢Δʹ͋ͨͬͯ ߟ͑Δ͜ͱ
'MVUUFSΛ࠾༻͢Δ্Ͱߟ͑Δ͜ͱ wJ04"OESPJEͦΕͧΕͷϓϥοτϑΥʔϜʹৄ͍͠ਓ͍Δ͔ʁ wΞϓϦͷϝϯςφϯεܧଓͰ͖Δ͔ʁ
ϓϥοτϑΥʔϜʹৄ͍͠ਓ͍Δ͔ʁ wΫϩεϓϥοτϑΥʔϜͱ͍͑ɺϏϧυपΓωΠςΟϒͷྖҬ wҰ෦ϥΠϒϥϦCVJME(SBEMFͳͲʹखΛೖΕͨΓ͢Δ w'BTUMBOFͰͷࣗಈԽϓϥοτϑΥʔϜຖ wνʔϜʹ͍ͳ͘ͱɺؾܰʹखΛିͯ͠Β͑Δঢ়ଶ͕ཧ
ΞϓϦͷϝϯςφϯεܧଓͰ͖Δ͔ʁ w'MVUUFSWϦϦʔε wόʔδϣϯΞοϓͷස͕ଟ͍ wഁյతมߋΛ͍ͭͭɺύϑΥʔϚϯεͷ্͕ਤΒΕΔ͜ͱ wόʔδϣϯΞοϓʹ͍͍ͭͯ͘ඞཁੑ w͋Δ͍ɺϝϯς͕΄΅ෆཁͷΞϓϦͰ࠾༻͢ΔͳͲ wྫɿ.FSDBSJ5FDI$POG %SPJE,BJHJ
·ͱΊ
·ͱΊ w'MVUUFSΛ࠾༻ͯ͠͏·͍͘͘έʔε͋Δ wએݴత6*ϓϩάϥϛϯά׳ΕΕڧྗͳಓ۩ʹͳΔ w։ൃମݧ͕ྑ͍ͷͰɺ·ͩ৮ͬͨ͜ͱ͕ͳ͍ਓࢼͯ͠Έͯ΄͍͠
͓ΘΓʹ
'MVUUFSʹڵຯ͋Δํ ࠾༻ืूதͰ͢