PickGo for PartnerͷҠߦํ๏͔ΒֶͿ طଘͷωΠςΟϒΞϓϦΛFlutterϦϓϨΠε͢Δํ๏iOSDC 20212021/09/17 18:30ʙ Track D
View Slide
ࣗݾհ• Name: ԕ౻ (entaku)• Twitter: @entaku_0818• GitHub: entaku0818• Job: iOS/Android ΤϯδχΞetc
https://cb-cloud.com/
࣍• ͳͥFlutterʹϦϓϨΠεͨ͠ͷ͔ʁ• FlutterϦϓϨΠε·Ͱͷεςοϓ• Ҡߦલʹཱ͔ͪͩͬͨ• FlutterϦϓϨΠεͷৼΓฦΓ• ·ͱΊ
ͳͥFlutterʹϦϓϨΠεͨ͠ͷ͔ʁ
iOS/Androidͷ྆OSఏڙ্͍ͯ͘͠ͰɺٻΊΒΕΔ։ൃεϐʔυʹ߹Θͳ͍• Partner͞Μ͕͓ࣄͰ͏ΞϓϦͳͷͰɺαϙʔτΛߟ͑Δͱಉ࣌ʹϦϦʔε͢Δඞཁ͕͋Δ• ྆ϦϦʔεͷ࣌ظΛ߹ΘͤΑ͏ͱࢥ͏ͱσβΠϯͷҧ͍/։ൃڥͷҧ͍/ݴޠڥͷҧ͍ΛຒΊΔඞཁ͕͋Γɺࢥ͏Α͏ͳ։ൃεϐʔυ͕ग़ͤͳ͍
৽͍͠ࢪࡦπʔϧͷಋೖʹ͕͔͔࣌ؒͬͯ͠·͏• PickGo for Partner2015ʹϦϦʔε͞ΕͨΞϓϦͰ͋Γɺឯ༨ۂં༷͋ͬͨͦΕΛ࣮ݱ͢ΔίʔυͳͲͷٕज़తෛ࠴͕͋Γ·ͨ͠ɻࠓճͷϦϓϨΠεΛߦ͏͜ͱͰɺෛ࠴Λཧ͘͢͠͠ɺ։ൃεϐʔυΛ্͍͛ͯ͘ૂ͍͕͋Γ·ͨ͠ɻ
ද͕ॻ͍ͨίʔυ͕·ͩͬͯΔ
https://pickgo.town/shopping/ଞαʔϏεͰͷಋೖ࣮͕͋ͬͨ
FlutterԽ ͩ!
ٕज़ߏAnjularScalaRails• NativeͷػೳϩάΠϯ৽نը໘Ͱ͍͔ͭ͋͘ΔͷͷϝΠϯͷಋઢWebViewͰAnjularͷը໘Λදࣔ
࣮͋ΔFlutterͷߏΛ࠾༻• ChangeNotifier + ChangeNotifierProviderΛ͏• ViewσʔλΛࢀর͠දࣔ• ViewModelChangeNotifierProviderΛར༻͠ɺσʔλͷมߋΛݕ͢Δ• State(ChangeNotifier)σʔλͷมߋΛ௨͢Δ
FlutterϦϓϨΠε·Ͱͷεςοϓ
։ൃฤ
ॳظը໘ͷ࡞• ϩάΠϯը໘ͱϗʔϜը໘Λ࡞• ϩάΠϯͨ݁͠Ռฦͬͯ͘ΔtokenΛCookieηοτ͠ WebviewͰύʔτφʔWebը໘Λ։͘ͱ͍͏͜ͱΛ͠·ͨ͠
ଞωΠςΟϒػೳͷ࡞• ొಋઢMapҊ݅ҰཡͳͲωΠςΟϒػೳΛFlutterͰ࡞͠·ͨ͠
Native࿈ܞՕॴͷ࡞• WebViewͰಛఆͷૢ࡞Λͨ͠ࡍʹFlutterଆͰॲཧΛߦ͍·ͨ͠• ϩάΞτॲཧ• ిىಈ• Ґஔใ࿈ܞ• εΫϦʔϯγϣοτ• GoogleMapىಈ
Push௨• PickGo Ͱ࠷৽ͷҊ݅ΛPush௨Ͱૹ৴͢ΔॲཧΛ͓ͯ͠ΓFlutterͰಉ༷ͷॲཧΛ࣮͠·ͨ͠• ࠓ·ͰOneSignalΛ͍ͬͯ·͕ͨ͠ɺ͠ΕͬͱFirebaseʹҠߦ͠·ͨ͠ʢଞαʔϏεͰFirebaseʹ͍ͯͨͨ͠Ίʣ
ϦϦʔεฤ
৴ͷΈΛ͑Δݕূํ๏ͷ༰қੑΛ্͛ΔҠߦલʹQAνʔϜʹΑΔQAΛ࣮ࢪͨ͠Γɺࣾһޙड़ͷϢʔβʔςετΛ࣮ࢪ্͍ͯ͘͠Ͱݕূͷ༰қੑΛ্͍͛ͯ͘͜ͱ͕ඞཁͰͨ͠ɻhttps://codemagic.io/apps
৴ͷΈΛ͑Δͦ͜ͰcodemagicΛಋೖ͠ɺ͜Ε·ͰΞϓϦΤϯδχΞʹϏϧυΛͯ͠ΒΘͳ͍ͱͰ͖ͳ͔ͬͨݕূΛ༰қʹ͢Δ͜ͱͰɺ࣭ݕূͷ༰қੑΛ্ͤ͞·ͨ͠ɻhttps://codemagic.io/apps
͍͟ϦϦʔε
ͱͯා͍
ͳͥා͍ͷ͔ʁ• 5ఔαʔϏεఏڙ͖ͯͯ͠ࠓճ͕ॳͷϦϓϨΠε• ༷ΛશʹѲ͍ͯ͠ΔΘ͚Ͱͳ͘ෆ࣮֬ੑ͕ߴ͍
Ϣʔβʔςετ ͩ!
Ϣʔβʔςετͷ࣮ࢪ• iOS/AndroidͰͦΕͧΕ2໊ͣͭύʔτφʔ͞Μʹ͝ڠྗ͍͖ͨͩςετΛ࣮ࢪ• ઌߦϦϦʔεͯ͠2िؒఔ৮ͬͯΒ͍ൃੜ͠ͳ͍͔֬ೝͯ͠Β͏
Ϣʔβʔςετͷ࣮ࢪ• ຖ࿈བྷ…ͱ·Ͱ͍͖·ͤΜͰ͕͔ͨ͠ͳΓͷසͰ࿈བྷͯ͠ݕূʹڠྗͯ͠Β͍·ͨ͠
Ϣʔβʔςετͷ࣮ࢪ݁Ռ• ͷݕ• ϓογϡ௨ॲཧͷ࣮࿙Ε• ෳγεςϜ͔ΒPush௨Λ͍ͯͨͨ͠Ίؾ͚ͮͳ͔ͬͨ• ύεϫʔυϦηοτಋઢͷՃ• FlutterԽ͢ΔλΠϛϯάͰશͯͷϢʔβʔ͕ϩάΞτ͢ΔͨΊՃ• ࠓ·Ͱཧऀ͕Ϧηοτ͍ͯͨ͠• ʢݫີʹΫϩʔζυςετલʹؾ͕͍ͭͯमਖ਼͠·ͨ͠ʣ• େ͖͍ى͜Βͳͯ҆͘৺ͨ͠
͍ͭʹϦϦʔε!
ϦϓϨΠεͷ࣮ࢪ݁Ռ• 4/26 ϦϦʔε 🎉• όʔδϣϯ9.0.1• Android͕8.0.0ͩͬͨͷͰ߹Θͤ·ͨ͠• iOS - https://apps.apple.com/JP/app/id1053791248• Android - https://play.google.com/store/apps/details?id=ryuichi.cbcloud.keitownfc
ϦϓϨΠεޙͷ• ಛఆछྨͷૹҊ݅ͷҊ݅௨͕ೖΒͳ͍• ϚοϓΛ։͘ͱɺϒϥβ্ཱ͕͕ͪΓΞϓϦ֎ʹඈ͞ΕΔ• ʮҐஔใ͕औಘͰ͖·ͤΜͰͨ͠~ʯͷΤϥʔ
ϦϓϨΠεޙͷมԽ• ϦϦʔεճ͕5ճˠ8ճʹͳͬͨ• ϦϓϨΠεલܰඍͳมߋ͕ͩͬͨɺϦϦʔεޙ৽ػೳؚΊͯ8ճ
ৼΓฦΓ
ΫϩεϓϥοτϑΥʔϜͷۤखҙࣝ• ݁ہωΠςΟϒଆͰSwift/KotlinΛॻ͔ͳ͚Ε͍͚ͳ͍• ͳΒ࠷ॳ͔ΒωΠςΟϒͰྑ͍͡ΌΜͱࢥͬͯͨ
https://pickgo.town/shopping/
ҰFlutterΛಋೖͯͨ͜͠ͱʹΑͬͯߟ͑ํ͕มΘͬͨ• APIͰCRUDૢ࡞ͯ͠ɺUIΛදࣔͤ͞Δ͚ͩͳΒͱͯ؆୯Ͱૣ͍• ΞϓϦͰར༻͢Δʢ͔͠Εͳ͍ʣωΠςΟϒͰར༻͢ΔػೳΛ͔ͬ͠ΓཧͰ͖Εɺͳ͍ݟࠐΈ͕Ͱ͖ͨ•
ࣄલʹ༧ଌ͖͠Εͳ͔ͬͨ͜ͱ• ΫϩʔζυςετͦΕʹ͏मਖ਼ʹΑΓ༧ఆΑΓ1ϲ݄͘Β͍Εͯ͠·ͬͨ• ϦϓϨΠεͷςετେม• FlutterϥΠϒϥϦ͕αϙʔτ͞Εͯͳ͍SDK͋ΔͷͰϓϥάΠϯΛ࡞͢Δඞཁ͕͋ͬͨ•
ଞͷ։ൃऀ͔Βw 'MVUUFSίʔυඳ͍࣮ͯ͢ΔͷͰށ͍͕͋Γ·ͨ͠ CZJ04ΤϯδχΞw ָ͍ͬͯͯ͠Ͱ͢ʂw EBSU͕ඳ͖ͮΒ͍ͳͬͯࢥͬͨw J04,PUMJOΤϯδχΞͰ͋Ε'MVUUFSܦݧऀ͡Όͳͯ͘େৎͰͨ͠
ࠓޙͷల• ػೳͷશͯΛFlutter• WebViewͰૢ࡞͕ॏ͍෦ଟ͍ͷͰɺNativeԽΛؤு͍͖͍ͬͯͨ• ঢ়ଶཧͷख๏Λཱ֬͢Δ• ࣮Λ༏ઌ͋͠·Γେ͖͍มߋΛͰ͖ͳ͔ͬͨ• RiverpodͳͲͷಋೖΛݕ౼
ࢀߟ:ओͳར༻ϥΠϒϥϦ• WebView• https://pub.dev/packages/flutter_inappwebview• Ґஔใऔಘ• https://pub.dev/packages/background_locator• ϓογϡ௨/crashlyticsͳͲ• https://pub.dev/packages/firebase_core• APIClient• https://pub.dev/packages/retrofit
·ͱΊ• ࠓ·ͰSwift / KotlinͰར༻͍ͯͨ͠ΞϓϦFlutterϦϓϨΠεͰ͖Δ• NativeͰͷػೳΛཧղ͍ͯ͠Εͳ͍• Ϣʔβʔςετ࣮ࢪ͢Δ• ༷͕Θ͔Βͳ͍߹ಛʹʂ