SUZURIのAndroidアプリをFlutterで作っている話 / SUZURI-meets-Flutter

SUZURIのAndroidアプリをFlutterで作っている話 / SUZURI-meets-Flutter

23190387d424e33d6a1a807cea1e0469?s=128

Osamtimizer

May 14, 2020
Tweet

Transcript

  1. ࣌ాཧ(.01FQBCP *OD ϖύϘɾ͸ͯͳٕज़େձʙ!ΦϯϥΠϯ 46;63*ͷ "OESPJEΞϓϦΛ 'MVUUFSͰ࡞͍ͬͯΔ࿩

  2. ϞόΠϧ8FCΞϓϦέʔγϣϯΤϯδχΞ ࣌ాཧ!PTBNUJNJ[FS 46;63*ࣄۀ෦ϓϩμΫτνʔϜ IUUQTPTBNUJNJ[FSIBUFOBCMPHDPN

  3. None
  4. ΦϦδφϧάοζ͕࡞ΕΔɺചΕΔɺങ͑Δɻ ը૾Λ1ຕΞοϓ ͢Δ͚ͩ ࣗಈతʹ঎඼͕ Ͱ͖·͢ ࣗ෼Ͱ΋ങ͑Δ͠ 
 ചΔ͜ͱ΋Ͱ͖·͢

  5. ͸͡Ίʹ wࢿྉ͸ޙ΄ͲΠϯλʔωοτ্Ͱެ։͠·͢ wIUUQTTQFBLFSEFDLDPNPTBNUJNJ[FS

  6. ࠓ೔࿩͢͜ͱ wͳͥ46;63*ͷ"OESPJEΞϓϦ։ൃʹ'MVUUFSΛ࠾༻ͨ͠ͷ͔ w'MVUUFSͱ͸Կ͔ w'MVUUFSΛ࠾༻ͯ͠Α͔ͬͨ͜ͱ w'MVUUFSͰ։ൃ͢Δ্Ͱͭ·͍ͮͨ͜ͱ w'MVUUFSΛ࠾༻͢Δʹ͋ͨͬͯߟ͑Δ͜ͱ

  7. 46;63*"OESPJE ։ൃத

  8. None
  9. ۙ೔தʹϦϦʔεʂ

  10. ࣮͸։ൃ͕଺͍ͬͯͨ

  11. "OESPJE൛ͷ։ൃఀ଺ w"OESPJEઐ೚ͷϞόΠϧΞϓϦΤϯδχΞ͕͍ͳ͔ͬͨ w։ൃ్தͰ"OESPJEҎ֎ͷλεΫ༏ઌ౓্͕͕ͬͯ͠·ͬͨ wϑΝʔετϦϦʔε΁ͷ੎͍͕ࣦΘΕɺ์ஔ͞Ε͕ͪʹ

  12. 'MVUUFSͱͷग़ձ͍

  13. 'MVUUFSͱͷग़ձ͍ wࣾ಺Ͱ'MVUUFSʹڵຯ͕͋Δਓ͕૿͍͑ͯͨ w'MVUUFSͷษڧ͕ͯΒɺ46;63*ͷΞϓϦΛࣗ༝ݚڀͰ࡞͍ͬͯͨ wࢥ͍ͬͯͨΑΓΞϓϦ͕ૉૣ͘࡞ΕΔ͜ͱ͕Θ͔ͬͨ wˠ"OESPJE൛Λ'MVUUFSͰ࡞Γ௚͢ʁ

  14. 'MVUUFS࠾༻Λݕ౼ w"OESPJEઐ೚͸͍ͳ͍͕ɺαϙʔτ͸ड͚ΒΕΔ wJ04൛Λ͢ͰʹϦϦʔε͍ͯͨ͠ wϑΝʔετϦϦʔεͰରԠ͢Δൣғ͕ܾ·͍ͬͯͨ w3FBDU/BUJWF΋ߟ͕͑ͨɺ3FBDUʹ௕͚ͨਓ͕νʔϜʹ͍ͳ͍ w'MVUUFS΁ͷؔ৺͕ࣾ಺Ͱߴ·͍ͬͯͨ wJ04Λ4XJGU6*ʹ৐Γ׵͑ΔͨΊͷ஌ݟ΋ಘΒΕΔ

  15. 'MVUUFS࠾༻ΛܾΊͨͱ͖ͷྲྀΕ

  16. ͡Ό͋'MVUUFSͰ͍͖·͠ΐ͏

  17. ͱ͜ΖͰ

  18. 'MVUUFSͱ͸

  19. 'MVUUFS w(PPHMF੡ͷ6*πʔϧΩοτ w"OESPJEJ04ΞϓϦΛ୯ҰͷίʔυϕʔεͰ࡞ΕΔ w 8FC σεΫτοϓΞϓϦ΋࡞ΕΔ͕ɺΫϩεϓϥοτϑΥʔϜϞόΠϧΞϓϦ։ൃͷจ຺ͰޠΒΕΔ͜ͱ͕ଟ͍ wશͯ͸΢ΟδΣοτ wએݴత6*ϓϩάϥϛϯά

  20. શͯ͸΢ΟδΣοτ

  21. શͯ͸΢ΟδΣοτ wը໘ʹදࣔ͞ΕΔ΋ͷ͸શͯ΢ΟδΣοτͱࢥͬͯྑ͍ w4DB⒎PME 5FYU $POUBJOFS 3PX $PMVNO *NBHF *DPO FUDʜ

    w΢ΟδΣοτΛ૊Έ߹Θͤͯɺ֊૚ߏ଄Λ࡞Δ w)5.-ͷΑ͏ͳ֊૚ߏ଄
  22. એݴత6*ϓϩάϥϛϯά

  23. એݴత6*ϓϩάϥϛϯά w͋Δ΂͖ঢ়ଶΛهड़͢Δ͜ͱͰɺ6*Λ૊Έཱ͍ͯͯ͘ w໋ྩతʢखଓ͖తʣϓϩάϥϛϯάͱൺֱ͞ΕΔ͜ͱ͕ଟ͍

  24. ໋ྩతͱએݴతͷൺֱ

  25. ໋ྩతͱએݴతͷൺֱ w໋ྩత6*ϓϩάϥϛϯά w"ͷ஋͕#ͱ͍͏ঢ়ଶʹͳͬͨΒɺ͜ͷΑ͏ʹදࣔΛม͑Δ wએݴత6*ϓϩάϥϛϯά w"ͷ஋ʹ#ͱ͍͏ঢ়ଶ͕༩͑ΒΕͨΒɺ͜ͷΑ͏ʹදࣔ͢Δ

  26. ໋ྩత customButton.onTap((event) { currentStatus = !currentStatus; customButton.enabled = currentStatus; if

    (currentStatus == true) { customButton.color = Colors.blue; } else { customButton.color = Colors.red; } }); w಺෦Ͱঢ়ଶΛ؅ཧ wঢ়ଶ͕มΘ͔ͬͨΛ൑ఆ͠ɺඞཁͩͬͨΒߋ৽͢Δ
  27. એݴత Widget _button(BuildContext context, bool enabled, Color color) { return

    CustomButton( enabled: enabled, color: color, ); } wঢ়ଶ͸6*૚Ͱ࣋ͨͳ͍ wঢ়ଶΛߋ৽ͨ͘͠ͳͬͨΒɺ৽͍͠஋Λ༩͑ͯ࡞Δ wݹ͍΋ͷ͸ࣺͯΔ
  28. એݴతʹ6*Λهड़Ͱ͖Δ͜ͱͷϝϦοτ wݟͨ໨ͱঢ়ଶʹؔ͢ΔίʔυΛ෼཭͠΍͍͢ wʮલͷঢ়ଶʯΛ6*૚Ͱҙࣝ͢Δඞཁ͕ͳ͘ͳΔ wˠίʔυ͕ॻ͖΍͍͢ʂ w'MVUUFSҎ֎ʹ΋ɺ3FBDU΍4XJGU6*Ͱ࠾༻͞Ε͍ͯΔ

  29. 'MVUUFSΛ࠾༻ͯ͠Α͔ͬͨ͜ͱ

  30. ։ൃମݧ͕ྑ͍

  31. ։ൃମݧ͕ྑ͍ w)PU3FMPBE͸ศར wΞϓϦ։ൃʹඞཁͳ΢ΟδΣοτ͕େମἧ͍ͬͯΔ wϓϥάΠϯ΍πʔϧ͕੔͍ͬͯΔ

  32. )PU3FMPBE wϏϧυ଴ͪ࣌ؒͷ࡟ݮ wʮ͜͜ม͑ͨΒͲ͏ͳΔΜ͚ͩͬʁʯ͕ҰॠͰΘ͔Δ w J04ͱൺֱͯ͠ 4UPSZ#PBSEͱ࣮ଶͷဃ཭ʹ೰Ή͜ͱ͕ͳ͘ͳΔ

  33. ๛෋ͳ΢ΟδΣοτ w5FYU $FOUFS -JTU7JFX (SJE7JFX 4DB⒎PME FUDʜ wJ04"OESPJEωΠςΟϒͱൺ΂ͯɺγϯϓϧͳઃܭ wಛʹ(SJE7JFX -JTU7JFX͸ͱͯ΋࢖͍΍͍͢

    wঢ়ଶ؅ཧ͕Ͱ͖Δ1SPWJEFS͸͔ܽͤͳ͍ଘࡏ
  34. ϓϥάΠϯ΍πʔϧ wಛʹ"OESPJE4UVEJP74DPEFͷϓϥάΠϯ͸ศར w'MVUUFS͸ωετ͕ਂ͘ͳΓ͕͕ͪͩɺด͡ΔҐஔΛදࣔͯ͘͠ΕΔ

  35. 'MVUUFSͰ։ൃ͢Δ͏͑Ͱ ͭ·͍ͮͨ͜ͱ

  36. 8FC7JFX

  37. 8FC7JFX wಛʹ"OESPJE൛ wύϑΥʔϚϯε͕ྑ͘ͳ͍ wιϑτ΢ΣΞΩʔϘʔυ͕བྷΉͱ͞Βʹ໽հ w$PPLJFΛηοτ͢Δͷʹ&WBMVBUF+BWBTDSJQUΛ࢖͏ wFUDʜ

  38. 8FC7JFX

  39. 8FC7JFX wจࣈΛೖྗ͠Α͏ͱ͢Δͱɺจࣈ͝ͱʹڧ੍֬ఆ w೔ຊޠͷม׵͕Ͱ͖ͳ͘ͳΔ wೖྗ͠Α͏ͱ͢ΔͱΞϓϦ͕ॏ͘ͳΔ wจࣈೖྗ࣌ʹ΢ΟδΣοτ͕ϦαΠζ͞ΕΔͷ͕ݪҼ wϦαΠζ͞Εͳ͍Α͏ͳઃఆʹมߋͯ͠ରԠ w͜Ε͸8FC7JFX୯ҐͰ͸ͳ͘ɺΞϓϦ୯Ґͷઃఆ

  40. 4UBUFGVM8JEHFU

  41. 4UBUFGVM8JEHFU w໊લͷ௨Γɺঢ়ଶΛ࣋ͬͨ΢ΟδΣοτ wΞχϝʔγϣϯͳͲҰ෦ͷ΢ΟδΣοτ͸4UBUFGVMͰ͋Δඞཁ͕͋Δ wࢥΘ͵όά͕ೖΓࠐΉ͜ͱ͕ଟ͍

  42. 'MVUUFSΛ࠾༻͢Δʹ͋ͨͬͯ ߟ͑Δ͜ͱ

  43. 'MVUUFSΛ࠾༻͢Δ্Ͱߟ͑Δ͜ͱ wJ04"OESPJEͦΕͧΕͷϓϥοτϑΥʔϜʹৄ͍͠ਓ͸͍Δ͔ʁ wΞϓϦͷϝϯςφϯε͸ܧଓͰ͖Δ͔ʁ

  44. ϓϥοτϑΥʔϜʹৄ͍͠ਓ͸͍Δ͔ʁ wΫϩεϓϥοτϑΥʔϜͱ͸͍͑ɺϏϧυपΓ͸ωΠςΟϒͷྖҬ wҰ෦ϥΠϒϥϦ͸CVJME(SBEMFͳͲʹखΛೖΕͨΓ͢Δ w'BTUMBOFͰͷࣗಈԽ΋ϓϥοτϑΥʔϜຖ wνʔϜ಺ʹ͍ͳ͘ͱ΋ɺؾܰʹखΛିͯ͠΋Β͑Δঢ়ଶ͕ཧ૝

  45. ΞϓϦͷϝϯςφϯε͸ܧଓͰ͖Δ͔ʁ w'MVUUFSWϦϦʔε͸೥ wόʔδϣϯΞοϓͷස౓͕ଟ͍ wഁյతมߋΛ൐͍ͭͭɺύϑΥʔϚϯεͷ޲্͕ਤΒΕΔ͜ͱ΋ wόʔδϣϯΞοϓʹ͍͍ͭͯ͘ඞཁੑ w͋Δ͍͸ɺϝϯς͕΄΅ෆཁͷΞϓϦͰ࠾༻͢ΔͳͲ wྫɿ.FSDBSJ5FDI$POG %SPJE,BJHJ

  46. ·ͱΊ

  47. ·ͱΊ w'MVUUFSΛ࠾༻ͯ͠͏·͍͘͘έʔε΋͋Δ wએݴత6*ϓϩάϥϛϯά͸׳ΕΕ͹ڧྗͳಓ۩ʹͳΔ w։ൃମݧ͕ྑ͍ͷͰɺ·ͩ৮ͬͨ͜ͱ͕ͳ͍ਓ΋ࢼͯ͠Έͯ΄͍͠

  48. ͓ΘΓʹ

  49. 'MVUUFSʹڵຯ͋Δํ ࠾༻ืूதͰ͢