Slide 1

Slide 1 text

גࣜձࣾϋγΰ দຊ୓໵ !TLZDBU@NF ະܦݧ͔Βͷ௅ઓʂ ௒଎ωΠςΟϒΞϓϦ։ൃ

Slide 2

Slide 2 text

ࣗݾ঺հ wদຊ୓໵ʢʣ wαʔόʔαΠυدΓΤϯδχΞ w1ZUIPO %BSU 1)1 +BWB4DSJQU $ $ 1FSM +BWB… wגࣜձࣾϋγΰ೥݄ೖࣾ !TLZDBU@NF

Slide 3

Slide 3 text

ࣗࣾ঺հ αΠόʔΤʔδΣϯτάϧʔϓͱͯ͠ ෱ԬΛڌ఺ʹήʔϜӡӦ΍৽ن։ൃ ͳͲ༷ʑͳࣄۀΛߦͳ͓ͬͯΓ·͢ɻ IUUQTBU IUUQTDPMMFHJOPKQ

Slide 4

Slide 4 text

IUUQTBU

Slide 5

Slide 5 text

IBTJHP!ͷϞόΠϧ ΞϓϦ։ൃʹ͍ͭͯ ͷ࿩Λ͠·͢ 'MVUUFS

Slide 6

Slide 6 text

ٕज़બఆ w'MVUUFS wJ04"OESPJEରԠͷΫϩεϓϥοτϑΥʔϜ w։ൃݴޠ͸%BSU wڧྗͳ*%&ʹରԠ w*OUFMMJ+*%&"74$PEF

Slide 7

Slide 7 text

ٕज़બఆ'MVUUFS࠾༻ wֶशίετͷ໰୊ wJ04"OESPJEΤϯδχΞ͕͍ͳ͔ͬͨͨΊɺ ΫϩεϓϥοτϑΥʔϜʹ͢Δ͜ͱͰֶश ίετΛ཈͔͑ͨͬͨ wର߅അ w3FBDU/BUJWF9BNBSJO wͰ΋৽͍͜͠ͱ΍Γ͔ͨͬͨΜ΍ʂ

Slide 8

Slide 8 text

'MVUUFSͱ͸ "OESPJEJ04ʹରԠͨ͠ (PPHMFൃͷϞόΠϧ6*ϑϨʔϜϫʔΫ wݴޠ͸%BSU ॻ͖΍͍͢ʂ wಠࣗϨϯμϦϯά wෳ਺ͷϓϥοτϑΥʔϜͰ׬શಉҰͷ6* w·ͩϕʔλ W

Slide 9

Slide 9 text

'MVUUFSͬͯԿ͕ྑ͍ͷʁ wେྔͷ8JEHFU͕༻ҙ͞Ε͍ͯΔʢ6*ύʔπʣ w ͜ͷ8JEHFUΛ૊Έ߹Θͤͯ6*Λ࡞͍ͬͯ͘ wεςʔτϨεͳߴ଎ϗοτϦϩʔυػೳ w ։ൃ͕ͱͯ΋ޮ཰Α͘ਐΊΒΕΔ w։ൃ؀ڥߏங͕ͱͯ΋؆୯ w ґଘੑ֬ೝͷίϚϯυˠqVUUFSEPDUPS

Slide 10

Slide 10 text

6*Λ૊ΜͰΈΔ w ͜ͷ8JEHFUΛ૊Έ߹Θͤͯ6*Λ࡞͍͖ͬͯ·͢ *NBHF 5FYU 5BH 5BH $PMVNO $PMVNO *NBHF 5FYU 3PX 5BH 5BH 8JEHFU5SFF 3PX

Slide 11

Slide 11 text

͔͜͜Β͸࣮ࡍʹ։ൃΛॳ Ίͯߦͬͯେมͩͬͨ΋ͷ Λ঺հ͍͖ͯ͠·͢

Slide 12

Slide 12 text

'MVUUFSঢ়ଶ؅ཧ $PMVNO $BSE 5FYU *NBHF 4MJEFS $POUBJOFS *NBHF 5FYU %BUB %BUB

Slide 13

Slide 13 text

'MVUUFSঢ়ଶ؅ཧ $PMVNO %BUB $BSE 5FYU *NBHF 4MJEFS $POUBJOFS *NBHF 5FYU %BUB %BUB *OIFSJUFE8JEHFU

Slide 14

Slide 14 text

'MVUUFSঢ়ଶ؅ཧ w4DPQFE@NPEFM w *OIFSJUFE8JEHFUΛแؚ֦ு͍ͯ͠Δ֎෦ύοέʔδ w *OIFSJUFE8JEHFUΛܧঝͨ͠ঢ়ଶ؅ཧ.PEFMΛఆٛ͢Δ ͜ͱͰɺͦΕͧΕ*OIFSJUFE8JEHFUΛఆٛ͠ͳͯ͘Α͘ ͳͬͯͱͯ΋εοΩϦ͢ΔΑʂ w IUUQTQVCEBSUMBOHPSHQBDLBHFTTDPQFE@NPEFM

Slide 15

Slide 15 text

'MVUUFSঢ়ଶ؅ཧ Ͱ΋ɾɾɾ ͪΐͬͱ·ͯΑɾɾɾ ͟Θɾɾɾ͟Θɾɾɾɾ

Slide 16

Slide 16 text

'MVUUFSঢ়ଶ؅ཧ 6*ͱϩδοΫ͕ 混沌ͱ͍ͯ͠Δʂʁ

Slide 17

Slide 17 text

@override Widget build(BuildContext context) { TodoListContainerState container = TodoListContainer.of(context); // ϑΟϧλϦϯά͍ͨ͠ switch (container.widget.filterMode) { case FilterMode.checked: filteredTodoList = container.getCheckedTodoList(); break; case FilterMode.unchecked: filteredTodoList = container.getUncheckedTodoList(); break; case FilterMode.none: default: List todoList = container.getTodoList(); if (todoList != null) { filteredTodoList = todoList; } break; } container.addLoadingEndListener(this); return new Scaffold( body: new ListView.builder( padding: const EdgeInsets.all(16.0), itemCount: filteredTodoList.length, itemBuilder: (context, i) => new TodoEntryItem(filteredTodoList[i])), ); } ඳըϝιου ϩδοΫ ඳը͢Δ8JEHFU

Slide 18

Slide 18 text

#-P$ΞʔΩςΫνϟ w #VTJOFTT-PHJD$PNQPOFOU w 6*ͱϩδοΫΛ׬શ෼཭ʂ w #VJMESFBDUJWFNPCJMFBQQTXJUI'MVUUFS (PPHMF*0 w IUUQTZPVUVCF34H#&Q0*

Slide 19

Slide 19 text

#-P$ΞʔΩςΫνϟ w ࡾݪଇ w ೖྗͱग़ྗ͸γϯϓϧͳ4USFBN4JOL͔͠ڐ͞Εͳ͍ w ґଘੑ͸஫ೖՄೳͰϓϥοτϑΥʔϜʹґଘ͠ͳ͍ w ϓϥοτϑΥʔϜ͝ͱͷ෼ذ͠ͳ͍ w ͜ΕΒΛक͍ͬͯΔͳΒԿͰ΋΍ͬͯΑ͠ʂ Flutter / AngularDart – Code sharing, better together (DartConf 2018) IUUQTZPVUVCF1-)MOX)H1&

Slide 20

Slide 20 text

#-P$ʹͯ͠Α͔ͬͨ͜ͱ w 6*ͱϩδοΫ͕෼཭͞ΕΔͨΊ w γϯϓϧʹ࣮૷ʹͰ͖Δʂ w Մಡੑ͕61ʂ w ςετॻ͖΍͍͢ʂ

Slide 21

Slide 21 text

·ͱΊ w ৽͍ٕ͠ज़͸ָ͍͚͠Ͳ݁ߏἚͷಓ w ·ͣ೔ຊޠࢿྉ͕΄ͱΜͲͳ͍ w ͨͩ͠(PPHMFͱ͍͏࠷ڧͷ஥͕͍ؒΔͨΊͱͬͯ΋҆৺ Ͱ͖Δʂ w %BSU΋ֶशίετ͕ͦ͜·Ͱߴ͘ͳͯ͘Α͔ͬͨ w 'MVUUFS͸͍͍ͧʂ

Slide 22

Slide 22 text

͓·͚ ։ൃॳظʜ 'MVUUFS΍ͬͯΈΑ͏ͥʂ ͱબఆͨ͠΋ͷͷʜ શһ%BSU΋'MVUUFS΋ະܦݧ

Slide 23

Slide 23 text

ͦ͜ͰϞϒϓϩͩʂʂ

Slide 24

Slide 24 text

Ϟϒϓϩάϥϛϯά࠷ߴʂ w υϥΠόͷ࣋ͪ࣌ؒ͸෼ʂ w ͦͷଞͷਓ͸φϏήʔλ ࢦࣔग़͠ w ΈΜͳͰ࣮ࡍʹ࣮૷͢ΔͷͰɺશһͷཧղ౓͕ߴ·Δɻ w φϨοδͷڞ༗͕Ͱ͖ͯͱͯ΋͍͍ײ͡ʂ υϥΠό ίʔσΟϯά୲౰ Λॱ൪Ͱճ͍ͯ͘͠ɻ ͦͷଞͷਓ͸φϏήʔλʔʢࢦࣔग़͠ʣͱͯ͠ࢀՃ͢Δɻ

Slide 25

Slide 25 text

ٸʹ'MVUUFSͰ։ൃͨ͘͠ͳͬ ͨͦ͜ͷ͋ͳͨʂʂ ҰॹʹϞϒϓϩ͠·ͤΜ͔ʂ

Slide 26

Slide 26 text

ੋඇɺϋγΰͷϒʔεʹ ༡ͼʹདྷ͍ͯͩ͘͞ʂʂʂ ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠