Slide 1

Slide 1 text

FlutterͰ࢖͏ Cloud Firestore PORT Firebase × Flutter shoo.yamada

Slide 2

Slide 2 text

ࣗݾ঺հ Name: shoo.yamada Twitter: @yshogo87 Github: @yshogo ॴଐ:גࣜձࣾZOZOςΫϊϩδʔζ AndroidΤϯδχΞ

Slide 3

Slide 3 text

໨࣍ • աڈʹFirebaseͱFlutterΛ࢖ͬͯ࡞ͬͨϓϩμΫτ • Flutter͸FirestoreΛ࢖͑Δͷ͔ • FirestoreͱFlutterͷ૬ੑʹ͍ͭͯ • ։ൃεϐʔυʹ͍ͭͯ • ࠓޙͷFirestoreͱFlutterͷಈ͖ʹ͍ͭͯ • ·ͱΊ

Slide 4

Slide 4 text

աڈʹFirebaseͱFlutterΛ࢖ͬͨ ϓϩμΫτ

Slide 5

Slide 5 text

աڈʹFirebaseͱFlutterΛ࢖ͬͨ ϓϩμΫτ • Firebase͸RealtimeDatabase͔͠ͳ͔ͬͨ࣌୅ ͔Β৮͍ͬͯͨ • ͦͷࠒ͔ΒFirebaseͷັྗʹࠍΕࠐΈࣗ෼͕ݸ ਓͰ࡞ΔϓϩμΫτ͸શͯFirebaseΛ࢖͍ͬͯΔ • ॳظͷ͜Ζ͸ @1amageek ͞ΜͷQiitaΛԿճ΋ ಡΜͰ͍ͨ

Slide 6

Slide 6 text

աڈʹFirebaseͱFlutterΛ࢖ͬͨ ϓϩμΫτ

Slide 7

Slide 7 text

աڈʹFirebaseͱFlutterΛ࢖ͬͨ ϓϩμΫτ • ͦͷޙFlutterʹग़ձ͏ • ΫϩεϓϥοτϑΥʔϜ΍ɺHotReloadɺඒ͍͠UIΛ ࢖ͬͨ։ൃख๏ΛֶͿ Flutter×Firebaseͬͯ࠷ڧͳΜ ͡ΌͶʁ

Slide 8

Slide 8 text

աڈʹFirebaseͱFlutterΛ࢖ͬͨ ϓϩμΫτ • νϟοτΞϓϦΛ࡞Δ(ݱࡏ͸αʔϏεऴྃ)

Slide 9

Slide 9 text

աڈʹFirebaseͱFlutterΛ࢖ͬͨ ϓϩμΫτ

Slide 10

Slide 10 text

աڈʹFirebaseͱFlutterΛ࢖ͬͨ ϓϩμΫτ • ຊ୳͠ΞϓϦέʔγϣϯ(ݱࡏ͸ϝϯςͯ͠ͳ͍)

Slide 11

Slide 11 text

ݱࡏ͸SNSαʔϏε ։ൃத

Slide 12

Slide 12 text

FlutterʹFirebase͸࢖͑Δͷ͔

Slide 13

Slide 13 text

FlutterʹFirebase͸࢖͑Δͷ͔ →ී௨ʹ࢖͑Δ

Slide 14

Slide 14 text

FlutterʹFirebase͸࢖͑Δͷ͔

Slide 15

Slide 15 text

FlutterʹFirebase͸࢖͑Δͷ͔ Firestoreͷincrement΋ରԠ

Slide 16

Slide 16 text

FlutterʹFirebase͸࢖͑Δͷ͔ ࢖͍৺஍͸΄΅Web൛Firebase Future postMessage(String groupId, String uid, String message, int type) async { return await Firestore.instance .collection("group") .document(groupId) .collection("message") .add({ "uid": uid, "message": message, "type": type, "created_at": FieldValue.serverTimestamp(), }); }

Slide 17

Slide 17 text

FirestoreͱFlutterͷ૬ੑʹ͍ͭͯ

Slide 18

Slide 18 text

FirestoreͱFlutterͷ૬ੑʹ͍ͭͯ • ωΠςΟϒͱಉ͡Α͏ʹ࢖͑Δ • Flutter͔ͩΒ࢖͑ͳ͍ɺΈ͍ͨͳ࿩͸جຊత ʹ͸ͳ͠ • ιʔείʔυΛಡΉͱɺωΠςΟϒ(Ob-Cɺ JavaͰॻ͔Εͨίʔυ)ΛಡΜͰ͍Δ͚ͩ

Slide 19

Slide 19 text

FirestoreͱFlutterͷ૬ੑʹ͍ͭͯ

Slide 20

Slide 20 text

FirestoreͱFlutterͷ૬ੑʹ͍ͭͯ child: StreamBuilder( stream: chatHelper .getMessages(widget.groupId) .asBroadcastStream(), builder: (context, snapshot) { if (snapshot == null || snapshot.data == null) return Container(); return new ListView.builder( padding: new EdgeInsets.all(8.0), reverse: true, itemBuilder: (_, int index) { // ͜͜ͰϝοηʔδΛදࣔ͢Δ }, itemCount: snapshot.data.documents.length, ); })

Slide 21

Slide 21 text

։ൃεϐʔυʹ͍ͭͯ

Slide 22

Slide 22 text

։ൃεϐʔυʹ͍ͭͯ • Flutter͕଎͍ (HotReloadɺWidgetΧλϩά etc…..) • FirebaseΛ࢖͑͹ɺαʔόʔαΠυ͸ϝϯς ͳ͠ • Firebase × Flutter = ଎͍ ← ౰ͨΓલ

Slide 23

Slide 23 text

։ൃεϐʔυʹ͍ͭͯ • ݸਓΞϓϦͷ։ൃظؒ͸͍͍ͩͨ̏ϲ݄ • ̍೔ͷ࡞ۀ࣌ؒ͸̍ʙ̎࣌ؒఔ౓ • ࣮ࡍʹ࢖͍ͬͯͯ΋΍ͬͺ͸΍͍

Slide 24

Slide 24 text

։ൃεϐʔυʹ͍ͭͯ • ͍ͬͯͬͯ΋ɺʮFirestoreͷ஌͕ࣝඞཁʯɺ ʮFlutterͷ஌͕ࣝඞཁʯ౳ etc… • ͦΕͧΕʹผͷ஌͕ࣝඞཁ • ͨͩɺFlutter͔ΒFirebase͸ී௨ʹ࢖͑· ͢ɻ

Slide 25

Slide 25 text

ࠓޙͷಈ͖

Slide 26

Slide 26 text

ࠓޙͷಈ͖ • Firestoreʹ৽ػೳ͕࣮૷͞ΕΔͱ͙͢Flutter ଆʹissueཱ͕ͬͯରԠ͠͸͡ΊΔ • ࣌ؒࠩ͸͋Δ͕ɺ͜Ε͔Β΋͙͢ʹରԠͯ͠ ͘ΕΔ͸ͣ

Slide 27

Slide 27 text

ࠓޙͷಈ͖ • Ͱ΋ݱঢ়͸FlutterͱFirestoreΛϑϧʹ࢖ͬͯ ྲྀߦΔαʔϏεͷ࣮੷Λશવݟͳ͍(ࢁాͷ؍ ଌൣғ಺) • ࣮੷Λ࡞Γ΋݉Ͷͯࣗ෼΋ϓϩμΫτ։ൃΛ ͍ͯ͠Δ

Slide 28

Slide 28 text

ࠓޙͷಈ͖ • ౰໘ɺshogo.yamada͕࡞ΔαʔϏε͸શͯ ʮFlutter×FirebaseʯͰ͍͘ͱࢥ͏ • ஌Γ͍ͨ͜ͱɺΘ͔Βͳ͍͜ͱ͕͋Ε͹͍ͭ Ͱ΋࿈བྷ͍ͩ͘͞ɻ • Twitter: @yshogo87

Slide 29

Slide 29 text

͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ ࠙਌ձͰ͓࿩͠͠·͠ΐ͏ʂ