2023.07.14に開催された 第4回 FlutterGakkai にて登壇 https://fluttergakkai.connpass.com/event/284732/
アーカイブ配信: https://www.youtube.com/live/MmAgYFZinso?feature=share&t=5832
#FlutterGakkai࣌ͱͱʹਐԽ͢ΔΞϓϦέʔγϣϯΛ։ൃ͠ଓ͚Δ࢟ͱԸܙπϧΦΧ - Hideki TsuruokaUpdatedAt 2023.07.14@ୈ4ճ FlutterGakkai
View Slide
2πϧΦΧ• גࣜձࣾNTTυίϞͷ৽نࣄۀ෦ʹॴଐ• Flutter / Dart / Firebaseத৺ͷιϑτΣΞΤϯδχΞ• σβΠϯ×ΤϯδχΞϦϯάΛத৺ʹ։ൃ• Perfume͕͖@h_tsuruo
3ZennͰͷٕज़هࣄͷൃ৴pub.devύοέʔδͷެ։Speaker DeckOSS ContributePersonal Activities
4ݸਓࢿՈ͚ͷFinTechαʔϏεূ݊ձࣾαΠτ͔ΒσʔλΛεΫϨΠϐϯάɺࣗಈͰूܭ͠ՄࢹԽ͠·͢ɻՈܭΞϓϦͷূ݊ޱ࠲ʹಛԽͨ͠Α͏ͳαʔϏεͰ͢ɻOur Product
Today’s Talk5ࢲͨͪ3ؒʹΘͨΓFlutterΛ׆༻͠ɺػೳ։ൃͱฒߦͯ͠ʑͷΞοϓσʔτʹै͖ͯ͠·ͨ͠ɻલͰɺैͷඞཁੑ۩ମతͳʹ͍ͭͯ͝հ͠·͢ɻޙͰɺ͜ΕΒͷऔΓΈ͔ΒಘΒΕͨԸܙͱͯ͠ɺٕज़ऀͱͯ͠࠷৽Λ͏ҙٛԸܙʹ͍͓ͭͯ͠·͢ɻ
6Target Audience• ͷલͷػೳ։ൃʹΘΕͯख͕ճΒͣɺΞοϓσʔτ࡞ۀΛૄ͔ʹ͕ͪ͠ͳํ• Flutter/DartͷਐԽ͕ૣ͘ɺମܥతͳΩϟονΞοϓ͕ԯ߷ͱײ͍ͯ͡Δํ• தʙେنϓϩδΣΫτͷίʔυΛ࠷৽ʹอ͍͕ͪͨɺ࡞ۀͷϞνϕʔγϣϯ্͕͕Βͣ์ஔ͍ͯ͠Δํ
701 Flutter/DarΛऔΓר͘Ξοϓσʔτ࠷৽൛ΛόϥϯεΑ͘औΓೖΕΔٕज़ਐԽͱ͖߹͍ଓ͚ΔԸܙAgenda0203·ͱΊ04
8Flutter/DartΛऔΓר͘ΞοϓσʔτChapter.01
9$flutter pub upgrade$flutter upgrade
10Flutter/Dartͷٕज़ਐԽஶ͘͠ɺΞοϓσʔτසଟ͍Flutter/DartͷਐԽ• ຖ݄betaνϟϯωϧ͕ߋ৽͞Εɺ֓Ͷ࢛ظʹ1ճstableͷେ͖ͳϦϦʔε͕͋Δ• Flutter 3.0ൃද࣌ͷ༰Ͱɺ5248ͷϓϧϦΫΤετ͕Ϛʔδ͞Εͨ[Introducing Flutter 3. The culmination of our journey to… | by Tim Sneath | Flutter | Medium](https://medium.com/flutter/introducing-flutter-3-5eb69151622f)
11ਐԽͷεϐʔυ͕ૣ͍ͷخ͍͕͠ɺैίετগͳ͔Βͣൃੜ͢ΔFlutter/DartͷਐԽ• ։ൃऀͷΈͳ͞Μ͕ɺʑ৽͍͠ใΛΠϯϓοτͯ͠ൃ৴͍ͯ͠Δ·͞ʹͦͷϓϩηε• ࡉ͔͍มߋΛ͍͚ͭͮΔͷਖ਼େมͰ͋Δ※࠷ۙͷߘ͔ΒϥϯμϜͰҾ༻͓ͯ͠Γ࡞ҝతͰͳ͍Ͱ͢
12FlutterΞϓϦͷΞοϓσʔτͬͯͳʹ͕͋Δʁ
13Your Flutter AppPlatfrom OSSDKPackagedependenciesFramework / EngineiOS / Android etc…riverpod, dio, firebase_auth etc…
14Your Flutter AppPlatfrom OSSDKPackagedependenciesFramework / EngineiOS / Android etc…riverpod, dio, firebase_auth etc…
15࢛ظ͝ͱͷϝδϟʔΞοϓσʔτDartݴޠ༷ͷվఆSDKύοέʔδ• ओʹύϑΥʔϚϯεվળศརػೳ͕ೖͬͯ͘Δ• ΞοϓσʔτͰແ݅ʹԸܙΛڗडͰ͖Δύλʔϯͱɺ৽ػೳΛੵۃ׆༻͢Δύλʔϯͷྨ• ྫʣImpellerͷiOSඪ४ԽɺCanvasKitͷվળɺMediaQueryͷϦϏϧυରվળɺDart 3ͷRecords/Patternshttps://docs.google.com/presentation/d/1az1lb-p-aI6abv6w-jgMXKCKbl6qwfEwwR98mbJavbE/mobilepresent?pli=1&slide=id.g42789f296bb367e1_360
16ࡉ͔͍͍উख্ͳͲ͕ଟ͍͕ɺكʹഁյతͳมߋSDKύοέʔδ• ґଘύοέʔδʹؔͯ͠ྔʹΑͬͯଟগखؒมΘΔ͕ɺඞͣ͠ൺྫ͢ΔΘ͚Ͱͳ͍• ഁյతͳมߋܰඍͳରԠͰࡁΉ͜ͱ͕ଟ͍͕ɺੑ࣭ʹΑͬͯख͕͔͔ؒΔ͜ͱʢྫ: Riverpod v1→v2ʣ• `dart fix --apply`Ͱద༻Ͱ͖ͨΓɺϚΠάϨʔγϣϯπʔϧΛ༻ҙͯ͘͠ΕΔͱָͰ͖Δ
17εΫϦϓτΛ׆༻ͯ͠ɺมߋࠩΛཏతʹѲ͢Δͷ͓͢͢ΊݸਓతʹѪ༻͍ͯ͠Δmono͞ΜͷGrinderεΫϦϓτ• pubspec.lockͷ͔ࠩΒCHANGELOGʹϦϯΫͯ͠ϒϥβλϒΛ্ཱͪ͛ͯ͘ΕΔmono͞ΜεΫϦϓτ• ฐνʔϜͰґଘͷύοέʔδ͕100ఔ͋ΓɺCHANGELOGΛ͏ͷ͕େมͳͷͰॿ͔͍ͬͯΔhttps://twitter.com/_mono/status/1447464160921489412 ࣗಈͰϒϥβλϒ͕։͖CHANGELOG͕දࣔ͞ΕΔ
18Your Flutter AppPlatfrom OSSDKPackagedependenciesFramework / EngineiOS / Android etc…riverpod, dio, firebase_auth etc…
19Platform OS• Flutterޙ͍ʹͳΔͷͰ࠷৽ػೳ͕͙͢ʹར༻Ͱ͖ͳ͍έʔε͋Δ͕ɺରԠൺֱతૣ͍• ྫʣগ͠ݹ͍͕Android 13ͰͷThemed App IconsʹΑΔύʔιφϥΠζԽiOS/Androidͷ߹ຖՆ~ळࠒʹ๚ΕΔϝδϟʔΞοϓσʔτ[FlutterΞϓϦΛAndroid 13ʹରԠͤ͞Δ](https://zenn.dev/tsuruo/articles/eae9dbbad8372f)https://pc.watch.impress.co.jp/docs/news/1515805.html
20Android OSͷstable൛ϦϦʔε·Ͱ• গ͠ݹ͍Ͱ͕͢ɺAndroid 13ͷϓογϡ௨ڐμΠΞϩάରԠΛྫʹհ• ਖ਼ࣜ൛ϦϦʔε࣌ʹ͔ʹରԠ͕ඞཁͳ߹ɺࣄલςετظ͕ؒগͳ݁͘ߏ߄͍ͨͩ͠ϓϥοτϑΥʔϜ҆ఆ൛͋ͨΓ͔Β։ൃ͞ΕͯɺΪϦΪϦͳ࣌ظײAndroid 13ਖ਼ࣜϦϦʔε͔Β10ޙʹϚʔδhttps://developer.android.com/about/versions/13/changes/notification-permission
21ΞοϓσʔτΛଵΔ͜ͱʹΑΔฐԿʁ
22DeveloperDeveloperDeveloper TeamPlatfrom OSSDKPackagesFlutter AppDeveloperUpdate
23ιϑτΣΞίʔυͷ্࣭͕͠ͳ͍ΞοϓσʔτΛଵΔ͜ͱʹΑΔฐ - Fluter App• FlutterʹݶΒͣҰൠʹιϑτΣΞͰͷΞοϓσʔτ͕ཁٻ͞ΕΔͱಉ͡• ϢʔβϏϦςΟɾ։ൃऀମݧɾηΩϡϦςΟͷԼ• ࡉΊͳΞοϓσʔτΛଵΔͱɺσάϨόάͳͲΛݟམͱ͢Մೳੑ͕ߴ͍Platfrom OSSDKPackagedependenciesAppUsabilitySecurityDeveloper Experience
24ݹ͍։ൃڥݹ͍෩ΛੜΈɺ։ൃऀ͕Ε͍͖͍ͯ͢ΞοϓσʔτΛଵΔ͜ͱʹΑΔฐ - Developer Team• ࠾༻͘͠: ୯७ͳɺ͕ࣗ։ൃऀͩͬͨͱͯͦ͠ͷڥʹΛஔ͍ͯಇ͖͍͔ͨ• ٕज़બఆͷࡍʹɺԽٕͨ͠ज़Ͱͳ͘Ϟμϯͳٕज़Λ࠾༻͢ΔϝϦοτʹ௨ͣΔͱ͜Ζ͕͋ΔDeveloperDeveloperDeveloper TeamDeveloperOlder AppNew Developer
25࠷৽൛ΛόϥϯεΑ͘औΓೖΕΔChapter.02
26Կ͠ͳ͍ Ξοϓσʔτద༻ͷΈ Ξοϓσʔτ+৽ػೳΛ׆༻Gradient of Updates
27Կ͠ͳ͍ Ξοϓσʔτద༻ͷΈGradient of UpdatesͳΔ͘ӈͷྖҬʹدͤΔΞοϓσʔτ+৽ػೳΛ׆༻
28طଘίʔυஈ֊తʹɺ৽نίʔυҙࣝతʹมߋʹै͢Δ࠷খݶͷखؒͰॻ͖͓͑ͯ͘• ৽چͷίʔυ͕ࠞࡏ͢Δͱ͍͏σϝϦοτ͋ΔͷͰνʔϜͰͷೝࣝ߹Θͤඞཁ• ྫʣDart 2.17Ͱͷenhanced enumͷಋೖʹ͏extensionͷॻ͖͑Dart2.17·Ͱʢچίʔυʣ શʹ৽ػೳʹॻ͖͑Δதؒղͱͯ͠ஈ֊తʹऔΓࠐΉ
29ഁյతͳมߋ͕େ͖͗͢Δ߹ɺ͞Εͨཧը໘Ͱઌߦద༻͢ΔMelosͷϚϧνύοέʔδߏͰࢼ༻͢Δ• Өڹൣғ͕େ͖͍ͱ༧ଌͰ͖Δ߹ϢʔβʔڥΛͨ͠ཧը໘ΛαϯυϘοΫεͱͯ͠ར༻• ίʔυن͕খ͍͞ͱ͍͏ଆ໘͋Δͱঘྑ͠• ྫʣnull safetyରԠɺgo_routerରԠadminappӡӦ͕͏ཧαΠτϢʔβʔ͕͏ΞϓϦΞοϓσʔτ+৽ػೳΛ׆༻Ξοϓσʔτ༷ࢠݟcommon
30ৗʹϞμϯͳίʔυͷॻ͖͔͑ΓΛͯ͠Ϣʔβʔମݧ্͕ૄ͔ʹͳΔͱྑ͘ͳ͍ͷͰɺ͍ͭͲͷ͘Β͍ࢿ͢Δ͔όϥϯεײ͕֮ඞཁ
31ٕज़ਐԽͱ͖߹͍ଓ͚ΔԸܙChapter.03
32͜͜·ͰΞοϓσʔτʹର͢Δ۩ମͳ
33࣮ࡍʹͦͷ࢟Λଓ͚Δੵͱͯ͠ੜ·ΕΔԸܙ
34ٕज़ऀͨΔجຊ͕࢟ʹ͖ͭɺεςοϓΞοϓΛ࣮ײ
35DeveloperDeveloperDeveloper TeamPlatfrom OSSDKFlutter AppDeveloperUpdate
36DeveloperDeveloper Team Flutter AppUpdate• ࣝͷ্ɿ1࣍ใΛࢀর͠࠷৽ใͷΩϟονΞοϓΛश׳Խ• Ξτϓοτػձͷ֦େɿࢢʹग़ճ͍ͬͯͳ͍ใͷωλ͕Ͱ͖Δ• ίϛϡχςΟͷؼଐҙࣝɿOSSߩݙɺMainainerͱͷίϛϡχέʔγϣϯͳͲ
37ҙࣝతʹΠϯϓοτΛऔΓೖΕΔΑ͏ʹͳΓɺைྲྀΛ௫ΉώϯτΛಘΔٕज़ऀͱͯ͠ͷԸܙ - 1• มߋ͔Βɺղܾ͠Α͏ͱ͍ͯ͠Δ͔͓͏ͱ͍ͯ͠ΔํͳͲͷைྲྀ͕ݟ͑ͯ͘Δ• ಛʹFlutterΦʔϓϯιʔεͷͨΊɺGitHubʹެ։͞Ε͓ͯΓϒϥοΫϘοΫε෦͕গͳֶ͘श͕ḿΔ• ΤϯδχΞͱͯ͠ੜ্͖͍ͯ͘ͰϚετͳʮใͷΩϟονΞοϓʯΛश׳ԽͰ͖Δ
38͕ࣗͦͷٕज़ͷઌ಄ΛΔҙࣝΛ࣋ͪɺίϛϡχςΟʹߩݙͰ͖Δٕज़ऀͱͯ͠ͷԸܙ - 2• વઌ಄Ͱͳ͍ͱ͍͏ͷཧղͭͭ͠ɺͦͷٕज़ʹDeep Dive͍ͯ͠ΔҎ্ਓΑΓલΛΔҙ͕ࣝେࣄ• FirebaseͳͲͷ༗໊ύοέʔδͰҙ֎ͱόά͕͋ͬͨΓ͢Δ• ઌΜͯ͡ࢼ͢͜ͱͰɺόάվળ͕ݟ͔ͭΓίϛϡχςΟߩݙʹد༩Ͱ͖ΔIssueىථগͳ͔Βͣ࿑ྗ͕͔͔ΔͷͰɺετοΫ͓͍ͯͯ͠ޙͰΔͷͰྑ͍
39ٕज़ͷਐԽͷมભΛϦΞϧλΠϜʹΛͬͯମݧͰ͖Δٕज़ऀͱͯ͠ͷԸܙ - 3• ྫʣProvider→StateNotifier→Riverpod→Riverpod v2→Riverpod Generator• ʮRiverpod͕ྲྀߦ͍ͬͯΔ͔Β͑ΔΑ͏ʹͳΓ·ͨ͠ʯͱΓղ૾͕ҧ͏• ҰํͰઌਓ͕ͨͪඋͯ͘͠Εͨߴಓ࿏ͳͷͰɺ࠷ॳ͔ΒRiverpod͍·͢Ͱવྑ͍※͜ͷϓϩδΣΫτͰ·ͩriverpod_generatorରԠ·Ͱͯ͠·ͤΜ
40ΫϩεϓϥοτϑΥʔϜͷಛੑʹΑΓɺڵຯɾࣝͷ෯͕͕Δٕज़ऀͱͯ͠ͷԸܙ - 4• FlutterΛىʹपลࣝΛิͯ͠࿈ήʔϜ͢Δʢྫ: Impeller→Skia→Metal, Vulkanʣ• FlutterʹiOS/Androidͷ͕ࣝඞਢ݅ͳͷ͔ٞكʹ͋Δ͕ɺࣝͳ͘ͱదֶٓࡁΉఔ• App Store/Google Play StoreͷΞϓϦετΞͷѻ͍WebAssemblyͳͲ෯͘FlutterAndroidiOSWebmacOSWindowsLinuxEmbedded Linux
41·ͱΊChapter.04
42Conclusion• ٕज़ਐԽʹద߹͠ଓ͚Δ͜ͱϓϩμΫτͷࢿͰ͋ΓɺΤϯδχΞͱͯ͠ͷࣗࣗͷࢿͰ͋Δɻ• FlutterΛத৺ʹऔΓר͘पғͷڥʹؔ৺Λ࣋ͪɺମܥతʹཧղʹΊΕɺࣗવͱεΩϧΞοϓʹܨ͕Δɻ• Ξοϓσʔτద༻νʔϜڥϞνϕʔγϣϯͰૄ͔ʹͳΔ͜ͱ͋Δ͕ɺ͜·ΊʹόϥϯεΑ͘औΓࠐΉ͜ͱΛҙࣝ͢Δɻ
43Flutter/DartͷਐԽΛόϥϯεྑ͘औΓೖΕɺΞϓϦέʔγϣϯ্࣭ͱͱʹɺٕज़ऀͱͯ͠εςοϓΞοϓ͠Α͏Flutter/Dartͱҧ͏ٕज़͕ϝΠϯʹͳͬͯɺ͜ͷ࢟ϝλࣝͱͯ͠స༻Ͱ͖Δͣ
44Appendix• [Introducing Flutter 3. The culmination of our journey to… | by Tim Sneath | Flutter | Medium](https://medium.com/flutter/introducing-flutter-3-5eb69151622f)• [What’s new | Flutter](https://docs.flutter.dev/release/whats-new)• [Flutter Tips and Tricks - FlutterCon23 - Google εϥΠυ](https://docs.google.com/presentation/d/1az1lb-p-aI6abv6w-jgMXKCKbl6qwfEwwR98mbJavbE/mobilepresent?pli=1&slide=id.g42789f296bb367e1_360)• https://developer.android.com/about/versions/13/changes/notification-permission• [FlutterΞϓϦΛAndroid 13ʹରԠͤ͞Δ](https://zenn.dev/tsuruo/articles/eae9dbbad8372f)• [ʮAndroid 14 Beta 4ʯ৴։࢝ɻPixel Tablet/FoldʹରԠ - PC Watch](https://pc.watch.impress.co.jp/docs/news/1515805.html)• [ʮiOS 17ʯʮiPadOS 17ʯύϒϦοΫϕʔλ͕ొ - έʔλΠ Watch](https://k-tai.watch.impress.co.jp/docs/news/1516253.html)