$30 off During Our Annual Pro Sale. View Details »
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
2
23k
SUZURIのAndroidアプリをFlutterで作っている話 / SUZURI-meets-Flutter
Osamtimizer
May 14, 2020
Tweet
Share
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.3k
Flutter+Providerでウィジェットのテストを書く/widget-test-with-provider
osamtimizer
0
1.8k
RubyのOSSコードリーディング / ruby-oss-code-reading
osamtimizer
4
3.2k
Other Decks in Programming
See All in Programming
これだけで丸わかり!LangChain v1.0 アップデートまとめ
os1ma
6
1.8k
MAP, Jigsaw, Code Golf 振り返り会 by 関東Kaggler会|Jigsaw 15th Solution
hasibirok0
0
230
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
8
2.3k
複数人でのCLI/Infrastructure as Codeの暮らしを良くする
shmokmt
5
2.2k
【CA.ai #3】Google ADKを活用したAI Agent開発と運用知見
harappa80
0
300
251126 TestState APIってなんだっけ?Step Functionsテストどう変わる?
east_takumi
0
310
なあ兄弟、 余白の意味を考えてから UI実装してくれ!
ktcryomm
11
11k
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
130
Microservices rules: What good looks like
cer
PRO
0
1.2k
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
6
2.1k
Developing static sites with Ruby
okuramasafumi
0
260
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
6
300
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
6k
Statistics for Hackers
jakevdp
799
230k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Designing for Performance
lara
610
69k
For a Future-Friendly Web
brad_frost
180
10k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
4 Signs Your Business is Dying
shpigford
186
22k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Faster Mobile Websites
deanohume
310
31k
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ʹڵຯ͋Δํ ࠾༻ืूதͰ͢