Slide 1

Slide 1 text

@yonekawa ωΠςΟϒΞϓϦͰ΋ 'MVY͍ͨ͠

Slide 2

Slide 2 text

͸ʔ͍ϑϩϯτΤϯυͷ ษڧձͰ4XJGUͷ࿩͢ΔΑʔ

Slide 3

Slide 3 text

ࡢࠓͷiOSΞϓϦ • RxSwiftʢϦΞΫςΟϒϓϩάϥϛϯάʣ͕ྲྀߦͷஹ͠ • MVVMΞʔΩςΫνϟ͕ຊ֨తʹྲྀߦ͖ͬͯͯΔ • ViewModelͰAPIୟ͍ͯViewʹྲྀ͠ࠐΉ • RxSwift͸UIόΠϯσΟϯά༻ͷ࢓૊Έ͕ॆ࣮

Slide 4

Slide 4 text

freeeͷiOSΞϓϦ • MVVMΛॳظ͔Βಋೖ͠ɺViewModelʹΑͬͯViewͷঢ়ଶ ͱϏδωεϩδοΫΛ؅ཧ͍ͯ͠Δ • ϦΞΫςΟϒϓϩάϥϛϯάʹ͸ReactiveCocoaΛ࢖͍ͬͯ Δ • ෳࡶͳೖྗϑΥʔϜɺػೳͷଟ͞ͱͦΕΒͷؔ࿈ͷଟ͞

Slide 5

Slide 5 text

՝୊ײ • ن໛͕େ͖͘ͳΔʹͭΕͯUIΠϕϯτɺγεςϜΠϕϯτʹ ΑΔڍಈΛίϯτϩʔϧͰ͖ͳ͘ͳ͖ͬͯͨ • ViewModelͱͷ૒ํ޲όΠϯσΟϯάͱͦΕΒͷґଘؔ܎ ͷ༧ଌͷͮ͠Β͞ • ঢ়ଶͷ؅ཧͱϞσϧͷૢ࡞ͱAPIૢ࡞͕ີ݁߹

Slide 6

Slide 6 text

Ͳ͜ͰԿ͕ى͖ͯΔ͔Α͘ Θ͔ΒΜ

Slide 7

Slide 7 text

୭͔ॿ͚ͯ͘Ε

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

͓ͬʁ

Slide 10

Slide 10 text

Ǒ2way-bindingͰ͸ɺViewModelͰViewͷ ஋΋Modelͷ஋΋؅ཧ͠ͳ͍ͱ͍͚ͳ͍ͱ ͜Ζ͕ͭΒ͞ͷݪҼʹͳ͍ͬͯΔɻ ǒ

Slide 11

Slide 11 text

Θ͔Δɻ

Slide 12

Slide 12 text

Ǒ͡Ό͋ͦ΋ͦ΋ViewΛඳը͢Δͱ͖ʹɺ Modelͷঢ়ଶ͔Βશ෦࠶ඳը͢Ε͹͍͍Μ ͡Όͳ͍ʁ ͦͨ͠ΒModelͷ஋Λ؅ཧ͢Δ͚ͩͰྑ͘ ͳͬͯɺViewͷ஋͸ߟ͑ͳͯ͘Α͘ͳΔΜ ͡Όͳ͍ʁ ǒ

Slide 13

Slide 13 text

Ǒ͜ΕʹϐλϦͱ͸·Δͷ͕Fluxͱ͍͏֓೦ Ͱɺ͜Ε͸ViewͷதͰͷ஋ͷมߋΛͦͷ· ·View಺ͰॲཧΛͤͣɺผͷ૚ʹྲྀ͠ࠐΈ ·͢ɻ ǒ

Slide 14

Slide 14 text

ͳΔ΄Ͳʁ

Slide 15

Slide 15 text

SwiftFlux͍ͬͯ͏ϥΠϒϥϦΛ࡞ͬͨΑ • https://github.com/yonekawa/SwiftFlux • DispatcherͱͦΕʹඥͮ͘Action/Storeͷந৅Խ • ReduceStoreͱ͔Flux Utils΋Ұ෦࣮૷ͯ͠Δ • ϓϩτίϧࢦ޲ͰSwiftΒ͠͞Λҙࣝ

Slide 16

Slide 16 text

࣮ઓ౤ೖ΋ͯ͠ΔΑ https://itunes.apple.com/jp/app/id1037197002

Slide 17

Slide 17 text

୯ํ޲ϑϩʔ with ܕ੍໿ TUSVDU$SFBUF5PEP"DUJPO\ UZQFBMJBT1BZMPBE5PEP GVODJOWPLF EJTQBUDIFS%JTQBUDIFS \ MFUUPEP5PEP UJUMF/FX5P%P  EJTQBUDIFSEJTQBUDI TFMG SFTVMU3FTVMU WBMVFUPEP  ^ ^ DMBTT5PEP4UPSF4UPSF#BTF\ QSJWBUF TFU WBSUPEP5PEP  JOJU \ SFHJTUFS $SFBUF5PEPTFMG \ SFTVMU JO TXJUDISFTVMU\ DBTF4VDDFTT MFUWBMVF  UPEPWBMVF FNJU$IBOHF  EFGBVMU CSFBL ^ ^ ^ ^

Slide 18

Slide 18 text

ΞϓϦͷ։ൃํ਑ • جຊతʹViewControllerͱ1:1ͰStoreΛ࡞Γঢ়ଶΛ؅ཧ͢Δ • ͦΕͱผͰΞϓϦέʔγϣϯશମͷঢ়ଶʢೝূ͍ͯ͠Δͱ͔ʣ Λ؅ཧ͢ΔStoreΛ࡞Δ • APIϦΫΤετ͸ActionͰߦ͍݁ՌΛActionͷPayloadͱͯ͠ ѻ͏ • Realm(DB)΁ͷอଘ͸ΞϓϦέʔγϣϯͷঢ়ଶมԽͱΈͳ͠ StoreͰߦ͏

Slide 19

Slide 19 text

Viewͷߋ৽͸Ͳ͏͢Δʁ • Swiftͷੈքʹ͸React͕ଘࡏ͠ͳ͍ɻͦΕͬΆ͍΋ͷ͸͍͘ ͔ͭ͋Δ͕ɺStoryboradͳͲϓϥοτϑΥʔϜ͕ఏڙ͢Δ ΋ͷ͔Β֎ΕΔͷ͸ϦεΫ͕ߴ͍ • ͋Δఔ౓͸UIKit͕ޮ཰Α͘࠶ඳըͯ͘͠ΕΔ͕ɺ UITableViewͳͲΛ͏·ࠩ͘෼ߋ৽͢Δ࢓૊Έ͕΄͍͠ • ࠓ͸ࣗ෼Ͱஸೡʹࠩ෼ߋ৽Λߦ͏ํ਑

Slide 20

Slide 20 text

Τϥʔॲཧ • ActionͷPayloadͰErrorΦϒδΣΫτΛStoreʹ౉͠ɺStore ͕ঢ়ଶͱͯ͠อ࣋ • Τϥʔ΋ঢ়ଶΛม͑ΔActionͱͯ͠ѻ͏΂͖͔ • ͍·ͷSwiftFlux͸Swift2ͷthrowsΛ͏·͘࢖͍͑ͯͳ͍

Slide 21

Slide 21 text

Ξχϝʔγϣϯ • ۪௚ʹ΍ΔͱFluxͷϑϩʔ͕େྔʹճΔ • Ξχϝʔγϣϯͷεςʔλεʢ։࢝ɺऴྃʣΛঢ়ଶͱͯ͠ѻ ͏΂͖͔ • JSͷํʑ͸Ͳ͏ઃܭͯ͠ΔΜͰ͔͢Ͷʁ

Slide 22

Slide 22 text

ଞʹ͜͏͍͏ϥΠϒϥϦ͸ ແ͍ͷʁ

Slide 23

Slide 23 text

ReSwift • https://github.com/ReSwift/ReSwift • Swift൛Reduxɻ࠷ۙ஫໨͞Ε͖ͯͯΔɻ • SwiftFluxͰ͸StoreGroupΛ࡞ͬͯࣅͨΑ͏ͳ͜ͱΛ΍Ζ͏ ͱͯ͠Δ͚Ͳ͜Ε͔Β

Slide 24

Slide 24 text

ࢀߟϦϯΫ SwiftFluxͰෳࡶͳঢ়ଶͷมԽΛ༧ଌՄೳʹ͢ΔiOSΞϓϦ։ൃ http://qiita.com/yonekawa/items/c8a53d534084850963a3

Slide 25

Slide 25 text

ωΠςΟϒΞϓϦͷ ϑϩϯτΤϯυ΋େม΍Ͱɻ