Slide 1

Slide 1 text

iOSΞϓϦͷΞʔΩςΫνϟʹ͍ͭͯߟ͑Δ DevSapษڧձ 17/05/20

Slide 2

Slide 2 text

ੁݪ ༞ @yusuga_

Slide 3

Slide 3 text

ΞʔΩςΫνϟͱ͸ 4 ίϯϐϡʔλͷઃܭʹؔ͢Δ࢓༷·ͨ͸ߟ͑ํ ΢ΟζμϜӳ࿨ࣙయ

Slide 4

Slide 4 text

ࠓ೔ͷςʔϚ 4 ϢʔβΠϯλʔϑΣʔεΛ࣋ͭΞϓϦέʔγϣϯΛ࣮૷͢ ΔͨΊͷΞʔΩςΫνϟ

Slide 5

Slide 5 text

ԿΛղܾ͍ͨ͠ͷ͔ 4 ΞϓϦ಺ͷϩδοΫ΍Ϋϥεߏ଄Λ੔ཧ͍ͨ͠

Slide 6

Slide 6 text

ԿΛղܾ͍ͨ͠ͷ͔ 4 ΞϓϦ಺ͷϩδοΫ΍Ϋϥεߏ଄Λ੔ཧ͍ͨ͠ 4 ίϯϙʔωϯτಉ͕࢜ૄ݁߹

Slide 7

Slide 7 text

ԿΛղܾ͍ͨ͠ͷ͔ 4 ΞϓϦ಺ͷϩδοΫ΍Ϋϥεߏ଄Λ੔ཧ͍ͨ͠ 4 ίϯϙʔωϯτಉ͕࢜ૄ݁߹ 4 ֤੹຿͕໌֬ʹͳΔ

Slide 8

Slide 8 text

ԿΛղܾ͍ͨ͠ͷ͔ 4 ΞϓϦ಺ͷϩδοΫ΍Ϋϥεߏ଄Λ੔ཧ͍ͨ͠ 4 ίϯϙʔωϯτಉ͕࢜ૄ݁߹ 4 ֤੹຿͕໌֬ʹͳΔ 4 ࠶ར༻ੑɺอकੑɺ֦ுੑ͕ߴ·Δ

Slide 9

Slide 9 text

ԿΛղܾ͍ͨ͠ͷ͔ 4 ΞϓϦ಺ͷϩδοΫ΍Ϋϥεߏ଄Λ੔ཧ͍ͨ͠ 4 ίϯϙʔωϯτಉ͕࢜ૄ݁߹ 4 ֤੹຿͕໌֬ʹͳΔ 4 ࠶ར༻ੑɺอकੑɺ֦ுੑ͕ߴ·Δ 4 ςετ͠΍͍͢

Slide 10

Slide 10 text

୅දతͳΞʔΩςΫνϟ

Slide 11

Slide 11 text

୅දతͳΞʔΩςΫνϟ 4 MVC 4 MVC2 / Model 2 (MVC) Architecture 4 MVP 4 MVVM 4 Clean Architecture

Slide 12

Slide 12 text

୅දతͳΞʔΩςΫνϟ 4 MVC 4 MVC2 / Model 2 (MVC) Architecture 4 AppleͷϑϨʔϜϫʔΫͰ࠾༻͞Ε͍ͯΔ 4 MVP 4 MVVM 4 Clean Architecture

Slide 13

Slide 13 text

MVC2 https://etolstoy.gitbooks.io/the-book-of-viper/content/путь-от-massive-viewcontroller-до-viper.html

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

MVC2 https://etolstoy.gitbooks.io/the-book-of-viper/content/путь-от-massive-viewcontroller-до-viper.html

Slide 16

Slide 16 text

MVC2 https://etolstoy.gitbooks.io/the-book-of-viper/content/путь-от-massive-viewcontroller-до-viper.html

Slide 17

Slide 17 text

MVC2 https://etolstoy.gitbooks.io/the-book-of-viper/content/путь-от-massive-viewcontroller-до-viper.html

Slide 18

Slide 18 text

MVC2 https://etolstoy.gitbooks.io/the-book-of-viper/content/путь-от-massive-viewcontroller-до-viper.html

Slide 19

Slide 19 text

MVC2 https://etolstoy.gitbooks.io/the-book-of-viper/content/путь-от-massive-viewcontroller-до-viper.html

Slide 20

Slide 20 text

MVC2 https://etolstoy.gitbooks.io/the-book-of-viper/content/путь-от-massive-viewcontroller-до-viper.html

Slide 21

Slide 21 text

MVC2ͷ໰୊

Slide 22

Slide 22 text

https://www.slideshare.net/Rambler-iOS/massive-view-controller

Slide 23

Slide 23 text

Massive View Controllerͱ͸ 4 ControllerͰ༷ʑͳॲཧΛߦ͏͜ͱʹͳΓڊେԽͨ͠ঢ়ଶ

Slide 24

Slide 24 text

Massive View Controllerͱ͸ 4 ControllerͰ༷ʑͳॲཧΛߦ͏͜ͱʹͳΓڊେԽͨ͠ঢ়ଶ 4 Viewͷੜ੒΍؅ཧ

Slide 25

Slide 25 text

Massive View Controllerͱ͸ 4 ControllerͰ༷ʑͳॲཧΛߦ͏͜ͱʹͳΓڊେԽͨ͠ঢ়ଶ 4 Viewͷੜ੒΍؅ཧ 4 I/Oॲཧ

Slide 26

Slide 26 text

Massive View Controllerͱ͸ 4 ControllerͰ༷ʑͳॲཧΛߦ͏͜ͱʹͳΓڊେԽͨ͠ঢ়ଶ 4 Viewͷੜ੒΍؅ཧ 4 I/Oॲཧ 4 σʔλͷม׵

Slide 27

Slide 27 text

Massive View Controllerͱ͸ 4 ControllerͰ༷ʑͳॲཧΛߦ͏͜ͱʹͳΓڊେԽͨ͠ঢ়ଶ 4 Viewͷੜ੒΍؅ཧ 4 I/Oॲཧ 4 σʔλͷม׵ 4 ΩʔϘʔυͷ؅ཧ

Slide 28

Slide 28 text

Massive View Controllerͱ͸ 4 ControllerͰ༷ʑͳॲཧΛߦ͏͜ͱʹͳΓڊେԽͨ͠ঢ়ଶ 4 Viewͷੜ੒΍؅ཧ 4 I/Oॲཧ 4 σʔλͷม׵ 4 ΩʔϘʔυͷ؅ཧ 4 DelegateͳͲͰҠৡ͞Εͨॲཧ

Slide 29

Slide 29 text

Massive View Controllerͱ͸ 4 ControllerͰ༷ʑͳॲཧΛߦ͏͜ͱʹͳΓڊେԽͨ͠ঢ়ଶ 4 Viewͷੜ੒΍؅ཧ 4 I/Oॲཧ 4 σʔλͷม׵ 4 ΩʔϘʔυͷ؅ཧ 4 DelegateͳͲͰҠৡ͞Εͨॲཧ 4 ը໘ભҠ

Slide 30

Slide 30 text

Massive View ControllerͷݪҼͱվળ 4 ༷ʑͳϏδωεϩδοΫΛControllerʹॻ͖͕ͪ

Slide 31

Slide 31 text

Massive View ControllerͷݪҼͱվળ 4 ༷ʑͳϏδωεϩδοΫΛControllerʹॻ͖͕ͪ 4 ϏδωεϩδοΫ == ॲཧ

Slide 32

Slide 32 text

Massive View ControllerͷݪҼͱվળ 4 ༷ʑͳϏδωεϩδοΫΛControllerʹॻ͖͕ͪ 4 ϏδωεϩδοΫ == ॲཧ 4 ͨͩ͢͠΂ͯͷॲཧͰ͸ͳ͍

Slide 33

Slide 33 text

Massive View ControllerͷݪҼͱվળ 4 ༷ʑͳϏδωεϩδοΫΛControllerʹॻ͖͕ͪ 4 ϏδωεϩδοΫ == ॲཧ 4 ͨͩ͢͠΂ͯͷॲཧͰ͸ͳ͍ 4 ControllerͰ΍Δ΂͖ॲཧ΋͋Δ

Slide 34

Slide 34 text

Massive View ControllerͷݪҼͱվળ 4 ༷ʑͳϏδωεϩδοΫΛControllerʹॻ͖͕ͪ 4 ϏδωεϩδοΫ == ॲཧ 4 ͨͩ͢͠΂ͯͷॲཧͰ͸ͳ͍ 4 ControllerͰ΍Δ΂͖ॲཧ΋͋Δ 4 جຊ͸Ϟσϧ͕ϏδωεϩδοΫΛߦ͏

Slide 35

Slide 35 text

Massive View ControllerͷݪҼͱվળ 4 ༷ʑͳϏδωεϩδοΫΛControllerʹॻ͖͕ͪ 4 ϏδωεϩδοΫ == ॲཧ 4 ͨͩ͢͠΂ͯͷॲཧͰ͸ͳ͍ 4 ControllerͰ΍Δ΂͖ॲཧ΋͋Δ 4 جຊ͸Ϟσϧ͕ϏδωεϩδοΫΛߦ͏ 4 ߏ଄Խ/ந৅Խ͔͗ͯ͑ͬͯ͢͠ಡΈͮΒ͘ͳΔ৔߹΋

Slide 36

Slide 36 text

Massive View ControllerͷݪҼͱվળ 4 ༷ʑͳϏδωεϩδοΫΛControllerʹॻ͖͕ͪ 4 ϏδωεϩδοΫ == ॲཧ 4 ͨͩ͢͠΂ͯͷॲཧͰ͸ͳ͍ 4 ControllerͰ΍Δ΂͖ॲཧ΋͋Δ 4 جຊ͸Ϟσϧ͕ϏδωεϩδοΫΛߦ͏ 4 ߏ଄Խ/ந৅Խ͔͗ͯ͑ͬͯ͢͠ಡΈͮΒ͘ͳΔ৔߹΋ 4 ϥϏΦϦίʔυ

Slide 37

Slide 37 text

Ͳͷఔ౓ϦϑΝΫλϦϯά͢Δ͔͸ ॏେͳ໰୊ͰɺόϥϯεΛݟ͚ͭΔ ͷ͸ࢸ೉ͷۀͰ͢ɻ by Andy Matuschak (ݩAppleͷ։ൃऀͰUIKitΛ୲౰) Let's Play: ڊେϏϡʔίϯτϩʔϥΛϦϑΝΫλϦϯά͠Α͏ʂ

Slide 38

Slide 38 text

ΞʔΩςΫνϟͰͷվળҊ

Slide 39

Slide 39 text

Reactive Programming + MVVM

Slide 40

Slide 40 text

https://aymen.co/javascript/what-is-reactive-programming/

Slide 41

Slide 41 text

Reactive Programmingͱ͸ 4 ඇಉظσʔλετϦʔϜΛ༻͍ΔϓϩάϥϛϯάύϥμΠ Ϝ(ཧ࿦త࿮૊Έ)

Slide 42

Slide 42 text

Reactive Programmingͱ͸ 4 ඇಉظσʔλετϦʔϜΛ༻͍ΔϓϩάϥϛϯάύϥμΠ Ϝ(ཧ࿦త࿮૊Έ) 4 σʔλʹ”࣌ؒͱ͍͏࣍ݩ”͕ՃΘΔ

Slide 43

Slide 43 text

Reactive Programmingͱ͸ 4 ඇಉظσʔλετϦʔϜΛ༻͍ΔϓϩάϥϛϯάύϥμΠ Ϝ(ཧ࿦త࿮૊Έ) 4 σʔλʹ”࣌ؒͱ͍͏࣍ݩ”͕ՃΘΔ 4 ୯Ұґଘʹͳͬͯ͠·͏୅ΘΓʹɺେ͖ͳ໰୊ΛΫϦΞʹ ղܾ

Slide 44

Slide 44 text

Reactive ProgrammingͰԿ͕Ͱ͖Δͷ͔ 4 ಉظ/ඇಉظʹؔΘΒͣઢܗతʹৼΔ෣͍Λهड़Ͱ͖ɺίʔ υྔΛݮΒ͢͜ͱ͕Ͱ͖Δ

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

query.rx_text // 1. 3จࣈҎ্ .filter {string in return string.characters.count > 3 } // 2. ࠷ޙͷೖྗ͔Β0.51ඵܦա .debounce(0.51, scheduler: MainScheduler.instance) // 3. ϦΫΤετΛੜ੒ .map {string in let apiURL = NSURL(string: "https://api.github.com/q?=" + string)! return NSURLRequest(URL: apiURL) } // 4. ϦΫΤετΛ࣮ߦʢඇಉظ௨৴ʣ .flatMapLatest { request in return NSURLSession.sharedSession().rx_data(request) } // 5. ϦΫΤετ݁ՌΛJSONΦϒδΣΫτʹม׵ .map { data —> Array in let json = try NSJSONSerialization.JSONObjectWithData( data, options: []) return json as! Array } // 6. RepoΦϒδΣΫτʹม׵ .map {object in return Repo(object: object) } // 7. RepoΦϒδΣΫτΛTableViewʹ൓ө .bindTo(tableView.rx_itemsWithCellIdentifier("Cell")) iOSΞϓϦ։ൃʹ͓͚ΔRxSwiftͷ׆༻ (※ ίʔυ͸rxswift-2.0)

Slide 47

Slide 47 text

iOSͰReactive Programming

Slide 48

Slide 48 text

iOSͰReactive Programming 4 ReactiveCocoa ⭐ 17,222 4 Objective-C࣌୅͔Β͋Δݹג 4 RxSwift ⭐ 9,244 4 ReactiveX(Reactive Extensions)ϑΝϛϦʔ

Slide 49

Slide 49 text

iOSͰReactive Programming 4 ReactiveCocoa ⭐ 17,222 4 Objective-C࣌୅͔Β͋Δݹג 4 RxSwift ⭐ 9,244 4 ReactiveX(Reactive Extensions)ϑΝϛϦʔ 4 Rx.NET͔Β࢝·Γ༷ʑͳݴޠʹҠ২

Slide 50

Slide 50 text

iOSͰReactive Programming 4 ReactiveCocoa ⭐ 17,222 4 Objective-C࣌୅͔Β͋Δݹג 4 RxSwift ⭐ 9,244 4 ReactiveX(Reactive Extensions)ϑΝϛϦʔ 4 Rx.NET͔Β࢝·Γ༷ʑͳݴޠʹҠ২ 4 ଞͷRxJava, RxJSͳͲͱ֓೦͕౷Ұ͞Ε͍ͯΔͷͰ Web্ͷ৘ใ͕๛෋

Slide 51

Slide 51 text

iOSͰReactive Programming 4 ReactiveCocoa ⭐ 17,222 4 Objective-C࣌୅͔Β͋Δݹג 4 RxSwift ⭐ 9,244 4 ReactiveX(Reactive Extensions)ϑΝϛϦʔ 4 Rx.NET͔Β࢝·Γ༷ʑͳݴޠʹҠ২ 4 ଞͷRxJava, RxJSͳͲͱ֓೦͕౷Ұ͞Ε͍ͯΔͷͰ Web্ͷ৘ใ͕๛෋

Slide 52

Slide 52 text

Reactive Programmingͷ ݕࡧ࣌ͷ஫ҙ

Slide 53

Slide 53 text

·͗ΒΘ໊͍͠শ

Slide 54

Slide 54 text

·͗ΒΘ໊͍͠শ 4 React / React.js / ReactJS 4 React Native 4 Reactive Programming

Slide 55

Slide 55 text

·͗ΒΘ໊͍͠শ 4 React (௨শ React.js/ReactJS) 4 Facebook੡ͷJavaScriptϥΠϒϥϦ 4 React Native 4 ReactͰiOS/Android։ൃ͕Ͱ͖ΔFacebook੡ͷϑϨ ʔϜϫʔΫ 4 Reactive Programming 4 ඇಉظσʔλετϦʔϜΛ༻͍Δϓϩάϥϛϯάύϥμ

Slide 56

Slide 56 text

React͸Reactive ProgrammingͰ͸ͳ͍ Reactive Programming͸େଟ਺ͷਓֶ͕Ϳʹ͸େม͔ͩ ΒɺReactͰ͸࠾༻͍ͯ͠ͳ͍ — by Sebastian (Reactͷ։ൃऀ) React͸ϦΞΫςΟϒϓϩάϥϛϯάͳͷ͔?

Slide 57

Slide 57 text

http://rehansaeed.com/model-view-viewmodel-mvvm-part1-overview/

Slide 58

Slide 58 text

MVVM 4 MicrosoftൃͷΞʔΩςΫνϟ WebΞϓϦέʔγϣϯ։ൃऀ͔ΒݟͨɺMVCͱMVPɺͦͯ͠MVVMͷҧ͍

Slide 59

Slide 59 text

MVVM 4 MicrosoftൃͷΞʔΩςΫνϟ 4 ίΞίϯηϓτ͸ɺσʔλόΠϯσ Οϯά WebΞϓϦέʔγϣϯ։ൃऀ͔ΒݟͨɺMVCͱMVPɺͦͯ͠MVVMͷҧ͍

Slide 60

Slide 60 text

MVVM 4 MicrosoftൃͷΞʔΩςΫνϟ 4 ίΞίϯηϓτ͸ɺσʔλόΠϯσ Οϯά 4 ViewModelͱ͍͏Modelͷσʔλ ΛViewͰѻ͍΍͘͢͢Δ΋ͷΛઃ ͚Δɻ WebΞϓϦέʔγϣϯ։ൃऀ͔ΒݟͨɺMVCͱMVPɺͦͯ͠MVVMͷҧ͍

Slide 61

Slide 61 text

MVVM 4 MicrosoftൃͷΞʔΩςΫνϟ 4 ίΞίϯηϓτ͸ɺσʔλόΠϯσ Οϯά 4 ViewModelͱ͍͏Modelͷσʔλ ΛViewͰѻ͍΍͘͢͢Δ΋ͷΛઃ ͚Δɻ 4 ViewͱViewModelؒ͸σʔλόΠ ϯσΟϯάͱ͍͏ػೳΛ࢖͍ɺσ ʔλͦͷ΋ͷΛڞ༗ͯ͠औΓѻ͏ WebΞϓϦέʔγϣϯ։ൃऀ͔ΒݟͨɺMVCͱMVPɺͦͯ͠MVVMͷҧ͍

Slide 62

Slide 62 text

MVC ↓ Reactive Programming + MVVM

Slide 63

Slide 63 text

Reactive Programming + MVVM 4 Massive View Controller͸վળ͞Εͨɻ

Slide 64

Slide 64 text

Reactive Programming + MVVM 4 Massive View Controller͸վળ͞Εͨɻ 4 ...͔͠͠ɺ৽ͨʹผͷෳࡶ͕͞ൃੜͨ͠ɻ

Slide 65

Slide 65 text

Reactive Programming + MVVM 4 Massive View Controller͸վળ͞Εͨɻ 4 ...͔͠͠ɺ৽ͨʹผͷෳࡶ͕͞ൃੜͨ͠ɻ 4 ControllerͰߦͳ͍ͬͯͨॲཧ͕ViewModelʹҠΓɺ ͦΕͰMasassive View Controller͕վળ͞Ε͚ͨͩ

Slide 66

Slide 66 text

Reactive Programming + MVVM 4 Massive View Controller͸վળ͞Εͨɻ 4 ...͔͠͠ɺ৽ͨʹผͷෳࡶ͕͞ൃੜͨ͠ɻ 4 ControllerͰߦͳ͍ͬͯͨॲཧ͕ViewModelʹҠΓɺ ͦΕͰMasassive View Controller͕վળ͞Ε͚ͨͩ 4 ͜Ε͸ઃܭ͚ͩͰͲ͏ʹ͔Ͱ͖Δ໰୊͡Όͳ͍ͷͰ͠ΐ ͏͕ͳ͍

Slide 67

Slide 67 text

Reactive Programming + MVVM 4 Massive View Controller͸վળ͞Εͨɻ 4 ...͔͠͠ɺ৽ͨʹผͷෳࡶ͕͞ൃੜͨ͠ɻ 4 ControllerͰߦͳ͍ͬͯͨॲཧ͕ViewModelʹҠΓɺ ͦΕͰMasassive View Controller͕վળ͞Ε͚ͨͩ 4 ͜Ε͸ઃܭ͚ͩͰͲ͏ʹ͔Ͱ͖Δ໰୊͡Όͳ͍ͷͰ͠ΐ ͏͕ͳ͍ 4 Reactive ProgrammingͰίʔυྔ͸ݮΒͤΔ

Slide 68

Slide 68 text

Reactive Programmingͷॴײ

Slide 69

Slide 69 text

Reactive Programmingͷॴײ 4 ࢓૊Έ͕ෳࡶͰɺ֮͑Δͷ͕େม

Slide 70

Slide 70 text

Reactive Programmingͷॴײ 4 ࢓૊Έ͕ෳࡶͰɺ֮͑Δͷ͕େม 4 ֮͑ͨޙ΋ɺ࢖͏ͷ͕େม

Slide 71

Slide 71 text

Reactive Programmingͷॴײ 4 ࢓૊Έ͕ෳࡶͰɺ֮͑Δͷ͕େม 4 ֮͑ͨޙ΋ɺ࢖͏ͷ͕େม 4 ͍ΘΏΔֶशίετ͕ߴ͍

Slide 72

Slide 72 text

RxSwiftͷॴײ

Slide 73

Slide 73 text

RxSwiftͷॴײ 4 ૒ํ޲όΠϯσΟϯά

Slide 74

Slide 74 text

RxSwiftͷॴײ 4 ૒ํ޲όΠϯσΟϯά 4 ୯ํ޲όΠϯσΟϯάΛ͓ޓ͍ʹߦ͑͹૒ํ޲όΠϯσ ΟϯάͩΑͶ! - by RxSwiftͷIssueʹͯ ReactiveX/RxSwift - two-way binding #152

Slide 75

Slide 75 text

RxSwiftͷॴײ 4 ૒ํ޲όΠϯσΟϯά 4 ୯ํ޲όΠϯσΟϯάΛ͓ޓ͍ʹߦ͑͹૒ํ޲όΠϯσ ΟϯάͩΑͶ! - by RxSwiftͷIssueʹͯ 4 ୯७ʹσʔλ͕ಉظ͞ΕΔΑ͏ͳ࢓૊ΈͰ͸ͳ͍ ReactiveX/RxSwift - two-way binding #152

Slide 76

Slide 76 text

RxSwiftͷॴײ 4 ૒ํ޲όΠϯσΟϯά 4 ୯ํ޲όΠϯσΟϯάΛ͓ޓ͍ʹߦ͑͹૒ํ޲όΠϯσ ΟϯάͩΑͶ! - by RxSwiftͷIssueʹͯ 4 ୯७ʹσʔλ͕ಉظ͞ΕΔΑ͏ͳ࢓૊ΈͰ͸ͳ͍ 4 ߏจ͸ॻ͖΍͘͢ɺDelegateɺClosureɺCocoaͷ KVOΑΓ͸ॊೈͰ࣮૷΋ָ ReactiveX/RxSwift - two-way binding #152

Slide 77

Slide 77 text

MVVM + RxSwiftͷॴײ

Slide 78

Slide 78 text

MVVM + RxSwiftͷॴײ 4 ΞϓϦͷن໛͕େ͖͘ͳΔͱViewModelͷॳظԽɺ ObservableετϦʔϜ͕ෳࡶʹͳΔ

Slide 79

Slide 79 text

MVVM + RxSwiftͷॴײ 4 ΞϓϦͷن໛͕େ͖͘ͳΔͱViewModelͷॳظԽɺ ObservableετϦʔϜ͕ෳࡶʹͳΔ 4 Massive View ControllerΛղܾ͢Δํ๏ͱ͸ҟͳΔछ ྨͷෳࡶ͞

Slide 80

Slide 80 text

ͱ͸ݴͬͯ΋

Slide 81

Slide 81 text

ͱ͸ݴͬͯ΋ 4 MVC2ΑΓReactive Programming + MVVMͷํ͕͍͍

Slide 82

Slide 82 text

ͱ͸ݴͬͯ΋ 4 MVC2ΑΓReactive Programming + MVVMͷํ͕͍͍ 4 ͨͩɺ͜ΕͰ໰୊͕ղܾͨ͠ͱ͸ࢥ͑ͳ͔ͬͨ...

Slide 83

Slide 83 text

࣍ͷվળҊ

Slide 84

Slide 84 text

The Reactive Architecture

Slide 85

Slide 85 text

https://github.com/ReactorKit/ReactorKit

Slide 86

Slide 86 text

ReactorKit 4 Reactive Programming + Flux

Slide 87

Slide 87 text

ReactorKit 4 Reactive Programming + Flux 4 RxSwiftʹґଘ͢ΔܰྔͳϑϨʔϜϫʔΫ

Slide 88

Slide 88 text

ReactorKit 4 Reactive Programming + Flux 4 RxSwiftʹґଘ͢ΔܰྔͳϑϨʔϜϫʔΫ 4 2017/1/7 ެ։

Slide 89

Slide 89 text

ReactorKit 4 Reactive Programming + Flux 4 RxSwiftʹґଘ͢ΔܰྔͳϑϨʔϜϫʔΫ 4 2017/1/7 ެ։ 4 2017/5/20 Github ⭐ 512

Slide 90

Slide 90 text

ReactorKit 4 ։ൃऀ @devxoul 4 Then ⭐ 1,616 4 URLNavigator ⭐ 1,076 4 Toaster ⭐ 722 4 SwiftyImage ⭐ 612 4 UITextView+Placeholder ⭐ 572 4 RxKeyboard ⭐ 444

Slide 91

Slide 91 text

Flux

Slide 92

Slide 92 text

Flux 4 Facebook੡ͷΞʔΩςΫνϟ

Slide 93

Slide 93 text

Flux 4 Facebook੡ͷΞʔΩςΫνϟ 4 ಉ໊ͷJavaScriptͷϑϨʔϜϫʔΫ΋͋Δ

Slide 94

Slide 94 text

Flux 4 Facebook੡ͷΞʔΩςΫνϟ 4 ಉ໊ͷJavaScriptͷϑϨʔϜϫʔΫ΋͋Δ 4 ୯ํ޲σʔλϑϩʔ https://github.com/facebook/flux/tree/master/examples/flux-concepts

Slide 95

Slide 95 text

Flux 4 Actions: View౳͔ΒൃՐ͞Εͯ࡞ ΒΕΔΠϕϯτ Fluxͱ͸ͳΜͳͷ͔

Slide 96

Slide 96 text

Flux 4 Actions: View౳͔ΒൃՐ͞Εͯ࡞ ΒΕΔΠϕϯτ 4 Dispatcher: શͯͷΞΫγϣϯΛ ड͚ͯStoreʹΠϕϯτΛൃՐ͢Δ Fluxͱ͸ͳΜͳͷ͔

Slide 97

Slide 97 text

Flux 4 Actions: View౳͔ΒൃՐ͞Εͯ࡞ ΒΕΔΠϕϯτ 4 Dispatcher: શͯͷΞΫγϣϯΛ ड͚ͯStoreʹΠϕϯτΛൃՐ͢Δ 4 Stores: ΞϓϦέʔγϣϯશମͷ σʔλͱϏδωεϩδοΫ(ඞͣ ActionʹΑͬͯσʔλΛߋ৽͢Δ) Fluxͱ͸ͳΜͳͷ͔

Slide 98

Slide 98 text

The Reactive Architecture https://github.com/ReactorKit/ReactorKit

Slide 99

Slide 99 text

The Reactive Architecture 4 MVVMͷVM͕Reactorʹஔ͖׵ ͑ΒΕͨ https://github.com/ReactorKit/ReactorKit

Slide 100

Slide 100 text

The Reactive Architecture 4 MVVMͷVM͕Reactorʹஔ͖׵ ͑ΒΕͨ 4 View͕ΞΫγϣϯΛग़ྗ͠ɺ Reactor͕ঢ়ଶ(State)Λग़ྗ͢Δ https://github.com/ReactorKit/ReactorKit

Slide 101

Slide 101 text

The Reactive Architecture 4 MVVMͷVM͕Reactorʹஔ͖׵ ͑ΒΕͨ 4 View͕ΞΫγϣϯΛग़ྗ͠ɺ Reactor͕ঢ়ଶ(State)Λग़ྗ͢Δ 4 ୯ํ޲ͷσʔλϑϩʔ(Flux) https://github.com/ReactorKit/ReactorKit

Slide 102

Slide 102 text

The Reactive Architecture 4 MVVMͷVM͕Reactorʹஔ͖׵ ͑ΒΕͨ 4 View͕ΞΫγϣϯΛग़ྗ͠ɺ Reactor͕ঢ়ଶ(State)Λग़ྗ͢Δ 4 ୯ํ޲ͷσʔλϑϩʔ(Flux) 4 Reactor͸Reactive ProgrammingͰ୯ํ޲ͷσʔλε τϦʔϜΛߏங͍ͯ͠Δ https://github.com/ReactorKit/ReactorKit

Slide 103

Slide 103 text

MVVMͷԿ͕վળ͞Εͨ ͷ͔

Slide 104

Slide 104 text

MVVMͷ໰୊

Slide 105

Slide 105 text

MVVMͷ໰୊ 4 ΞϓϦͷن໛͕େ͖͘ͳΔͱViewModelͷॳظԽɺ ObservableετϦʔϜ͕ෳࡶʹͳΔ

Slide 106

Slide 106 text

MVVMͷ໰୊ 4 ΞϓϦͷن໛͕େ͖͘ͳΔͱViewModelͷॳظԽɺ ObservableετϦʔϜ͕ෳࡶʹͳΔ ղܾ 4 ReactorKit͕୯ํ޲ͷσʔλετϦʔϜΛߏங

Slide 107

Slide 107 text

ReactorKitͷ୯ํ޲ͷσʔλετϦʔϜ 4 Action, Mutation, StateΛఆٛ https://github.com/ReactorKit/ReactorKit

Slide 108

Slide 108 text

ReactorKitͷ୯ํ޲ͷσʔλετϦʔϜ 4 Action, Mutation, StateΛఆٛ 4 mutate(), reduce()Ͱ্هΛมԽ https://github.com/ReactorKit/ReactorKit

Slide 109

Slide 109 text

ReactorKitͷ୯ํ޲ͷσʔλετϦʔϜ 4 Action, Mutation, StateΛఆٛ 4 mutate(), reduce()Ͱ্هΛมԽ 4 Service૚ͰϏδωεϩδοΫΛ࣮ ߦ https://github.com/ReactorKit/ReactorKit

Slide 110

Slide 110 text

ReactorKitͷ୯ํ޲ͷσʔλετϦʔϜ 4 MVVMͰߦͳ͍ͬͯͨ͜ͱΛ Reactor͕ߏ଄Λߏங https://github.com/ReactorKit/ReactorKit

Slide 111

Slide 111 text

ReactorKitͷ୯ํ޲ͷσʔλετϦʔϜ 4 MVVMͰߦͳ͍ͬͯͨ͜ͱΛ Reactor͕ߏ଄Λߏங 4 ViewModelͷॳظԽɺ ObservableετϦʔϜͷෳࡶ ͞Λ؇࿨ https://github.com/ReactorKit/ReactorKit

Slide 112

Slide 112 text

ReactorKitͷ୯ํ޲ͷσʔλετϦʔϜ 4 MVVMͰߦͳ͍ͬͯͨ͜ͱΛ Reactor͕ߏ଄Λߏங 4 ViewModelͷॳظԽɺ ObservableετϦʔϜͷෳࡶ ͞Λ؇࿨ 4 ߏ଄ͱϑϩʔ͕ܾ·ͬͯΔ͔Β ֤੹຿͕ΑΓ໌֬ʹͳΔ https://github.com/ReactorKit/ReactorKit

Slide 113

Slide 113 text

MVVMͷ໰୊ʢRxSwiftͷ໰୊ʁʣ 4 scan()ͱVariableΛ࢖Θ͟ΔΛಘͳ͍ RxSwiftͷreactorkitνϟϯωϧʹͯ

Slide 114

Slide 114 text

MVVMͷ໰୊ʢRxSwiftͷ໰୊ʁʣ 4 scan()ͱVariableΛ࢖Θ͟ΔΛಘͳ͍ 4 scan()Ͱ͸ෆे෼ͳέʔε͕͋Δ RxSwiftͷreactorkitνϟϯωϧʹͯ

Slide 115

Slide 115 text

MVVMͷ໰୊ʢRxSwiftͷ໰୊ʁʣ 4 scan()ͱVariableΛ࢖Θ͟ΔΛಘͳ͍ 4 scan()Ͱ͸ෆे෼ͳέʔε͕͋Δ 4 ReactorKitͰ͸վળ RxSwiftͷreactorkitνϟϯωϧʹͯ

Slide 116

Slide 116 text

MVVMͷ໰୊ʢRxSwiftͷ໰୊ʁʣ 4 scan()ͱVariableΛ࢖Θ͟ΔΛಘͳ͍ 4 scan()Ͱ͸ෆे෼ͳέʔε͕͋Δ 4 ReactorKitͰ͸վળ ※ ۩ମతʹͲͷΑ͏ͳ໰୊ͳͷ͔͕Θ͔Βͳ͍! RxSwiftͷreactorkitνϟϯωϧʹͯ

Slide 117

Slide 117 text

MVVMͷ໰୊ʢRxSwiftͷ໰୊ʁʣ 4 ৄ͘͠͸ɺSwiftMvvmTodoListΛࢀর 4 Microsoftܥͷ։ൃऀͰɺC#ͰͷMVVMͷܦݧऀ͕ RxSwiftͰMVVMΛ࣮૷ RxSwiftͷreactorkitνϟϯωϧʹͯ

Slide 118

Slide 118 text

ReactorKit͸࣮༻తͳα ϯϓϧ͕ἧ͍ͬͯΔͷͰ ֶͼ΍͍͢

Slide 119

Slide 119 text

ReactorKitͷαϯϓϧ(READMEʹهࡌ) 4 Counter 4 ࠷খݶͷ࣮૷ 4 GitHubSearch 4 γϯϓϧͳඇಉظॲཧͷ࣮૷

Slide 120

Slide 120 text

ReactorKitͷαϯϓϧ(READMEʹهࡌ) 4 RxTodo 4 Service૚ͰTableViewͷॲཧΛ࣮૷ 4 Cleverbot 4 Service૚ͰAPIϦΫΤετΛ࣮૷ 4 Drrrible 4 App StoreʹϦϦʔεࡁΈͷΞϓϦͰɺΑΓ࣮ફతͳ࣮ ૷͕֬ೝͰ͖Δ

Slide 121

Slide 121 text

The Reactive Architecture ͱ MVVMͷൺֱ

Slide 122

Slide 122 text

The Reactive ArchitectureͱMVVMͷൺֱ 4 The Reactive Architecture 4 RxTodo 4 Reactive Programming + MVVM 4 RxTodo / mvvm branch

Slide 123

Slide 123 text

The Reactive ArchitectureͱMVVMͷൺֱ 4 ReactorKitͷ࠷ॳͷΞʔΩςΫνϟ໊͸RxMVVMͩͬͨ

Slide 124

Slide 124 text

The Reactive ArchitectureͱMVVMͷൺֱ 4 ReactorKitͷ࠷ॳͷΞʔΩςΫνϟ໊͸RxMVVMͩͬͨ 4 ͦͷޙViewModel͕Reactorʹஔ͖׵ΘΓɺΞʔΩς Ϋνϟ໊΋The Reactive Architectureʹมߋ͞Εͨ

Slide 125

Slide 125 text

։ൃޮ཰ΞοϓͷΩʔϫʔυ Reactive Programming

Slide 126

Slide 126 text

։ൃޮ཰ΞοϓͷΩʔϫʔυ 4 Reactive Programming

Slide 127

Slide 127 text

։ൃޮ཰ΞοϓͷΩʔϫʔυ 4 Reactive Programming 4 ಉظ/ඇಉظ໰ΘͣઢܗతʹৼΔ෣͍Λهड़

Slide 128

Slide 128 text

։ൃޮ཰ΞοϓͷΩʔϫʔυ 4 Reactive Programming 4 ಉظ/ඇಉظ໰ΘͣઢܗతʹৼΔ෣͍Λهड़ 4 ίʔυྔ͕ݮΔ

Slide 129

Slide 129 text

։ൃޮ཰ΞοϓͷΩʔϫʔυ 4 Reactive Programming 4 ಉظ/ඇಉظ໰ΘͣઢܗతʹৼΔ෣͍Λهड़ 4 ίʔυྔ͕ݮΔ 4 ͨͩ͠ɺֶशίετ͸ߴ͍

Slide 130

Slide 130 text

։ൃޮ཰ΞοϓͷΩʔϫʔυ 4 Reactive Programming 4 ಉظ/ඇಉظ໰ΘͣઢܗతʹৼΔ෣͍Λهड़ 4 ίʔυྔ͕ݮΔ 4 ͨͩ͠ɺֶशίετ͸ߴ͍ 4 ୯Ұґଘʹͳͬͯ͠·͏ϦεΫ

Slide 131

Slide 131 text

खΛग़͢΂͖͔ʁ

Slide 132

Slide 132 text

RxSwiftͷSlackʹͯ 4 ʮRxSwiftΛֶͿҙຯ͸͋Δͷʁʯ

Slide 133

Slide 133 text

RxSwiftͷSlackʹͯ 4 ʮRxSwiftΛֶͿҙຯ͸͋Δͷʁʯ 4 ʮԶ͸લ·ͰϏϯͰఝΛୟ͍͚ͯͨͲɺϋϯϚʔΛखʹ͠ ͔ͯΒ؆୯ʹఝΛୟ͚ΔΑ͏ʹͳͬͨΑɻʯ

Slide 134

Slide 134 text

RxSwiftͷSlackʹͯ 4 ʮRxSwiftΛֶͿҙຯ͸͋Δͷʁʯ 4 ʮԶ͸લ·ͰϏϯͰఝΛୟ͍͚ͯͨͲɺϋϯϚʔΛखʹ͠ ͔ͯΒ؆୯ʹఝΛୟ͚ΔΑ͏ʹͳͬͨΑɻʯ 4 ʮ(ผͷਓ)ͨͩεϨοδϋϯϚʔͰఝଧͪ͢Δͱ΋ͬͱେ ͖ͳ໰୊ʹͳΔ͜ͱ΋͋ΔΑͶɻʯ

Slide 135

Slide 135 text

ϋϯϚʔΛ࣋ͭਓʹ͸ɺ ͢΂͕ͯఝʹݟ͑Δɻ -৺ཧֶऀ ΞϒϥϋϜɾϚζϩʔ meeting_hammer illustration ⡥ Frits Ahlefeldt Hiking.org - May 16, 2011

Slide 136

Slide 136 text

εϨοδϋϯϚʔ North Carolina National Guard (cc-by-2.0) The National Guard - 1 June 2009, 15:34

Slide 137

Slide 137 text

Reactive ProgrammingͰ͢ ΂ͯͷ໰୊Λղܾ͠Α͏ ͱ͢ΔͱͭΒ͍

Slide 138

Slide 138 text

RxSwift͸ֶͿҙຯ͋Δͷʁ 4 RxSwift͸͋Δ໰୊Λղܾ͢Δͷʹదͨ͠πʔϧ RxSwiftͷSlackʹͯ

Slide 139

Slide 139 text

RxSwift͸ֶͿҙຯ͋Δͷʁ 4 RxSwift͸͋Δ໰୊Λղܾ͢Δͷʹదͨ͠πʔϧ 4 ΋ͪΖΜͦΕ͸RxSwiftͰͳͯ͘΋ղܾՄೳͳ໰୊ RxSwiftͷSlackʹͯ

Slide 140

Slide 140 text

RxSwift͸ֶͿҙຯ͋Δͷʁ 4 RxSwift͸͋Δ໰୊Λղܾ͢Δͷʹదͨ͠πʔϧ 4 ΋ͪΖΜͦΕ͸RxSwiftͰͳͯ͘΋ղܾՄೳͳ໰୊ 4 RxSwift͸ͨͩͷπʔϧ͔ͩΒɺඞཁͩͱࢥͬͨΒ࢖͑͹ ͍͍ RxSwiftͷSlackʹͯ

Slide 141

Slide 141 text

RxSwift͸ֶͿҙຯ͋Δͷʁ 4 RxSwift͸͋Δ໰୊Λղܾ͢Δͷʹదͨ͠πʔϧ 4 ΋ͪΖΜͦΕ͸RxSwiftͰͳͯ͘΋ղܾՄೳͳ໰୊ 4 RxSwift͸ͨͩͷπʔϧ͔ͩΒɺඞཁͩͱࢥͬͨΒ࢖͑͹ ͍͍ 4 ͨͩ͠RxSwift͸εϨοδϋϯϚʔͷΑ͏ʹڊେ͔ͩΒɺ ΑΓͦͷϓϩδΣΫτʹϑΟοτͯ͠Δඞཁ͕͋Δ RxSwiftͷSlackʹͯ

Slide 142

Slide 142 text

·ͱΊ

Slide 143

Slide 143 text

·ͱΊ 4 Reactive Programming (RxSwift)

Slide 144

Slide 144 text

·ͱΊ 4 Reactive Programming (RxSwift) 4 ཁॴཁॴͷ։ൃޮ཰Ξοϓ

Slide 145

Slide 145 text

·ͱΊ 4 Reactive Programming (RxSwift) 4 ཁॴཁॴͷ։ൃޮ཰Ξοϓ 4 MVVM

Slide 146

Slide 146 text

·ͱΊ 4 Reactive Programming (RxSwift) 4 ཁॴཁॴͷ։ൃޮ཰Ξοϓ 4 MVVM 4 Massive View ControllerΛվળ

Slide 147

Slide 147 text

·ͱΊ 4 Reactive Programming (RxSwift) 4 ཁॴཁॴͷ։ൃޮ཰Ξοϓ 4 MVVM 4 Massive View ControllerΛվળ 4 The Reactive Architecture (ReactorKit)

Slide 148

Slide 148 text

·ͱΊ 4 Reactive Programming (RxSwift) 4 ཁॴཁॴͷ։ൃޮ཰Ξοϓ 4 MVVM 4 Massive View ControllerΛվળ 4 The Reactive Architecture (ReactorKit) 4 MVVMΛΑΓѻ͍΍͍͢ߏ଄ʹվળ

Slide 149

Slide 149 text

No content

Slide 150

Slide 150 text

ReactorKit 4 2017/5/20 v0.4.3

Slide 151

Slide 151 text

ReactorKit 4 2017/5/20 v0.4.3 4 جຊઃܭ͸Ͱ͖͍ͯΔΑ͏ʹݟ͑Δ͕ɺ·ͩv1.0ʹୡ͠ ͍ͯͳ͍

Slide 152

Slide 152 text

ReactorKit 4 2017/5/20 v0.4.3 4 جຊઃܭ͸Ͱ͖͍ͯΔΑ͏ʹݟ͑Δ͕ɺ·ͩv1.0ʹୡ͠ ͍ͯͳ͍ 4 RxSwift + MVVMΑΓ͸؆୯͔ͩΒྲྀߦΔ͔ͳʁ

Slide 153

Slide 153 text

ReactorKit 4 2017/5/20 v0.4.3 4 جຊઃܭ͸Ͱ͖͍ͯΔΑ͏ʹݟ͑Δ͕ɺ·ͩv1.0ʹୡ͠ ͍ͯͳ͍ 4 RxSwift + MVVMΑΓ͸؆୯͔ͩΒྲྀߦΔ͔ͳʁ 4 ݸਓతʹ͸޷͖ͳઃܭࢥ૝

Slide 154

Slide 154 text

ReactorKit 4 2017/5/20 v0.4.3 4 جຊઃܭ͸Ͱ͖͍ͯΔΑ͏ʹݟ͑Δ͕ɺ·ͩv1.0ʹୡ͠ ͍ͯͳ͍ 4 RxSwift + MVVMΑΓ͸؆୯͔ͩΒྲྀߦΔ͔ͳʁ 4 ݸਓతʹ͸޷͖ͳઃܭࢥ૝ 4 ڵຯ͕ଓ͍͍ͯͨΒɺ࣍ճͷษڧձͰReactorKitͷ࿩͕Ͱ ͖Ε͹ͱࢥ͍·͢ɻ

Slide 155

Slide 155 text

͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

Slide 156

Slide 156 text

ࢀߟ 4 Разбираем Massive View Controller 4 Massive View Controller 4 8 Patterns to Help You Destroy Massive View Controller 4 Let's Play: ڊେϏϡʔίϯτϩʔϥΛϦϑΝΫλϦϯά͠ Α͏ʂ 4 iOSΞϓϦ։ൃʹ͓͚ΔRxSwiftͷ׆༻ 4 React͸ϦΞΫςΟϒϓϩάϥϛϯάͳͷ͔?

Slide 157

Slide 157 text

ࢀߟ 4 Fluxͱ͸ͳΜͳͷ͔ 4 MVVM΍FRPʹऔΓ૊Έ΍͘͢͢ΔͨΊʹ 4 WebΞϓϦέʔγϣϯ։ൃऀ͔ΒݟͨɺMVCͱMVPɺͦ ͯ͠MVVMͷҧ͍