Slide 1

Slide 1 text

ReactiveCococaͷMVVMͰ៉ ྷͳίʔυ͕Ͱ͖Δͷ͔ @tomohisa Tomohisa Takaoka 2014/6/27

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

डୗ։ൃ ʴ ΤϯλʔϓϥΠζ J-Tech Creations, Inc www.jtechs.com follow me @tomohisa

Slide 4

Slide 4 text

ຊ೔ͷεϖγϟϧίϯςϯπ Twitter @tomohisa ͔ΒͲ͏ͧ follow me @tomohisa

Slide 5

Slide 5 text

iOSΞϓϦͷ։ൃख๏ MVCύλʔϯ

Slide 6

Slide 6 text

•View - xib, Storyboard •Controller - UIViewController •Model (ಠࣗʹ࡞੒͢Δ) https://developer.apple.com/jp/devcenter/ios/library/japanese.html ͜ͷυΩϡϝϯτ͕ྑ͍ײ͡ͰMVCΛઆ໌͍ͯ͠·͢

Slide 7

Slide 7 text

ViewController͕େ͖͘ͳΓ͗͢Δʂ ※OSXʹ͸ɺCocoaόΠϯσΟϯάͱ͍͏ ViewͱσʔλΛ݁߹ͤ͞Δػೳ͕͋Δ͕ɺ iOSʹ͸ଘࡏ͠ͳ͍

Slide 8

Slide 8 text

ࣾ಺༻ͷλΠϜγʔτ؅ཧΞϓϦ

Slide 9

Slide 9 text

Background : parse.com Ϣʔβʔ؅ཧͳͲ΍ͬͯ͘ΕΔ

Slide 10

Slide 10 text

ViewControllerʹσʔλऔಘͷίʔυ͕ͪ͝Ό·ͥ vVC (ංେԽͨ͠Ϗϡʔίϯτϩʔϥʔ)ʹͳͬͯ͠·ͬͨ

Slide 11

Slide 11 text

ReactiveCocoa Λ࢖ͬͯ MVVM ʹॻ͖׵͑Δ

Slide 12

Slide 12 text

ReactiveCocoaͱ͸ʁ Function Reactive Programming (FRP) ΛObjective-CͰ࣮ݱ͢ΔͨΊͷϑϨʔϜϫʔΫ https://github.com/ReactiveCocoa/ReactiveCocoa

Slide 13

Slide 13 text

http://maoe.hatenadiary.jp/entry/20100109/1263059731

Slide 14

Slide 14 text

MVVMͱ͸ http://www.teehanlax.com/blog/model-view-viewmodel-for-ios/

Slide 15

Slide 15 text

MVC MVVM ViewController͸ɺେ͖ͳҙຯͰͷ VʹؚΉ

Slide 16

Slide 16 text

M V VM Model ViewController + IB ViewModel

Slide 17

Slide 17 text

M V VM Model 1.

Slide 18

Slide 18 text

Ϟσϧͷ෼཭ํ๏ View, ViewModel͔Β෼཭͢Δ

Slide 19

Slide 19 text

Ϟσϧͷ෼཭ํ๏̍ σʔλ(JSONͳͲͰදݱ͞ΕΔΦϒδΣΫτ) ֤σʔλΛද͢ΫϥεΛ࡞Δ JSON, XML, ParseObject ͳͲͷ DictionaryΞΫηεΛແ͘͢ ͪΌΜͱܕΛ࡞Δ σʔλʹ༝དྷ͢ΔϩδοΫ͸͜͜ʹॻ͘ ʢྫ͑͹̎఺ͷڑ཭ΛٻΊͨΓɺΦϒδΣΫτ಺Ͱܭࢉ͠ ͨΓ͢Δ͹͍͋ʣ

Slide 20

Slide 20 text

worktime[“startedTime”] = [NSDate date]; worktime.startedTime = [NSDate date]; × ○

Slide 21

Slide 21 text

Ϟσϧͷ෼཭ํ๏̎ σʔλͷಡΈॻ͖ͳͲڞ௨Ͱ࢖͑Δػೳ (Downloader, Uploader, Calculator, Aggregator) ! σʔλͷશମ͔ΒΞϓϦ಺Ͱूܭ͍ͨ͠ͳͲ μ΢ϯϩʔυ͢ΔػೳͳͲ ※parse sdkʹඞཁͳػೳ͕͋ͬͨͷͰࠓճ͸࡞੒ͤͣ

Slide 22

Slide 22 text

Ϟσϧͷ෼཭ํ๏̏ ΞϓϦʹ݁߹͢Δ΋ͷ (ઃఆϑΝΠϧɺConstͳͲ) AppDelegateʹmodelϑΝΠϧΛ࣋ͨͤΔ AppDelegateʹͪ͝Όͪ͝Ό͔͔ͳ͍ʂ ΞϓϦͱͯ͠อ͍࣋ͯ͠Δσʔλ

Slide 23

Slide 23 text

࢖͏ͱ͖ એݴ ΞϓϦʹ݁߹͢ΔmodelΛ࡞੒͢Δ

Slide 24

Slide 24 text

M V VM View Model 2.

Slide 25

Slide 25 text

https://github.com/ReactiveCocoa/ReactiveViewModel

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

RACCommand: ଞͷΦϒδΣΫτ͔Β࣮ߦग़དྷΔɻ ඇಉظॲཧͷ௨஌Λड͚Δ͜ͱ΋Մೳ RACSignal: ௨஌ͷγάφϧΛड͚Δ͜ͱ͕Ͱ͖Δ KVOͰड͚औͬͨΒΓɺ௨஌ͷޙʹ͞Β ʹ࣍ͷ࡞ۀΛఆٛ͢Δ͜ͱ΋Մೳ

Slide 28

Slide 28 text

M V VM View and ViewController 3.

Slide 29

Slide 29 text

ViewModelΛ࡞੒ͯ͠ɺViewModelͱViewΛόΠϯυ͢Δ

Slide 30

Slide 30 text

ϘλϯԡԼͷΠϕϯτΛViewModel ͷRACCommandͱؔ࿈෇͚Δ

Slide 31

Slide 31 text

ςΩετೖྗ࣌ʹViewModelͷσʔλΛߋ৽ ViewModel಺ͰNoteͷߋ৽Λ؂ࢹ͠ɺߋ৽Λֻ͚Δ

Slide 32

Slide 32 text

ྑ͔ͬͨ఺ •ViewModel಺ʹ͸UIίʔυ͕ͳ͍ͨΊɺUnitTest͕Մೳ •ViewModelʹStatusͳͲΛ࣋ͨͤɺදࣔΛௐ੔͢Δͷ͕ ༰қͦ͏ •ͦΕͧΕͷίʔυ͕෼཭͍ͯ͠ΔͷͰ෼͔Γ΍͍͢ •σʔλͷνΣοΫͳͲΛ૊ΈࠐΊΔ •εϨουͷ؅ཧͳͲ͕ߦΘΕ͍ͯΔͨΊɺόοΫάϥ ΢ϯυͰUI͕มߋ͞ΕΔͳͲͷ໰୊͕͋·Γग़ͳͦ͞ ͏

Slide 33

Slide 33 text

Cons - ѱ͍఺ •ΊΜͲ͍͘͞ •Θ͔Γʹ͍͘ •ObjCͷػೳΛશ໘తʹ࢖͍ͬͯΔͷͰɺSwift͚ͩͰͲ Ε͚ͩग़དྷΔͷ͔ʁ •ReactiveCocoaΛೖΕΔͱϓϩδΣΫτ͕ॏ͘ͳΔϏϧ υʹ΍ͨΒ͕͔͔࣌ؒΔ •ॳΊͯ਺೔͚ͩͲ·ͩ෼͔Βͳ͍ڍಈ͕͋Δ ɹʢ෼͔Δਓ͍ͨΒڭ͍͑ͯͩ͘͞ʣ

Slide 34

Slide 34 text

૯ׅɿ େن໛ʹͳΕ͹ɺྑ͍΋ͷ͕ͭ͘Εͦ͏ɻ डୗ͕๩͍࣌͠ʹϓϩδΣΫτΛख఻ͬ ͯͩ͘͞ΔϑϦʔϥϯε͞Μืूதʂ