Slide 1

Slide 1 text

5ZQF4DSJQU%BSUؒͰ
 ܕΛڞ༗͢Δ 2019/6/18 Fukuoka.ts #01 
 ikasoumen

Slide 2

Slide 2 text

w JLBTPVNFO w UXJUUFS!@JLBTPVNFO w QJYJWJLB@TPVNFO w HJUIVCJLBTPVNFO w ϐΫγϒ෱ԬΦϑΟε w 5ZQF4DSJQU͸"OHVMBS͔Β w ࠷ۙ͸3FBDUͰ΋ԿͰ΋54Ͱॻ͘ w Πϥετ΍ອըΛඳ͘ͷ΋޷͖ ࣗݾ঺հ 2

Slide 3

Slide 3 text

ຊ୊

Slide 4

Slide 4 text

w ೔ؒͷࣾһݚमͰ࢖͏ΞϓϦΛ࡞Δ͜ͱʹͳͬͨ w ࣾͷΞυϨεͰ֤ࣾһ͕(PPHMFϩάΠϯͰ͖ͯ w ࣸਅ͕౤ߘͰ͖ͯ w ʮ͍͍ͶʂʯͰ͖Δ w ࡞ͬͨํ͕໘ന͍ͷͰ࡞Δ w ࢼͯ͠Έ͍ٕͨज़੝Γ͜΋͏ͥʔʂ w 'MVUUFS $MPVE'JSFTUPSF γφϦΦ 4

Slide 5

Slide 5 text

w (PPHMFͷ/P42-%# w (00% w ΦϑϥΠϯ࣌Ͱ΋SFBEXSJUFͰ͖Δ w ߋ৽͞ΕͨσʔλΛͪ͜Β͔ΒऔΓʹߦ͘ඞཁ͕ͳ͍ w هड़͢΂͖࣮૷͕͍ͩͿݮΔ w #"% w %#ʹεΩʔϚ͕ͳ͍ w σʔλͷݕࡧ΍ෳ਺υΩϡϝϯτͷҰׅஔ׵ʹऑ͍ 'JSFTUPSF 5

Slide 6

Slide 6 text

͏·͍ो͚ͩٵ͍͍ͨ

Slide 7

Slide 7 text

ϦΞϧλΠϜߋ৽͚ͩ ඒຯ͍͖͍ͨͩͨ͘͠

Slide 8

Slide 8 text

εΩʔϚΛ༻ҙ͠·͠ΐ͏

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

w +40/ͷܕΛجʹଞݴޠͷܕͱͯ͠ग़ྗ w TPVSDF+40/ +40/4DIFNB 5ZQF4DSJQU w UBSHFU͍Ζ͍Ζ RVJDLUZQF 10

Slide 11

Slide 11 text

npx quicktype ./ts/models.ts -o ./dart/models.dart DPNNBOE

Slide 12

Slide 12 text

export type UserDoc = { name: string, role: Roles, /** * @TJS-type integer */ createdAt: number, } export enum Roles { guest = "guest", member = "member", admin = "admin", } JOQVU5ZQF4DSJQU

Slide 13

Slide 13 text

class UserDoc { int createdAt; String name; Roles role; UserDoc({ this.createdAt, this.name, this.role, }); factory UserDoc.fromJson(Map json) => new UserDoc( createdAt: json["createdAt"], name: json["name"], role: rolesValues.map[json["role"]], ); Map toJson() => { "createdAt": createdAt, "name": name, "role": rolesValues.reverse[role], }; } PVUQVU%BSU 

Slide 14

Slide 14 text

enum Roles { ADMIN, GUEST, MEMBER } final rolesValues = new EnumValues({ "admin": Roles.ADMIN, "guest": Roles.GUEST, "member": Roles.MEMBER }); class EnumValues { Map map; Map reverseMap; EnumValues(this.map); Map get reverse { if (reverseMap == null) { reverseMap = map.map((k, v) => new MapEntry(v, k)); } return reverseMap; } } PVUQVU%BSU 

Slide 15

Slide 15 text

w 'JSFTUPSF͸+40/֦ுͳσʔλΛอ࣋Ͱ͖Δ w 5ZQF4DSJQUΛTPVSDFʹͰ͖Δ w +40/4DIFNB͸هड़ྔ͕ଟ͍ˍ׳Ε͍ͯͳ͍ w ։ൃɾຊ൪σʔλͷ౤ೖεΫϦϓτΛ5ZQF4DSJQUͰॻ͖ ͍ͨ w ಉ͡ܕσʔλ͔Βੜ·Ε࣮ͨ૷ͳͷͰɺ%#ʹ౤ೖͨ͠ σʔλͱΫϥΠΞϯτͷ࣮૷ͷࠩҟ͕ͳ͘ͳΔ બఆཧ༝ 15

Slide 16

Slide 16 text

w %#ͷσʔλͷܕ͕߹ͬͯͳ͍Τϥʔͷ๾໓ w ෆ׳Εͳٕज़ελοΫͰʮΤϥʔͷՄೳੑ͕͋ΔՕॴʯΛ ݮΒͤͨͷ͸େ͖͍ w ෆਖ਼ͳσʔλͷ͍ͤͰϋϚΔͱർฐ͢Δ w ࠓ͍ΔϒϥϯνͷεΩʔϚΛҰൃͰ֬ೝͰ͖Δ w ͓͔͛ͰΞϓϦ͸ແࣄϦϦʔε͞Εݚम͸੝Γ্͕Γ·͠ ͨͱ͞ ಋೖ੒Ռ 16

Slide 17

Slide 17 text

w 'JSFTUPSFʹεΩʔϚΛ༻ҙ͢Δ͜ͱʹΑͬͯ
 νʔϜʹͱͬͯ։ൃΛਐΊ΍͍͢ঢ়ଶʹͨ͠ w 5ZQF4DSJQU͸ϓϩδΣΫτʹ૊ΈࠐΈ΍͍͢ w ๛෋ͳOQNύοέʔδࢿݯ w σʔλ౤ೖͱ͔ूܭͱ͔ w ผݴޠͷܕͷࣗಈੜ੒·ͰͰ͖ͪΌ͏ ·ͱΊ 17