Mvvm is like born fraction

Preview:

Citation preview

MVVM IS LIKE FRACTURETECH TALK TOKYO VOL.5 10/5

HAVE YOU RECENTLY BEEN FRACTURE?

I HAD A FRACTURE BEFORE RELEASE MY PROJECT.

MVVM≒

TODAY, I’D LIKE TO TALK ABOUT MVVM.

INTRODUCTION

KENTARO HANEDA (27) @JUMBOS5▸ Job

▸ RareJob.Consumer Dept. Mobile Developer

▸ Job History

▸ Retty 👉 Yahoo!JAPAN(ヤフオク)👉 RareJob

▸ Work/Interest

▸ Go/iOS/Kotlin/Python/Marketing

PORTFOLIO

DEV.

「レアジョブ日常英会話アプリ」Swift2.3/Universal/1month

InShadeBackend (RoR/MySQL/PhantomJS)Swift2.0Android (Kotlin/RxJava)

released by adriablue.

lanskipWeek end commit.Backend (Azure/Golang/Revel)

WHAT’S MVVM?

RAREJOB APP ARCHITECTURE

My App has many state.

RAREJOB APP ARCHITECTURE

View View Model Model

Binding Update

Fetch

View ViewController Model

Update

ActionAction

Update

MVVM?

or

MVC?

RAREJOB APP ARCHITECTURE

View View Model Model

Binding Update

Fetch

View ViewController Model

Update

ActionAction

Update

????????????????

RAREJOB APP ARCHITECTURE

View View Model Model

Binding Update

Fetch

????????????????

STEP

FRACTURE

1. Slip Human.

2. Born has damage

3. Human to “Fracture”

STEP

MVVM

1. View get action.

2. Change value.

3. Change View and State.

View View Model Model

Binding Update

Fetch

STEP

View View Model Model

Binding Update

Fetch

class ArmView{ var vm:ArmViewModel var skin:Skin var hand:Hand func slip()}

class ArmViewModel{ var state:ArmStatus var born:BornModel …}

class BornModel{ var count:Int var damage:Float …}

View View Model Model

Binding Update

Fetch

class ArmView{ var vm:ArmViewModel var skin:Skin var hand:Hand func slip()}

class ArmViewModel{ var state:ArmStatus var born:BornModel …}

class BornModel{ var count:Int var damage:Float …}Call slip()

change viewmodel property “born”

STEP

View View Model Model

Binding Update

Fetch

class ArmView{ var vm:ArmViewModel var skin:Skin var hand:Hand func slip()}

class ArmViewModel{ var state:ArmStatus var born:BornModel …}

class BornModel{ var count:Int var damage:Float …}

Change values, and change “state”

STEP

View View Model Model

Binding Update

Fetch

class ArmView{ var vm:ArmViewModel var skin:Skin var hand:Hand func slip()}

class ArmViewModel{ var state:ArmStatus var born:BornModel …}

class BornModel{ var count:Int var damage:Float …}

Change “value”, then change “state” then change “view”

STEP

View View Model Model

Binding Update

Fetch

STEP

MVVM is …

🙅 born broken then state to Fracture , next view to Fracture.

🙆 born broken then state to Fracture then view to Fracture. ≒ BINDING

HOW TO USE MVVM?

RAREJOB APP ARCHITECTURE

How my app to mvvm?

ReserveView

ReserveViewModel :StateView

Model

TeacherDataStore

TeacherModel

RxSwift

ViewController ViewModel Repository Model

APIKIT

MVVM

RAREJOB APP ARCHITECTURE

ReserveView

ReserveViewModel :StateView

Model

TeacherDataStore

TeacherModel

RxSwift

ViewController ViewModel Repository Model

APIKITRxSwift can Binding value to view. So be able to Create View Behavior Declaratively.

But this library is a little heavy, need to long build time.

MVVM

RAREJOB APP ARCHITECTURE

ReserveView

ReserveViewModel :StateView

Model

TeacherDataStore

TeacherModel

RxSwift

ViewController ViewModel Repository Model

APIKITThis layer can provide interface, even if ViewModel is not understand need to use Cache or API.

MVVM

RAREJOB APP ARCHITECTURE

ReserveView

ReserveViewModel :StateView

Model

TeacherDataStore

TeacherModel

RxSwift

ViewController ViewModel Repository Model

APIKITModel layer is tend to be complex. But this OSS can code simply.

MVVM

RAREJOB APP ARCHITECTURE

ReserveView

ReserveViewModel :StateView

Model

TeacherDataStore

TeacherModel

RxSwift

ViewController ViewModel Repository Model

APIKITModel layer is tend to be complex. But us this OSS can code simply.

MVVM

RAREJOB APP ARCHITECTURE

Model layer is tend to be complex. But us this OSS can code simply.Model layer is tend to be complex. But us this OSS can code simply.Each layer is loose coupling. so each component is useful!

~ After Release ~

OK, RELEASE GOOD….

I WANT TO UPDATE AND TESTING MORE!! BUT ONLY HAVE 1 BUILD DEVICE…

IOS ENGINEER, IT’S ME ONLY…

_人人人人人人人人人人人_

> HELP ME!Someone!<

‾Y^Y^Y^Y^Y^Y^Y^Y^Y‾

OK,

ADDITIONAL

bitrise

ADDITIONAL

・What’s Good point?

- Free plan is substantial.

- Setting is simply.

- Can provide TestFairy, and Upload to iTunesConnect Simply using by fastlane.

- Can connect easily Vender Service

- also use android.

ADDITIONAL

ENDING

CONCLUSION

▸ MVVM can explain using by Fracture.

▸ bitrise is so good.

Please do not keep me alone.We now hiring Designer and Engineer. :)

Please keep healthy….

Thank you.