$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
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
110
エディターってAIで操作できるんだぜ
kis9a
0
750
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
630
GISエンジニアから見たLINKSデータ
nokonoko1203
0
180
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
360
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
6
3.9k
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
420
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
160
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
0
160
ゆくKotlin くるRust
exoego
1
160
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
110
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
210
Featured
See All Featured
Thoughts on Productivity
jonyablonski
73
5k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.1k
[SF Ruby Conf 2025] Rails X
palkan
0
560
ラッコキーワード サービス紹介資料
rakko
0
1.8M
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
980
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
What's in a price? How to price your products and services
michaelherold
246
13k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
200
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
90
Why Our Code Smells
bkeepers
PRO
340
57k
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ʹڵຯ͋Δํ ࠾༻ืूதͰ͢